YouTube video analysis and X feed digest pipeline exposed as MCP tools
Project description
mcp-content-pipeline
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.
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.
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 in repo (default: content/videos) |
MCP_CP_CLAUDE_MODEL |
No | Claude model to use (default: claude-sonnet-4-20250514) |
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) |
| Total | ~$11–14/mo | ~$6–8/mo |
Claude API costs depend on your Anthropic billing plan and are separate from the X API and Gemini totals shown above. The X API spending cap can be configured in the developer console.
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
.envfile in the repo — use shell exports or Claude Desktop config instead
Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feat/my-feature) - Commit using Conventional Commits (
feat: add new feature) - Push and open a Pull Request
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_content_pipeline-0.9.1.tar.gz.
File metadata
- Download URL: mcp_content_pipeline-0.9.1.tar.gz
- Upload date:
- Size: 131.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d28a21a9a5610fa519ddd0678ab7f2420400a23ccdddc7de7db99da09108b7b8
|
|
| MD5 |
b8ad66e603e053e9d9d6b84d84bc21cc
|
|
| BLAKE2b-256 |
7e8b7a7f71db39b5db9e9553e1a5863339c95f112577f8d2d46c6d4de3a3ec87
|
Provenance
The following attestation bundles were made for mcp_content_pipeline-0.9.1.tar.gz:
Publisher:
release.yml on berkayildi/mcp-content-pipeline
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_content_pipeline-0.9.1.tar.gz -
Subject digest:
d28a21a9a5610fa519ddd0678ab7f2420400a23ccdddc7de7db99da09108b7b8 - Sigstore transparency entry: 1280639828
- Sigstore integration time:
-
Permalink:
berkayildi/mcp-content-pipeline@97ebccdc5c96eca220a1bc422eda0ac5f9d03e28 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/berkayildi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@97ebccdc5c96eca220a1bc422eda0ac5f9d03e28 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mcp_content_pipeline-0.9.1-py3-none-any.whl.
File metadata
- Download URL: mcp_content_pipeline-0.9.1-py3-none-any.whl
- Upload date:
- Size: 26.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff5fd903f24733622768daea369d0815ba458e67a182c46fe7d4a3def3c492b8
|
|
| MD5 |
05061927ba8e6779554bf246d338e2d1
|
|
| BLAKE2b-256 |
855550820b38754bdc25abc80ae3ab4804b5ea052eb4f4b7ecbd21801f888fca
|
Provenance
The following attestation bundles were made for mcp_content_pipeline-0.9.1-py3-none-any.whl:
Publisher:
release.yml on berkayildi/mcp-content-pipeline
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_content_pipeline-0.9.1-py3-none-any.whl -
Subject digest:
ff5fd903f24733622768daea369d0815ba458e67a182c46fe7d4a3def3c492b8 - Sigstore transparency entry: 1280639830
- Sigstore integration time:
-
Permalink:
berkayildi/mcp-content-pipeline@97ebccdc5c96eca220a1bc422eda0ac5f9d03e28 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/berkayildi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@97ebccdc5c96eca220a1bc422eda0ac5f9d03e28 -
Trigger Event:
push
-
Statement type: