mcp-content-pipeline
A content analysis and digest pipeline for YouTube videos and X (Twitter) feeds, exposed as MCP tools: extract English transcripts, fetch posts from curated accounts, generate TL;DRs and key points, sync to GitHub.
flowchart LR
A[YouTube URL<br/>or X feed] --> B[Extract content<br/>YouTube captions / X API]
B --> C[LLM analysis<br/>TL;DR, key points]
C --> D[Sync to GitHub<br/>markdown]
Quick Start
git clone https://github.com/berkayildi/mcp-content-pipeline.git
cd mcp-content-pipeline
cp .env.example .env # fill in the keys for the tools you use
uv sync
Configuration
All config lives in a local .env (gitignored). On startup the server loads the nearest .env from its working directory upwards; set MCP_CP_ENV_FILE to load one from an explicit path instead. Variables already present in the process environment take precedence over .env.
MCP client
Launch the server from the clone so it picks up .env — the same block works for Claude Desktop, Claude Code (.mcp.json), and other MCP clients:
{
"mcpServers": {
"content-pipeline": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-content-pipeline", "mcp-content-pipeline"]
}
}
}
To run the published package without a clone, use uvx mcp-content-pipeline and point it at your .env:
{
"mcpServers": {
"content-pipeline": {
"command": "uvx",
"args": ["mcp-content-pipeline"],
"env": { "MCP_CP_ENV_FILE": "/path/to/.env" }
}
}
}
Usage
YouTube Analysis
"Use content-pipeline to analyse this video: https://www.youtube.com/watch?v=..." "Sync the analysis to GitHub"
Or all in one prompt:
"Use content-pipeline to analyse this video 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 and sync to GitHub"
Tools
| Tool | Description | Requires |
|---|---|---|
analyse_video |
Analyse a single YouTube video (English captions) — TL;DR and key points | PIPELINE_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 | PIPELINE_API_KEY, X_BEARER_TOKEN |
Environment Variables
All prefixed with MCP_CP_ and set in .env — see .env.example for a ready-to-copy template.
Pipeline driver — required for analyse_video, analyse_x_feed
| Variable | Required | Description |
|---|---|---|
PIPELINE_PROVIDER |
No | anthropic | openai (default: anthropic) |
PIPELINE_API_KEY |
Yes | API key for the selected provider |
PIPELINE_MODEL |
No | Model name valid for the selected provider (default: claude-sonnet-4-6) |
YouTube — transcripts come from public English captions, no key needed
| Variable | Required | Description |
|---|---|---|
MAX_TRANSCRIPT_TOKENS |
No | Default: 100000 |
GitHub — required for sync_to_github
| Variable | Required | Description |
|---|---|---|
GITHUB_TOKEN |
Yes | Personal access token |
GITHUB_REPO |
Yes | Target repo, owner/repo format |
GITHUB_BRANCH |
No | Default: main |
GITHUB_OUTPUT_DIR |
No | Default: content/youtube |
GITHUB_X_OUTPUT_DIR |
No | Default: content/x-digest |
X/Twitter — required for analyse_x_feed
| Variable | Required | Description |
|---|---|---|
X_BEARER_TOKEN |
Yes | X API v2 bearer token |
X_ACCOUNTS |
No | Default usernames, comma-separated — required unless usernames is passed to the tool |
X_TOPICS |
No | Default: AI,tech |
Cost Projections
Estimated monthly costs for two usage patterns:
| Service | Daily (every day) | Weekly X + daily YouTube |
|---|---|---|
| YouTube analysis (LLM API) | ~$3–5/mo (1 video/day) | ~$3–5/mo (1 video/day) |
| X feed digest (LLM API) | ~$2–3/mo | ~$0.50/mo |
| X API reads | ~$4/mo ($0.13/day) | ~$0.60/mo ($0.15/week) |
| Total (excl. LLM API) | ~$4/mo | ~$0.60/mo |
LLM costs are estimated for the default
claude-sonnet-4-6driver and vary withPIPELINE_PROVIDER/PIPELINE_MODEL; they are billed per token by the provider's API (a chat subscription such as Claude Pro does not cover API usage) and are not included in the totals. The X API spending cap can be configured in the developer console.
What this replaces
| Subscription | Monthly cost | What the pipeline covers instead |
|---|---|---|
| X Premium | ~$8/mo | X feed reading via API (~$0.60–4/mo) |
| YouTube Premium | ~$14/mo | Transcript extraction from public captions (free) |
| Total saved | ~$22/mo | Pipeline cost: ~$0.60–4/mo (plus LLM API usage) |
Eval Gate
PRs touching services/, tools/, config.py, server.py, eval/, .eval-gate.yml or pyproject.toml run .github/workflows/eval-gate.yml: mcp-llm-eval scores faithfulness/relevance of 4 Anthropic/OpenAI models against eval/dataset.json and blocks the PR below the thresholds in .eval-gate.yml. Needs ANTHROPIC_API_KEY and OPENAI_API_KEY repo secrets.
Run it locally (keys exported, unprefixed):
uvx --with "mcp<2" --with anthropic --with openai mcp-llm-eval run --config .eval-gate.yml --dataset eval/dataset.json --output-dir eval/results
uvx --with "mcp<2" mcp-llm-eval check --results eval/results/latest_summary.json --config .eval-gate.yml
Metadata
Release files for mcp-content-pipeline 0.15.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mcp_content_pipeline-0.15.0.tar.gz | 132.7 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_content_pipeline-0.15.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 154.0 kB
Release files / mcp_content_pipeline-0.15.0.tar.gz
| Download URL | mcp_content_pipeline-0.15.0.tar.gz |
|---|---|
| Size | 132.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8662726a83d4916d2e8f9e0fc41e4aa907176246f6bab9b4fed5708965f110bb
|
|
BLAKE2b-256 checksum How to use checksums |
4f146179a51283089b09deec2c56218ebe331913ffa07106d917aa69f98ef851
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logRelease files / mcp_content_pipeline-0.15.0-py3-none-any.whl
| Download URL | mcp_content_pipeline-0.15.0-py3-none-any.whl |
|---|---|
| Size | 21.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
52593de7486c3870befd4196e92a4fe9c651cd75635ce0156674109e9bf40cf3
|
|
BLAKE2b-256 checksum How to use checksums |
e3edb3df830b827c213374394a0335c0cd571c124727d4cdd4113eb4d78e8d23
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logSecurity for mcp-content-pipeline 0.15.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for mcp_content_pipeline-0.15.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 24, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.