ReelScribe
io.github.rara-cyberPublished by GitHub account rara-cyberv2.4.0Updated Nov 7, 2026
Transcribe social videos, selected comments, URL batches and Instagram channels.
Overview
ReelScribe transcribes Instagram, TikTok, YouTube and other social videos into text, with optional top-comment extraction, from an AI assistant.
- What you can do
- Submit a single video URL for transcription, optionally including a selection of top comments
- Retrieve a transcript by ID, list your transcriptions with filters, and search by original video URL
- Check whether a URL is supported before spending a credit
- Submit batches of URLs, including lists read from CSV, and scrape paid Instagram channels
- Check credit balance, subscription tier and retention, and page through batch or channel jobs
- When to use it
- Useful when you want transcripts of social videos, or a quick check of what a video says, without leaving the assistant. Also fits workflows that need many videos transcribed at once or a channel's recent reels collected.
- Requirements
- Remote endpoint with OAuth sign-in to a ReelScribe account, or a local npx package configured with a REELSCRIBE_API_KEY. A paid credit balance is needed beyond the 25 free signup credits; each new transcription costs 1 credit.
Installation
In SourceWeft
- Open ReelScribe in the dashboard and add it to a workspace.
- Connect the required credentials. They are stored privately and never shown on public pages.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.github.rara-cyber%2Freelscribe/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.
{
"mcpServers": {
"reelscribe": {
"type": "http",
"url": "https://reelscribe.app/api/mcp"
}
}
}README
ReelScribe MCP Server
An MCP (Model Context Protocol) server that connects AI assistants to ReelScribe — transcribe Instagram Reels, TikTok videos, and YouTube videos directly from Claude, Cursor, Windsurf, and other MCP-compatible clients.
Setup
Hosted connector (Cloudflare Workers)
The endpoint is https://reelscribe.app/api/mcp. Add it as a remote
connector in Claude or as an MCP connection in ChatGPT developer mode, then
sign in to your ReelScribe account and approve access. Directory publication is
a separate review process.
Hosted transcription returns a requestId immediately. Use get_transcription
with that ID to retrieve the transcript after processing; submitting a duplicate
returns the existing transcript. Account administration is available on the website.
Deploying
- Deploy the accompanying ReelScribe API OAuth change, including the Convex
includeRetentionresponse on/admin/get-user-by-clerk-id. - In the production Clerk instance, create and advertise the custom scope
reelscribe:mcp, with consent text explaining permission to read transcripts and credit balance, and submit transcriptions that spend credits. Enable CIMD client onboarding, require S256 PKCE, and set the default scopes toreelscribe:mcp. For expanded workflows register an optional separatereelscribe:managescope, retained under its existing name for compatibility. Its consent text must explain only batch/channel submissions that spend credits. Default scopes arereelscribe:mcp reelscribe:manage; a single-video client may request onlyreelscribe:mcp. Existing connections must explicitly approve the extra transcription permission on reconnect. Keep opaque access tokens enabled. Allow the intended clients to request the custom scope; enable DCR only for clients needing it. - Authenticate Wrangler with permission to deploy Workers in the SIÁN account.
If Wrangler lists multiple accounts, set
CLOUDFLARE_ACCOUNT_IDto that account. - Run
bun run typecheck,bun test,bun run worker:build, thenbun run worker:deploy. - Verify
/health, the public OAuth metadata, an unauthenticated/mcp401 challenge, and the complete sign-in and transcription flow in both clients.
The branded URL is forwarded by the ReelScribe website to the existing Cloudflare
Worker with branded=1, which selects matching OAuth resource metadata.
The original https://reelscribe-mcp.sian-agency.workers.dev/mcp endpoint and its
OAuth discovery remain available for existing connections. The domain is managed
outside Cloudflare, so a direct Worker custom subdomain would require DNS changes.
The Worker holds no shared user API key or Clerk secret. It forwards each
caller's token to ReelScribe's API, which verifies it with Clerk and resolves
only that token's user. The base OAuth scope permits transcript, credit and job reads and single-video
submission. Batch/channel submissions require separately granted reelscribe:manage
consent. Despite its legacy name, this scope grants only transcription submission.
Even existing management grants cannot access downloads, deletion, analytics or settings.
Local stdio setup remains available below.
1. Get an API Key
Sign up at reelscribe.app (25 free credits) and generate an API key from your API settings.
2. Configure Your MCP Client
Add to your MCP client configuration:
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
Claude Code (~/.claude.json or project .mcp.json):
Cursor (Settings > MCP):
Available Tools
| transcribe_bulk | Submit a URL list (including URLs read from CSV); tier limits and 1 credit per new video apply. |
| transcribe_instagram_channel | Paid Instagram channel scraping, 1–50 reels and optional date filter. Can continue a channel with older reels or new posts. |
| list_jobs | Read progress and page through owned batch/channel jobs. |
The nine tools focus on transcription. Downloads, library management, retries,
cancellation, analytics, settings and billing are available in the web app.
Batch and channel submissions require an API key or explicit additional
reelscribe:manage transcription consent; legacy base-only OAuth tokens cannot
perform them. Facebook comments remain unsupported. Since 2.3.0 the tools also accept
Threads, LinkedIn, X and Bluesky links.
Comment extraction
Set includeComments: true on transcribe_video to request a selection of top
comments alongside a new Instagram, TikTok or YouTube transcription. It is off
by default and the total cost remains 1 credit. Pinned and creator comments are
prioritized where available; YouTube does not expose a pinned flag. Facebook
comment extraction is unsupported. This is not a full comment-thread export.
Completed results include a comments array with text, author, likes,
isPinned and isCreator; it is null when no comments were returned.
stats.comments is the video's total comment count, separate from those rows.
Existing matching transcripts are reused as-is, without adding new comments.
Pagination
list_transcriptions returns a page, never a whole library. Pass nextCursor
back as cursor while hasMore is true to walk the rest.
The API does not report a library total, so this server does not invent one:
libraryTotal is a number only when a response provably covers the entire
result set (first page, no further pages), and null otherwise. For a
library-wide figure, get_credits reports library.completedTranscriptions —
itself a bounded count, flagged with library.isCapped when the real number is
higher.
Transcripts in list results are 500-character previews with the full length in
transcriptChars; call get_transcription with an id to read one in full.
Storage and retention
There is no storage quota. Per-tier count limits were retired on 2026-07-31 —
a library is bounded by time instead, and get_credits reports the retention
that applies to the account (unlimited while subscribed, a rolling window
otherwise). Transcriptions created before the policy date are never
auto-deleted.
Supported Platforms
- Instagram — Reels, Posts (
/p/), IGTV (/tv/) - TikTok — Videos, short links (
vm.tiktok.com,vt.tiktok.com) - YouTube — Videos, Shorts, short links (
youtu.be) - Facebook — Videos (
/watch?v=,/videos/), Reels, short links (fb.watch) - Threads — Video posts (
threads.com/threads.net, share links) - LinkedIn — Public video posts (
/posts/,/feed/update/, embed links) - X — Video posts (
x.com/twitter.com,t.co, fxtwitter-style mirrors) - Bluesky — Video posts (
bsky.app/profile/…/post/…)
Example Usage
"Transcribe this TikTok video: https://www.tiktok.com/@user/video/123456"
"Check my credit balance"
"List my completed transcriptions"
"Did I already transcribe this video? https://www.instagram.com/reel/ABC123/"
Pricing
- Free: 25 credits on signup
- Creator: $9.99/mo — 1,000 credits
- Agency: $24.99/mo — 3,000 credits
- Enterprise: $59.99/mo — 10,000 credits
Each transcription costs 1 credit. View pricing
Changelog
2.4.0
list_transcriptionsfilters by Reel BoardtopicandsubTopic, and shows each reel's topic. Only sorted reels have one.ownernow ignores capitals, spaces and@, and matches the handle or the display name.transcribe_instagram_channelcontinues a channel withdirection:olderfor reels you do not have yet,newerfor posts since your latest one.
2.1.0
- Optional
includeCommentsontranscribe_videofor Instagram, TikTok and YouTube, forwarded through the existing API without an extra credit charge. - Typed comment rows in retrieved transcripts; unsupported Facebook requests are rejected before creating a job.
2.0.0
Compatibility with the ReelScribe /v1 API changes of 2026-07-31. 1.0.5 and
earlier report wrong numbers against the current API and should be upgraded.
Breaking:
list_transcriptionsno longer reportstotal. That field became the length of the page when the endpoint went cursor-paginated, so 1.0.5 answered "how many transcriptions do I have?" with the page size — 100 for a library of 2,000 — and nothing in the response revealed it. Replaced byreturned(this page),libraryTotal(a number only when the response covers everything, otherwisenull),hasMoreandnextCursor.list_transcriptionsreturns 500-character transcript previews plustranscriptChars, not full transcript text. Useget_transcriptionfor the full text.get_creditsno longer reportsstorage.limit. Per-tier storage caps were retired; the API now returns-1("no limit") for every tier, which rendered as "unlimited" and hid a real 30-day retention window. Replaced bylibrary.completedTranscriptions/library.isCappedand aretentionblock.
Added:
cursorandlimitparameters onlist_transcriptions(default 20, max 200).- Facebook video and Reel URLs are validated locally, which the API has accepted
all along —
validate_urlandtranscribe_videoused to reject them before a request was made. search_transcriptionsreportsmatchesReturnedand states that its window is bounded, sofound: falseis no longer readable as "never transcribed".
Links
License
MIT
Source: README.md at commit f1d00fc
Tools
0Version history
3- v2.4.0LatestNov 7, 2026
- v2.3.0Oct 26, 2026
- v2.2.1Oct 15, 2026
Score
85% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
- Auth declaredRequired10 pts
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts