Skip to main content

mcp-content-pipeline

PyPI version Downloads License: MIT Python

A content analysis and digest pipeline for YouTube videos and X (Twitter) feeds, exposed as MCP tools. Extract transcripts, fetch posts from curated accounts, and generate key takeaways, TLDRs, social hooks, and comic-book infographics — all callable by any MCP-compatible AI client like Claude Desktop.

flowchart LR
    A[YouTube URL<br/>or X feed] --> B[Extract content<br/>Supadata / X API]
    B --> C[Claude analysis<br/>takeaways, TLDR, hook]
    C --> D[Gemini image<br/>comic infographic]
    D --> E[Sync to GitHub<br/>markdown + image]

Why?

Keeping up with YouTube channels and X accounts means scattered tabs, manual note-taking, and lost insights. This MCP server turns content consumption into structured, chainable tools. Analyse a Bloomberg video, digest your X feed, generate infographics, and sync everything to GitHub — all from a single conversation with Claude.

Role in ecosystem

The eval dataset (eval/dataset.json) lives with this repo because the questions are specific to YouTube and X feed analysis — the dataset belongs with the use case, not the engine.

Quick Start

uvx mcp-content-pipeline

Or install explicitly:

uv tool install mcp-content-pipeline
mcp-content-pipeline

Claude Desktop Configuration

Add to your Claude Desktop MCP config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "content-pipeline": {
      "command": "/usr/local/bin/uvx",
      "args": ["mcp-content-pipeline"],
      "env": {
        "MCP_CP_ANTHROPIC_API_KEY": "sk-ant-...",
        "MCP_CP_SUPADATA_API_KEY": "sd_...",
        "MCP_CP_GITHUB_TOKEN": "ghp_...",
        "MCP_CP_GITHUB_REPO": "your-username/your-repo",
        "MCP_CP_GEMINI_API_KEY": "your-gemini-api-key",
        "MCP_CP_X_BEARER_TOKEN": "your-x-bearer-token",
        "MCP_CP_X_ACCOUNTS": "karpathy,bcherny,atmoio,steipete",
        "MCP_CP_X_TOPICS": "AI,tech,engineering"
      }
    }
  }
}

Usage

Once configured in Claude Desktop, use the tools in a single conversation.

Tip: Including "content-pipeline" for YouTube or "X feed" for Twitter helps Claude Desktop route to the right tool.

YouTube Analysis

"Use content-pipeline to analyse this video: https://www.youtube.com/watch?v=..." "Generate an image for this analysis" "Sync the analysis and image to GitHub"

Or all in one prompt:

"Use content-pipeline to analyse this video, generate the image, and sync to GitHub: https://www.youtube.com/watch?v=..."

X Feed Digest

"Analyse the X feed" "Analyse the X feed for karpathy, bcherny, atmoio, and steipete about AI today" "Analyse the X feed from the last 7 days"

Or with the full pipeline:

"Analyse the X feed, generate the image, and sync to GitHub"

Tools

Tool Description Requires
analyse_video Analyse a single YouTube video — transcript, takeaways, TLDR, social hook ANTHROPIC_API_KEY, SUPADATA_API_KEY
batch_analyse Analyse multiple videos from a URL list or config file ANTHROPIC_API_KEY, SUPADATA_API_KEY
list_channel_videos Fetch recent videos from a YouTube channel YOUTUBE_API_KEY
sync_to_github Push analyses as markdown files to a GitHub repo GITHUB_TOKEN, GITHUB_REPO
analyse_x_feed Analyse recent posts from curated X accounts — daily digest X_BEARER_TOKEN
generate_image Generate comic-book infographic from analysis result GEMINI_API_KEY

Environment Variables

All prefixed with MCP_CP_:

Variable Required Description
MCP_CP_ANTHROPIC_API_KEY Yes Anthropic API key for Claude analysis
MCP_CP_SUPADATA_API_KEY Yes for YouTube Supadata API key for YouTube transcript extraction
MCP_CP_YOUTUBE_API_KEY No YouTube Data API v3 key (only for list_channel_videos)
MCP_CP_GITHUB_TOKEN For sync GitHub personal access token
MCP_CP_GITHUB_REPO For sync Target repo in owner/repo format
MCP_CP_GITHUB_BRANCH No Branch to push to (default: main)
MCP_CP_GITHUB_OUTPUT_DIR No Output directory for YouTube analyses (default: content/youtube)
MCP_CP_GITHUB_X_OUTPUT_DIR No Output directory for X digests (default: content/x-digest)
MCP_CP_IMAGE_OUTPUT_DIR No Directory for generated images (default: ~/Downloads)
MCP_CP_CLAUDE_MODEL No Claude model to use (default: claude-sonnet-4-6)
MCP_CP_MAX_TRANSCRIPT_TOKENS No Max transcript length in tokens (default: 100000)
MCP_CP_GEMINI_API_KEY For image Google AI Studio API key for image generation
MCP_CP_GEMINI_MODEL No Gemini model for images (default: gemini-3.1-flash-image-preview)
MCP_CP_X_BEARER_TOKEN For X digest X API v2 bearer token
MCP_CP_X_ACCOUNTS For X digest Comma-separated X usernames
MCP_CP_X_TOPICS No Comma-separated topics (default: AI,tech)

Cost Projections

Estimated monthly costs for two usage patterns:

Service Daily (every day) Weekly X + daily YouTube
YouTube analysis (Claude API) ~$3–5/mo (1 video/day) ~$3–5/mo (1 video/day)
X feed digest (Claude API) ~$2–3/mo ~$0.50/mo
Image generation (Gemini API) ~$2/mo ($0.067/image) ~$2/mo ($0.067/image)
X API reads ~$4/mo ($0.13/day) ~$0.60/mo ($0.15/week)
Supadata transcript API ~$0 (free tier: 100/mo) ~$0 (free tier: 100/mo)
Total (excl. Claude API) ~$6–9/mo ~$3–5/mo

Claude API costs depend on your Anthropic billing plan and are not included in the totals above. If you already use Claude Pro ($20/mo), there is no additional Claude cost. The X API spending cap can be configured in the developer console.

What this replaces

Subscription Monthly cost What the pipeline covers instead
Google One AI Premium ~$20/mo Image generation via Gemini API (~$2/mo)
X Premium ~$8/mo X feed reading via API (~$0.60–4/mo)
YouTube Premium ~$14/mo Transcript extraction via Supadata (free tier)
Total saved ~$42/mo Pipeline cost: ~$3–9/mo (plus your existing Claude plan)

Eval Gates

Prompt and model changes are automatically evaluated in CI using mcp-llm-eval. The eval dataset covers both YouTube analysis and X feed digest prompts, benchmarking 8 models (Claude Opus 4.7, Claude Sonnet 4.6, Claude Haiku 4.5, GPT-5.5, GPT-4o-mini, Gemini 3 Flash Preview, Gemini 2.5 Flash, Gemini 2.5 Flash-Lite) on the same test cases. PRs that touch system prompts or model config trigger an evaluation run that scores faithfulness and relevance against a reference dataset. The PR is blocked if quality regresses below configured thresholds.

See .eval-gate.yml for threshold configuration and eval/dataset.json for the test dataset.

Running benchmarks locally

The benchmark requires API keys for all providers. Create a .env file in the project root:

ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...
GOOGLE_API_KEY=AIza...

Then run:

make benchmark        # Run eval against all 8 models
make benchmark-copy   # Copy results to llm-benchmarks repo

Results are written to eval/results/ (gitignored). The benchmark output feeds into LLMShot via the llm-benchmarks repo at text-generation/content-pipeline-summary.json and text-generation/content-pipeline-benchmark.json.

This project uses mcp-llm-eval for benchmarking and CI quality gates. Production uses Claude Sonnet (claude-sonnet-4-6). The benchmark tracks all 8 models (3 Anthropic, 2 OpenAI, 3 Google) so we can re-evaluate provider choice as capabilities and pricing evolve.

Development

git clone https://github.com/your-username/mcp-content-pipeline.git
cd mcp-content-pipeline
uv sync
uv run pytest -v --cov=src/mcp_content_pipeline
uv run ruff check src/ tests/

Security

  • All credentials are configured via local environment variables — never committed to the repo
  • The tool is open source but your API keys, YouTube key, and GitHub token stay on your machine
  • Never create a .env file in the repo — use shell exports or Claude Desktop config instead

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feat/my-feature)
  3. Commit using Conventional Commits (feat: add new feature)
  4. Push and open a Pull Request

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_content_pipeline-0.14.1.tar.gz (147.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_content_pipeline-0.14.1-py3-none-any.whl (28.8 kB view details)

Uploaded Python 3

File details

Details for the file mcp_content_pipeline-0.14.1.tar.gz.

File metadata

  • Download URL: mcp_content_pipeline-0.14.1.tar.gz
  • Upload date:
  • Size: 147.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mcp_content_pipeline-0.14.1.tar.gz
Algorithm Hash digest
SHA256 fad8e0f0eddce06da7c6cfbbb37ce849aae132d6c9ec6e4c054245eb8a93bf79
MD5 12c6e0e191fb18cb90c2370069d4b565
BLAKE2b-256 2c42d4d42434ec42231914b248bdd11c4bbd2c35317fead90e8f84c9075b5069

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_content_pipeline-0.14.1.tar.gz:

Publisher: release.yml on berkayildi/mcp-content-pipeline

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcp_content_pipeline-0.14.1-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_content_pipeline-0.14.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e3a3b741bcd9955e7391d40cd2ec4725b5b074e0b52f330bc4313575effdf68d
MD5 5a8f9bfc86ca27f12ab286f44377fed6
BLAKE2b-256 c88b4a717bace1439d6eec72f806aa6f5e8617a979d4adc4cfdaa703ff885e03

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_content_pipeline-0.14.1-py3-none-any.whl:

Publisher: release.yml on berkayildi/mcp-content-pipeline

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.14.1 This release

2 files

0.14.0

2 files

0.13.0

2 files

0.12.3

2 files

0.12.2

2 files

0.12.1

2 files

0.12.0

2 files

0.11.0

2 files

0.10.0

2 files

0.9.2

2 files

0.9.1

2 files

0.9.0

2 files

0.8.1

2 files

0.8.0

2 files

0.7.0

2 files

0.6.0

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.2

2 files

0.3.1

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page