MCP YouTube Transcript
An MCP server retrieving transcripts of YouTube videos
作者による説明(英語の原文)
Draft, revise and review LinkedIn posts; a human approves each one before it goes live.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
ウェブ、デスクトップ、モバイルのClaudeで使えます:
https://linkedin-mcp.theona.app/mcpターミナルでこれを実行します
claude mcp add --transport http linkedin-content-planner https://linkedin-mcp.theona.app/mcpプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"linkedin-content-planner": {
"url": "https://linkedin-mcp.theona.app/mcp"
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"linkedin-content-planner": {
"type": "http",
"url": "https://linkedin-mcp.theona.app/mcp"
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
ChatGPTがつなげるのは、インターネット上のサーバーだけです:
https://linkedin-mcp.theona.app/mcpメニューの名前は、プランや時期によって少し違うことがあります。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
このサーバーのツール一覧はまだ読み取っていません。エンドポイントは順番にチェックしています。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名はドメイン theona.app で確認済みです(レジストリがドメインの所有を確認しています)
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントをチェックするときにツール一覧を読み取ります
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
作者のクラウドで動きます。インストール不要でインターネット経由でつながりますが、送った内容は作者のサーバーを通ります。
GitHubリポジトリの最終更新は–、最新バージョン(0.1.0)がレジストリに届いたのは2 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。
同じカテゴリには:MCP YouTube Transcript, Google Analytics MCP, BibiGPT YouTube Video Summarizer
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
An MCP server retrieving transcripts of YouTube videos
GA4 MCP server for AI agents: schema discovery, server-side aggregation, analysis-ready defaults.
AI video summarizer: summarize and transcribe YouTube, Bilibili, TikTok and podcast videos.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
A LinkedIn content pipeline built for AI agents, not humans typing into a text box. Your agent (Claude Code, Claude Desktop, or any MCP-compatible client, on whatever schedule you run it — cron, an agent loop, a chat session) drafts, formats, and moves posts through a review pipeline by calling MCP tools directly: create_post, update_post_content, submit_review, and more. A human just reviews, comments, and approves/requests changes from the web UI before anything goes live — the same shape as reviewing a PR before merge, not manually operating a scheduling tool.
Multi-tenant and OAuth-secured out of the box: agents authenticate against the planner's own OAuth 2.1 authorization server (PKCE, dynamic client registration) and every MCP call is scoped to the caller's workspace.
See PLAN.md and ARCHITECTURE.md for the full design.
Requirements: Node 20+, pnpm, a Postgres 16 instance (via infra/docker-compose.yml or a local install).
# 1. Start Postgres
docker compose -f infra/docker-compose.yml up -d
pnpm install
cp apps/server/.env.example apps/server/.env
pnpm --filter @linkedin-planner/db generate DATABASE_URL=postgres://linkedin_planner:linkedin_planner@localhost:5432/linkedin_planner_dev pnpm --filter @linkedin-planner/db migrate DATABASE_URL=postgres://linkedin_planner:linkedin_planner@localhost:5432/linkedin_planner_dev pnpm --filter @linkedin-planner/db seed
pnpm dev:server
Posts: create_post, list_posts, get_post, update_post_content, str_replace_post_content, set_post_state, set_post_date, delete_post. Versions: list_versions, get_version_diff, revert_to_version. Review: submit_review, list_reviews. Comments: add_comment, list_comments, resolve_comment. Attachments: prepare_attachment_upload, attach_file, list_attachments. Preview: render_preview. Webhooks (subscribe to post lifecycle events): create_webhook, list_webhooks, update_webhook, delete_webhook, list_webhook_deliveries. Full tool schemas are served at the /mcp endpoint itself; see PLAN.md for the design rationale behind each.
attach_file takes base64 inline, which is only practical for small files: a 160 KB image is ~217,000 base64 characters, more context than most agents can spend and more than any of them can retype without a silent corruption. Anything larger goes through a ticket instead:
prepare_attachment_upload(postId, filename, mimeType)
-> { uploadUrl, method: "PUT", expiresAt, maxBytes }
curl -T ./carousel.pdf ' ' # bytes never enter the conversation list_attachments(postId) # confirm it landed
The URL embeds an HMAC-signed ticket scoped to that one post, valid 15 minutes, and rejected afterwards. Both paths converge on the same attachFile service, so the 25 MB per-file and 250 MB per-workspace caps apply identically. Set ATTACHMENT_UPLOAD_SECRET when running more than one instance — unset, each process signs with its own random key and a ticket minted by one instance will not verify on another.
Some MCP clients cannot run the OAuth flow — an Apify Standby Actor, for one, whose Authorization header already carries the caller's Apify token. For those, a signed-in user creates a long-lived access key on the Connect page (/connect?label=Apify prefills the form) and the client sends it as Authorization: Bearer planner_mcp_….
A key opens /mcp for one workspace as the user who created it, and /mcp still re-checks that membership on every request. Only the key's sha256 is stored, so it is shown once and can only be revoked afterwards. When the key store cannot be reached, /mcp answers 503 rather than 401, so a client holding a working key is not told to replace it.
Two unauthenticated documents let a client — or an MCP registry — learn what this server is and how to authenticate before it holds any credential:
| Path | What it says |
|---|---|
/.well-known/mcp.json | Server card: name, description, version, source repo, and the streamable-http endpoint at /mcp. Shaped to the MCP registry's server.json schema, so the bytes served here are the bytes submitted when publishing to a registry. The auth scheme rides in _meta under the registry's reverse-DNS key, since server.json has no first-class field for it. |
/.well-known/oauth-protected-resource/mcp | RFC 9728 Protected Resource Metadata: the resource identifier, the authorization server, and the single planner:agents scope. This is what /mcp's 401 WWW-Authenticate header points at, and it stays authoritative — the card only signposts it. |
The card is served in every configuration; with AUTH_ENABLED unset it advertises authorization: { type: "none" } and the PRM is not registered at all, because the OAuth authorization server it would name is not mounted either. Both documents are built from APP_PUBLIC_BASE_URL, the same value the token check validates aud against.
The server's name and version live in apps/server/src/mcp/identity.ts and feed both the card and the serverInfo block of the MCP initialize response, so a registry listing cannot drift from what a connected client sees.
Listed in the official MCP registry as app.theona/linkedin-content-planner. The namespace is the reverse DNS of theona.app and is proved by an Ed25519 TXT record on that domain's apex; the private half is MCP_REGISTRY_DNS_KEY and exists nowhere else. Rotation is one new key pair, one edited TXT record, one replaced secret — which is why the key needs no escrow and why any doubt about it should be answered by rotating rather than investigating.
It is an *environment* secret on mcp-registry, not a repository secret. A repository secret is readable by any workflow that anyone with write access adds; this one is released only to a job that names the environment and clears its rules — a required reviewer, and deployments restricted to v* tags. So pushing a tag does not publish: it opens a run that waits for a human.
Releasing is pushing a v tag once the new version is deployed. The Publish to MCP Registry workflow fetches /.well-known/mcp.json from production and submits those bytes; nothing in this repository restates the card, so there is no second copy to drift. The order matters and the workflow enforces it: a tag whose version does not match what the deployed server reports fails the run rather than publishing the previous release's card under the new version's name. Deploy, then tag.
apps/server — REST API + MCP server (Streamable HTTP at /mcp), same process, same core logic.apps/web — React UI: backlog, calendar, post review.packages/core — domain types and service layer shared by REST and MCP.packages/formatting — markdown-subset ⇄ LinkedIn Unicode formatting.packages/db — Drizzle ORM schema and migrations.PolyForm Noncommercial License 1.0.0. Source-available, not OSI open source: free to use, modify, and self-host for any noncommercial purpose; any commercial or paid use requires a separate license from Theona, Inc.