Skip to main content
Glama
teamsincetoday

Podcast Commerce Intelligence MCP

Podcast Commerce Intelligence MCP

npm License: MIT Stars

Turn podcast transcripts into affiliate revenue. Give any episode transcript to an AI agent — get back every product mentioned, who said it, how strongly they recommended it, and which affiliate network carries it. F1=100% on eval suite. Free tier: 200 calls/day.

If this saves you time, please star the repo — it helps other developers find it.

Live endpoint: https://podcast-commerce-mcp.sincetoday.workers.dev/mcp · See examples

Extract product mentions, sponsor segments, and product trends from podcast transcripts. Built on x402, the open payment standard backed by Shopify, Google, Microsoft, Visa, and the Linux Foundation.

Tools

Tool

Description

extract_podcast_products

Extract products/brands from a transcript with confidence scores

analyze_episode_sponsors

Identify sponsor segments and estimate read-through rates

track_product_trends

Compare product mentions across multiple episodes

compare_products_across_shows

Cross-show product ranking with entity resolution across multiple shows

generate_show_notes_section

Format extracted products as a shoppable show notes section

Quick Start

# Install
npm install podcast-commerce-mcp

# Configure
cp .env.example .env
# Edit .env: set OPENAI_API_KEY

# Run (stdio MCP server)
npx podcast-commerce-mcp

Connect in Claude Code — No Install Required

Add to your claude_desktop_config.json or use /add-mcp in Claude Code. Free tier: 200 calls/day, no API key needed:

{
  "mcpServers": {
    "podcast-commerce": {
      "url": "https://podcast-commerce-mcp.sincetoday.workers.dev/mcp"
    }
  }
}

MCP Client Config (local/stdio)

{
  "mcpServers": {
    "podcast-commerce": {
      "command": "npx",
      "args": ["podcast-commerce-mcp"],
      "env": {
        "OPENAI_API_KEY": "sk-..."
      }
    }
  }
}

Tool Reference

extract_podcast_products

{
  "transcript": "Raw text or URL to a .txt file",
  "episode_id": "optional-cache-key",
  "category_filter": ["saas", "physical_goods"],
  "api_key": "optional-paid-key"
}

Returns:

{
  "episode_id": "...",
  "products": [
    {
      "name": "Notion",
      "category": "saas",
      "mention_context": "I use Notion every day...",
      "speaker": "Host",
      "confidence": 0.9,
      "recommendation_strength": "strong",
      "affiliate_link": null,
      "mention_count": 2
    }
  ],
  "sponsor_segments": [...],
  "_meta": { "processing_time_ms": 1200, "ai_cost_usd": 0.001, "cache_hit": false }
}

analyze_episode_sponsors

{
  "transcript": "...",
  "episode_id": "optional",
  "api_key": "optional"
}
{
  "episode_ids": ["ep1", "ep2", "ep3"],
  "category_filter": ["saas"]
}

Requires episodes to be previously extracted and cached. Returns trends[] with brand, trend (rising/stable/falling), avg_recommendation_strength, and top_category.

compare_products_across_shows

{
  "show_ids": ["show-a", "show-b"],
  "min_show_count": 2,
  "min_confidence": 0.85
}

Ranks products by how many shows mention them. Returns products[] with brand, show_count, avg_confidence, recommendation_consensus (unanimous/majority/mixed/rare).

generate_show_notes_section

{
  "episode_id": "previously-extracted-id",
  "format": "markdown",
  "style": "full"
}

Formats cached product data as a shoppable show notes block. Returns a formatted string ready to paste into episode notes.

Example Output

Real extraction from a Huberman Lab episode transcript (live eval: F1=89%, 96/100 score, $0.00046/call, 8100ms):

{
  "episode_id": "huberman-ep-312",
  "products": [
    {
      "name": "AG1 (Athletic Greens)",
      "brand": "AG1",
      "category": "supplement",
      "mention_context": "today's episode is brought to you by AG1. I've been taking it every morning for six months",
      "confidence": 0.97,
      "recommendation_strength": "strong"
    },
    {
      "name": "Oura Ring",
      "category": "physical_goods",
      "mention_context": "I've been wearing it for sleep tracking for two years. They're not a sponsor, just a genuine rec",
      "confidence": 0.95,
      "recommendation_strength": "strong"
    }
  ],
  "sponsor_segments": [
    {
      "sponsor_name": "AG1",
      "read_type": "host_read",
      "estimated_read_through": 0.72,
      "call_to_action": "code HUBERMAN for a free year's supply of Vitamin D"
    }
  ]
}

See /examples endpoint for full output with value narrative: https://podcast-commerce-mcp.sincetoday.workers.dev/examples

Pricing

  • Free tier: 200 calls/day per agent (no API key required)

  • Paid: $0.01/call — set MCP_API_KEYS with valid keys

Environment Variables

Variable

Required

Default

Description

OPENAI_API_KEY

Yes

OpenAI API key

AGENT_ID

No

anonymous

Agent identifier for rate limiting

MCP_API_KEYS

No

Comma-separated paid API keys

CACHE_DIR

No

./data/cache.db

SQLite cache path

PAYMENT_ENABLED

No

false

Set true to enforce limits

Development

npm install
npm run typecheck   # Zero type errors
npm test            # All tests pass
npm run build       # Compile to dist/

License

MIT — Since Today Studio

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/teamsincetoday/podcast-commerce-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server