One widget.
Two ways to make it pay.
Storyflo is a hosted audio brief for any article on the open web — read by one of four named voices, with an audio-native sponsor slot underneath. Advertisers buy the slot. Publishers embed the widget and take a share of every linkout. The two flows are below.
What it looks like
Three variants of the same widget, rendered with the production components. Host badge on top. Audio player in the middle. Sponsor slot — or the default Powered-by-storyflo footer — underneath.
CPI prints hot, two-year yield jumps eight basis points, Fed cut odds slip below 40%
Mason·storyfloThe week's three policy stories everyone else is under-reporting
Riley·storyfloOne sponsor slot. Four hosts. A real audience.
Storyflo runs four named hosts — Theo on tech, Mason on the markets, Riley on the day, and Iris on health. Each owns a vertical. Listeners follow people, not algorithms — the same dynamic that drives Apple Podcasts and Spotify Studios shows.
Today storyflo serves thirteen verified real listeners across thirty-four vertical podcast feeds, plus the Apple Podcasts and Spotify directory presence the feeds carry. Small, transparent baseline — we publish it on the admin distribution panel because we’d rather you trust the number than oversell it. The curve is the asset; the curve is heading up.
What you buy
- An audio-native sponsor slot. Renders directly below the player on every embed. Not display. Not programmatic pre-roll. Not a pop-up. A linkout the listener sees while they’re still in the brief.
- A host-anchored audience. Sponsor under Theo and you’re paired with tech listeners. Under Mason and you’re paired with markets listeners. The host is the audience filter.
- Counsel-cleared framing for event-contract markets. Kalshi and Polymarket data is used as input to the briefs (price velocity, implied probability, what the market moved on) — not as a bet referral. The sponsor slot is a standard affiliate linkout, not gaming inventory.
Sample rate card
Placeholder ranges; final pricing negotiated per partner. Email us before you build a media plan.
| Buy | Surface | Range |
|---|---|---|
| Host-read sponsor mention | Inline in a brief | CPM — negotiated |
| Sponsored vertical (full month) | Default sponsor slot on every embed for a vertical | Flat — by vertical |
| Custom integration | Branded brief, host crossover, market-data passthrough | Scoped to the build |
How we count, what we model, what compounds.
Storyflo's reach is the same brief landing on every surface the buyer touches. We don't quote a single MAU; we quote four layers that compound. Sponsors get the live number on today's surfaces and the modeled number on tomorrow's.
storyflo-mcp on ChatGPT GPT Store (800M weekly) + Claude Connectors + Cursor + VS Code + Perplexity. Nobody else has this surface.We don't claim 1M MAU. We claim today's reality plus tomorrow's model plus the compounding mechanic. Every embedder we sign multiplies Layer 3 linearly. Every agent surface we ship onto multiplies Layer 4 linearly. The same ?ref=<your-slug> token threads through audio · embed · voice · agent for the affiliate split.
One widget. Three places it pays.
Same script tag, same ?ref=<your-slug> attribution token — three distinct surfaces and three revenue rails. Publishers earn on article-page placements, authors earn on inline newsletter embeds, and anyone with a platform earns on agent-driven distribution.
Media sites + sports verticals
Daily Mail, Barron's, NHL.com, CNBC, Bleacher Report. Drop the tag into your article template — Mason on macro, Riley on sports, Theo on tech. Sponsor slot carries the affiliate cascade.
- One
<script>in the article template - Auto-renders the persona that owns the vertical
- Revenue share on every sponsor linkout click
- Zero overlap with your Prebid / GAM / AdSense stack
Newsletter writers + Substacks
Marc Rubinstein, Byrne Hobart, Packy McCormick, Nathan Lambert. Your reader gets an audio companion on every issue — your byline stays on it, your ?ref token earns on every sponsor click.
- Inline embed in Substack / Beehiiv / Ghost issues
- Audio companion in the same voice as the persona brief
- Sourcing credit back to your newsletter on every play
- Same 60/40 split as the publisher tier (operator-locked)
Anyone with a platform or agent surface
ChatGPT GPT Store, Claude Connectors, Cursor + VS Code MCP catalogs, Perplexity Publisher Program, Discord bots, Telegram channels. Storyflo's MCP server is your attribution rail — every tool call routes the affiliate split back via your ?ref.
- MCP HTTP/SSE wrapper at
api.storyflo.com/v1/mcp/sse - npm
storyflo-mcpstdio bridge for any agent - OAuth 2.1 + PKCE — client identity threads to the affiliate ledger
- Same 60/40 split; per-row override on request
All three rails settle into the same Phase 3 syndication portal — admin dashboard at /admin/embedders, attribution rollup via the Dub × Polymarket webhook, counsel-cleared markets-as-INPUT posture across every surface.
storyflo-mcp · the signal layer Polymarket and Kalshi don't ship.
If you're building a Polymarket / Kalshi / IBKR ForecastTrader bot, you have the raw event-contract odds. What you don't have is a structured way to answer "why is this market moving right now, and which articles is the consensus reading?"Storyflo's free MCP server exposes Mason's macro brief, Theo on tech, Riley on sports, and the matched-market metadata as 8 typed tool calls.
Counter-consensus scoring
get_market_linked_stories(market_slug) returns the cited journalism + signal-tags so you can flag positions where the consensus is slow to catch up to the news.
Mason's brief as a trade gate
get_vertical_briefing(vertical="finance") on a Fed/CPI/jobs print. Gate your Kalshi entry logic on signal_tags like genuine_uncertainty vs consensus_shifting.
Cron-style alpha report
digest(verticals=["finance","crypto"]) grouped by matched Kalshi / Polymarket contract. Pipe into Slack / Discord / Telegram.
Free; OAuth optional. Counsel-cleared posture: storyflo cites event-contract probabilities as journalist input, never as buy-now output — your bot stays compliant with Polymarket / Kalshi terms.
One script tag. Audio on every article. Revenue share.
Drop one tag into your article template. The widget mounts on page, transcodes the article on first request, and renders the audio brief — read by the host that owns your vertical. Your existing display and header-bidding stack is untouched.
The tag
<script
src="https://storyflo.com/embed/v1.js"
data-publisher="your-slug"
async
></script>The widget mounts in your article surface — wherever you place the empty <div data-storyflo-embed> anchor — and does not compete with your display, native, or header-bidding inventory. There is no overlap with Prebid, GAM, or AdSense.
How you get paid
- Revenue share on sponsor linkouts. Every embed carries a
?ref=<your-slug>attribution token. When a listener clicks the sponsor (e.g. Polymarket), the affiliate split flows back to your publisher account. - Free to embed. No setup fee. No minimum traffic. Storyflo takes a small share of the linkout revenue; the rest is yours.
- Engagement uplift, not cannibalization. Audio sessions on the widget are net-new dwell time. The listener stays on your page longer — and the host-anchored voice converts listening into subscribing and sharing.
How attribution works
- Embedder token. Every linkout from the sponsor slot carries
?ref=<publisher-slug>so the affiliate network can attribute the click back to your account. - postMessage events. The widget emits
storyflo:play,storyflo:complete, andstoryflo:sponsor_clickto the host window so you can pipe engagement into your own analytics. - IAB TCF v2.2 passthrough. EU listener consent is read from your CMP via the standard TCF v2.2 API. We do not collect personal data on EU listeners without a TC string from your CMP.
- No first-party cookie without consent. Anonymous play counters only, by default. First-party cookies are set only when the host page’s CMP signals consent.
What we do not do
The widget is non-friction by design. Specifically:
- We do not run third-party VAST audio, AdSense, GAM, or any programmatic fill inside the embed.
- We do not compete with your display, native, or header-bidding inventory.
- We do not collect listener PII without explicit consent.
- We do not track listeners across sites without TCF v2.2 passthrough.
- We do not insert ads inside the audio itself. The sponsor slot is a text-and-link surface below the player, not pre-roll.
FAQ
No. The widget mounts in its own anchor element and never bids on display inventory. There is no overlap with Prebid.js, GAM, or AdSense — the storyflo surface is the audio player and the sponsor slot beneath it, nothing else.
Audio sessions extend dwell time on the host page (the listener stays on the article while they listen). The host-anchored voice — same person on tech every morning, same person on the markets at the close — is what converts a one-off listener into a returning one. Parasocial loop is the moat.
Each embed carries ?ref=<your-slug> on every sponsor linkout. The affiliate network attributes the click to your publisher account, the network pays out, and storyflo retains a small share. Splits are negotiated per partner — email us for the current numbers.
Publisher opt-in for sportsbook-category sponsors is OFF by default. You explicitly enable the categories you want. If you only want event-contract markets (Kalshi, Polymarket), you can run with just those — sportsbooks will never appear on your embeds unless you turn the category on.
Yes. Per-embed sponsor overrides via ?sponsor= / ?sponsor_url= query params on the widget tag. House sponsor, partner sponsor, or none at all — your call, per embed.
No. The sponsor slot is a text linkout below the player. The audio is the brief, full stop. We won't insert pre-roll, mid-roll, or programmatic VAST without an explicit operator decision and a separate signed agreement.
IAB TCF v2.2 passthrough. We read the host page's CMP and respect the consent string. No first-party cookie is set, and no first-party analytics fires, until the CMP signals consent for our purposes.
Next step
If you want to sponsor a vertical, embed the widget, or just ask a question — email ops@storyflo.com. One inbox. A human reads it.
