Update to transcribe.so
Snapshot Nov 7, 2026 · 12:59 UTC · version 1.8.0
Collection source: downloaded plugin package.
Instructions updated for transcribe-audio
Full description — Now says: Loom, public TikTok, X and Facebook video posts),
Observed in instructions or declared skills. Runtime behavior has not been tested.
Up to 3 plugins free · no card required.
All fields and original values.
Full description
Oct 24, 2026 · 13:41 UTC
Loom),
Nov 7, 2026 · 12:59 UTC
Loom, public TikTok, X and Facebook video posts),
Skill instructions
Oct 24, 2026 · 13:41 UTC
Loom), direct file URL, or local file upload into speaker-labelled, timestamped segments with chapters, sections, and cited Q&A. Use when the user wants a transcript, show notes, chapters, or analysis of any recording. SoundCloud, Vime...
Nov 7, 2026 · 12:59 UTC
Loom, public TikTok, X and Facebook video posts), direct file URL, or local file upload into speaker-labelled, timestamped segments with chapters, sections, and cited Q&A. Use when the user wants a transcript, show notes, chapters, or an...
Compare saved observations
Download comparison JSONSKILL.md text changes
− removed · + added
--- before +++ after @@ -1,6 +1,6 @@ --- name: transcribe-audio -description: Transcribe audio or video from a YouTube URL, platform URL (Apple Podcasts, SoundCloud, Vimeo, Twitch, Loom), direct file URL, or local file upload into speaker-labelled, timestamped segments with chapters, sections, and cited Q&A. Use when the user wants a transcript, show notes, chapters, or analysis of any recording. +description: Transcribe audio or video from a YouTube URL, platform URL (Apple Podcasts, SoundCloud, Vimeo, Twitch, Loom, public TikTok, X and Facebook video posts), direct file URL, or local file upload into speaker-labelled, timestamped segments with chapters, sections, and cited Q&A. Use when the user wants a transcript, show notes, chapters, or analysis of any recording. --- # Transcribe audio or video @@ -12,7 +12,8 @@ - `youtube`: a YouTube video URL - `platform_url`: a public page URL on a supported platform (Apple Podcasts, - SoundCloud, Vimeo, Twitch, Loom and similar) + SoundCloud, Vimeo, Twitch, Loom and similar, plus public TikTok, X and + Facebook video posts) - `external_url`: a direct http(s) link to an audio or video file - `upload`: a local file (shell agents only): call `createUpload` for a presigned PUT URL (15 minute TTL), PUT the bytes, then pass the returned `upload_id` together
Full technical diff · 2 changed fields
changed /description
"Transcribe audio or video from a YouTube URL, platform URL (Apple Podcasts, SoundCloud, Vimeo, Twitch, Loom), direct file URL, or local file upload into speaker-labelled, timestamped segments with chapters, sections, and cited Q&A. Use when the user wants a transcript, show notes, chapters, or analysis of any recording."
"Transcribe audio or video from a YouTube URL, platform URL (Apple Podcasts, SoundCloud, Vimeo, Twitch, Loom, public TikTok, X and Facebook video posts), direct file URL, or local file upload into speaker-labelled, timestamped segments with chapters, sections, and cited Q&A. Use when the user wants a transcript, show notes, chapters, or analysis of any recording."
changed /skill_md_contents
"---\nname: transcribe-audio\ndescription: Transcribe audio or video from a YouTube URL, platform URL (Apple Podcasts, SoundCloud, Vimeo, Twitch, Loom), direct file URL, or local file upload into speaker-labelled, timestamped segments with chapters, sections, and cited Q&A. Use when the user wants a transcript, show notes, chapters, or analysis of any recording.\n---\n\n# Transcribe audio or video\n\nThe bundled `transcribe-so` MCP server turns recordings into speaker-labelled,\ntimestamped transcripts with automatic chapters, sections, and cited Q&A.\n\n## Sources\n\n- `youtube`: a YouTube video URL\n- `platform_url`: a public page URL on a supported platform (Apple Podcasts,\n SoundCloud, Vimeo, Twitch, Loom and similar)\n- `external_url`: a direct http(s) link to an audio or video file\n- `upload`: a local file (shell agents only): call `createUpload` for a presigned PUT URL\n (15 minute TTL), PUT the bytes, then pass the returned `upload_id` together\n with `duration_seconds`\n\n## Flow\n\n1. Preview before creating a job: call `getQuote` first. It starts nothing;\n it returns the length, the detected title and what the job would use from\n the user's existing transcribe.so account (`retail_usd`, 0 when the account\n already includes it). When `retail_usd` is 0, or within a limit the user\n already gave, go ahead; otherwise tell the user the figure and wait for a\n go-ahead. Pass the figure the user agreed to as `max_charge_usd` to\n `transcribe`; the server enforces it: if the real figure is higher the call\n is refused with `max_charge_exceeded` and nothing is started. Report the\n refused figure and ask; do not raise the ceiling yourself.\n2. Call `transcribe` with the source. It returns `id` immediately; jobs are\n asynchronous.\n3. For short recordings, long-poll with `waitForTranscription` (each call\n covers ~90 s; `_timed_out: true` means still processing; call it again,\n this is the expected loop, not an error). For long recordings, hand the\n user the dashboard link (https://transcribe.so/transcriptions); they also\n get a completion email.\n4. Retries: pass `idempotency_key`; without one `transcribe` is not idempotent\n (check `listTranscriptions` before retrying a timed-out call). Keep the\n SAME key unless one of the NEW-key cases below applies:\n - SAME key: a retry with the same arguments replays the first result.\n After `queue_full` or a server error (neither is stored under the key),\n wait `retry_after` seconds first. If reading the source took longer than\n 45 seconds, retry the same key once; if that is refused the same way,\n stop and tell the user (for `external_url`, pass `duration_seconds` if\n you know the length). On `not_ready` saying the earlier call is already\n in flight, it is still running and the server ends its preview within\n 45 seconds: keep retrying the same key. A `not_ready` saying the earlier\n request just completed with an error recorded nothing: retry, same key.\n - `not_ready` with `stale: true` (no result recorded after 120 seconds):\n check `listTranscriptions` for the `client_reference` you sent. A job\n there in ANY status counts as found, so do not create another; if it is\n still `quoted` (not started yet), tell the user. Only if none is listed\n use a new key. If you sent no `client_reference`, do not switch keys on\n your own: tell the user.\n - NEW key: refusals are replayed under the key for 24 hours too, so a new\n key is needed only after a refusal you actually received that says\n nothing was started, once its cause is fixed (for example\n `insufficient_funds` or `max_charge_exceeded` after the user resolved\n it, or a corrected input), or in the `stale` case above. Changed\n arguments after such a refusal are a new request and take the new key.\n - Key rejected because the arguments differ, and you never got an answer\n to the first call: it may have gone through. Re-send the SAME key with\n the original arguments to get that result back, or check\n `listTranscriptions` / `getTranscription`, before transcribing again;\n never switch keys just to get past that rejection.\n\nAgents with their own public endpoint can pass `callback_url` to `transcribe`\nto receive a signed `transcription.completed` / `transcription.failed`\nwebhook instead of polling (the per-job HMAC secret comes back as\n`callback.secret`).\n\n## Authentication\n\nThe MCP server authenticates via OAuth 2.0 (browser flow starts automatically\non first use) or a `tsk_live_*` API key from\nhttps://transcribe.so/settings/api-keys sent as the Bearer token.\n\n## Related\n\n- Retrieve results, subtitles, clips, Q&A: see the `get-transcript` skill\n- REST equivalent of everything here: https://transcribe.so/api/v1/openapi.yaml\n- Developer docs: https://transcribe.so/developers/docs\n"
"---\nname: transcribe-audio\ndescription: Transcribe audio or video from a YouTube URL, platform URL (Apple Podcasts, SoundCloud, Vimeo, Twitch, Loom, public TikTok, X and Facebook video posts), direct file URL, or local file upload into speaker-labelled, timestamped segments with chapters, sections, and cited Q&A. Use when the user wants a transcript, show notes, chapters, or analysis of any recording.\n---\n\n# Transcribe audio or video\n\nThe bundled `transcribe-so` MCP server turns recordings into speaker-labelled,\ntimestamped transcripts with automatic chapters, sections, and cited Q&A.\n\n## Sources\n\n- `youtube`: a YouTube video URL\n- `platform_url`: a public page URL on a supported platform (Apple Podcasts,\n SoundCloud, Vimeo, Twitch, Loom and similar, plus public TikTok, X and\n Facebook video posts)\n- `external_url`: a direct http(s) link to an audio or video file\n- `upload`: a local file (shell agents only): call `createUpload` for a presigned PUT URL\n (15 minute TTL), PUT the bytes, then pass the returned `upload_id` together\n with `duration_seconds`\n\n## Flow\n\n1. Preview before creating a job: call `getQuote` first. It starts nothing;\n it returns the length, the detected title and what the job would use from\n the user's existing transcribe.so account (`retail_usd`, 0 when the account\n already includes it). When `retail_usd` is 0, or within a limit the user\n already gave, go ahead; otherwise tell the user the figure and wait for a\n go-ahead. Pass the figure the user agreed to as `max_charge_usd` to\n `transcribe`; the server enforces it: if the real figure is higher the call\n is refused with `max_charge_exceeded` and nothing is started. Report the\n refused figure and ask; do not raise the ceiling yourself.\n2. Call `transcribe` with the source. It returns `id` immediately; jobs are\n asynchronous.\n3. For short recordings, long-poll with `waitForTranscription` (each call\n covers ~90 s; `_timed_out: true` means still processing; call it again,\n this is the expected loop, not an error). For long recordings, hand the\n user the dashboard link (https://transcribe.so/transcriptions); they also\n get a completion email.\n4. Retries: pass `idempotency_key`; without one `transcribe` is not idempotent\n (check `listTranscriptions` before retrying a timed-out call). Keep the\n SAME key unless one of the NEW-key cases below applies:\n - SAME key: a retry with the same arguments replays the first result.\n After `queue_full` or a server error (neither is stored under the key),\n wait `retry_after` seconds first. If reading the source took longer than\n 45 seconds, retry the same key once; if that is refused the same way,\n stop and tell the user (for `external_url`, pass `duration_seconds` if\n you know the length). On `not_ready` saying the earlier call is already\n in flight, it is still running and the server ends its preview within\n 45 seconds: keep retrying the same key. A `not_ready` saying the earlier\n request just completed with an error recorded nothing: retry, same key.\n - `not_ready` with `stale: true` (no result recorded after 120 seconds):\n check `listTranscriptions` for the `client_reference` you sent. A job\n there in ANY status counts as found, so do not create another; if it is\n still `quoted` (not started yet), tell the user. Only if none is listed\n use a new key. If you sent no `client_reference`, do not switch keys on\n your own: tell the user.\n - NEW key: refusals are replayed under the key for 24 hours too, so a new\n key is needed only after a refusal you actually received that says\n nothing was started, once its cause is fixed (for example\n `insufficient_funds` or `max_charge_exceeded` after the user resolved\n it, or a corrected input), or in the `stale` case above. Changed\n arguments after such a refusal are a new request and take the new key.\n - Key rejected because the arguments differ, and you never got an answer\n to the first call: it may have gone through. Re-send the SAME key with\n the original arguments to get that result back, or check\n `listTranscriptions` / `getTranscription`, before transcribing again;\n never switch keys just to get past that rejection.\n\nAgents with their own public endpoint can pass `callback_url` to `transcribe`\nto receive a signed `transcription.completed` / `transcription.failed`\nwebhook instead of polling (the per-job HMAC secret comes back as\n`callback.secret`).\n\n## Authentication\n\nThe MCP server authenticates via OAuth 2.0 (browser flow starts automatically\non first use) or a `tsk_live_*` API key from\nhttps://transcribe.so/settings/api-keys sent as the Bearer token.\n\n## Related\n\n- Retrieve results, subtitles, clips, Q&A: see the `get-transcript` skill\n- REST equivalent of everything here: https://transcribe.so/api/v1/openapi.yaml\n- Developer docs: https://transcribe.so/developers/docs\n"
Full snapshot data
{
"description": "Transcribe audio or video from a YouTube URL, platform URL (Apple Podcasts, SoundCloud, Vimeo, Twitch, Loom, public TikTok, X and Facebook video posts), direct file URL, or local file upload into speaker-labelled, timestamped segments with chapters, sections, and cited Q&A. Use when the user wants a transcript, show notes, chapters, or analysis of any recording.",
"included_files": [],
"name": "transcribe-audio",
"skill_md_contents": "---\nname: transcribe-audio\ndescription: Transcribe audio or video from a YouTube URL, platform URL (Apple Podcasts, SoundCloud, Vimeo, Twitch, Loom, public TikTok, X and Facebook video posts), direct file URL, or local file upload into speaker-labelled, timestamped segments with chapters, sections, and cited Q&A. Use when the user wants a transcript, show notes, chapters, or analysis of any recording.\n---\n\n# Transcribe audio or video\n\nThe bundled `transcribe-so` MCP server turns recordings into speaker-labelled,\ntimestamped transcripts with automatic chapters, sections, and cited Q&A.\n\n## Sources\n\n- `youtube`: a YouTube video URL\n- `platform_url`: a public page URL on a supported platform (Apple Podcasts,\n SoundCloud, Vimeo, Twitch, Loom and similar, plus public TikTok, X and\n Facebook video posts)\n- `external_url`: a direct http(s) link to an audio or video file\n- `upload`: a local file (shell agents only): call `createUpload` for a presigned PUT URL\n (15 minute TTL), PUT the bytes, then pass the returned `upload_id` together\n with `duration_seconds`\n\n## Flow\n\n1. Preview before creating a job: call `getQuote` first. It starts nothing;\n it returns the length, the detected title and what the job would use from\n the user's existing transcribe.so account (`retail_usd`, 0 when the account\n already includes it). When `retail_usd` is 0, or within a limit the user\n already gave, go ahead; otherwise tell the user the figure and wait for a\n go-ahead. Pass the figure the user agreed to as `max_charge_usd` to\n `transcribe`; the server enforces it: if the real figure is higher the call\n is refused with `max_charge_exceeded` and nothing is started. Report the\n refused figure and ask; do not raise the ceiling yourself.\n2. Call `transcribe` with the source. It returns `id` immediately; jobs are\n asynchronous.\n3. For short recordings, long-poll with `waitForTranscription` (each call\n covers ~90 s; `_timed_out: true` means still processing; call it again,\n this is the expected loop, not an error). For long recordings, hand the\n user the dashboard link (https://transcribe.so/transcriptions); they also\n get a completion email.\n4. Retries: pass `idempotency_key`; without one `transcribe` is not idempotent\n (check `listTranscriptions` before retrying a timed-out call). Keep the\n SAME key unless one of the NEW-key cases below applies:\n - SAME key: a retry with the same arguments replays the first result.\n After `queue_full` or a server error (neither is stored under the key),\n wait `retry_after` seconds first. If reading the source took longer than\n 45 seconds, retry the same key once; if that is refused the same way,\n stop and tell the user (for `external_url`, pass `duration_seconds` if\n you know the length). On `not_ready` saying the earlier call is already\n in flight, it is still running and the server ends its preview within\n 45 seconds: keep retrying the same key. A `not_ready` saying the earlier\n request just completed with an error recorded nothing: retry, same key.\n - `not_ready` with `stale: true` (no result recorded after 120 seconds):\n check `listTranscriptions` for the `client_reference` you sent. A job\n there in ANY status counts as found, so do not create another; if it is\n still `quoted` (not started yet), tell the user. Only if none is listed\n use a new key. If you sent no `client_reference`, do not switch keys on\n your own: tell the user.\n - NEW key: refusals are replayed under the key for 24 hours too, so a new\n key is needed only after a refusal you actually received that says\n nothing was started, once its cause is fixed (for example\n `insufficient_funds` or `max_charge_exceeded` after the user resolved\n it, or a corrected input), or in the `stale` case above. Changed\n arguments after such a refusal are a new request and take the new key.\n - Key rejected because the arguments differ, and you never got an answer\n to the first call: it may have gone through. Re-send the SAME key with\n the original arguments to get that result back, or check\n `listTranscriptions` / `getTranscription`, before transcribing again;\n never switch keys just to get past that rejection.\n\nAgents with their own public endpoint can pass `callback_url` to `transcribe`\nto receive a signed `transcription.completed` / `transcription.failed`\nwebhook instead of polling (the per-job HMAC secret comes back as\n`callback.secret`).\n\n## Authentication\n\nThe MCP server authenticates via OAuth 2.0 (browser flow starts automatically\non first use) or a `tsk_live_*` API key from\nhttps://transcribe.so/settings/api-keys sent as the Bearer token.\n\n## Related\n\n- Retrieve results, subtitles, clips, Q&A: see the `get-transcript` skill\n- REST equivalent of everything here: https://transcribe.so/api/v1/openapi.yaml\n- Developer docs: https://transcribe.so/developers/docs\n"
}SHA-256 of public snapshot: 4486084031e53f6c12c294a8a10bddec826333181d6db25b7fa27ce5b88be87e