← transcribe.soCONTENT HISTORY

Update to transcribe.so

Snapshot Oct 24, 2026 · 13:41 UTC · version 1.7.0

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save transcribe.so and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Retrieve a finished transcription from transcribe.so: chapters, sections, cited Q&A, speaker-labelled timestamped segments, word-level timings, subtitle files (SRT/VTT/karaoke), paste-ready timestamps, hosted captioned MP4 clips, and live cited Q&A over one transcription or the whole library. Use when the user asks for a transcript, subtitles, show notes, quotes, clips, or answers grounded in their recordings.",
  "included_files": [],
  "name": "get-transcript",
  "skill_md_contents": "---\nname: get-transcript\ndescription: \"Retrieve a finished transcription from transcribe.so: chapters, sections, cited Q&A, speaker-labelled timestamped segments, word-level timings, subtitle files (SRT/VTT/karaoke), paste-ready timestamps, hosted captioned MP4 clips, and live cited Q&A over one transcription or the whole library. Use when the user asks for a transcript, subtitles, show notes, quotes, clips, or answers grounded in their recordings.\"\n---\n\n# Get a transcript and derived artifacts\n\nAll tools below live on the bundled `transcribe-so` MCP server. They work for\njobs submitted from this plugin, the REST API, or the transcribe.so web app:\nsame library everywhere.\n\n## Reading results\n\n- `getTranscriptionResult`: the main read. `include` defaults to\n  `chapters,sections,qna`; add `segments` (speaker-labelled\n  `{start_seconds, end_seconds, speaker, text}`), `acts`, `posting_chapters`,\n  or `all`. There is no single full-text field: join segments (or sections).\n- `waitForTranscription`: long-poll a running job (~90 s per call;\n  `_timed_out: true` = call again).\n- `search`: keyword search over titles and transcript text across the\n  user's library; `fetch`: one transcription as plain text.\n- `searchSegments`: \"who said X, and when\": each hit is the SEGMENT, with its\n  own speaker label, `start_ms`/`end_ms` and a deep-link `url`. Speaker labels\n  are recording-local and `null` means unknown; never attribute a `null` line.\n- `getTranscript`: the transcript as one text body (`txt` or `md`), built\n  from every segment; the source is never capped. The inline `content` is cut\n  at this tool's response budget: when `truncated` is true it is a prefix and\n  only `download_url` is complete. Use this for full text, not a windowed\n  `segments` read.\n- `getTranscriptionTimestamps`: paste-ready chapter timestamps (formats:\n  youtube, spotify, apple_podcasts, markdown, x, threads, instagram_caption,\n  linkedin, plain; variants: standard, highlights, clips, quoted_sections,\n  show_notes, original). `cta` is opt-in and off by default. `not_ready` with\n  `reason: \"artifact_missing\"` is fixed by ONE `regeneratePostingChapters`\n  call.\n- `getTranscriptionWords`: paginated word-level timings in ms (limit up to\n  2000/page; check `available`; `no_word_timestamps` means sentence-level\n  only). For karaoke captions and overlays, not for reading.\n- `getSubtitles`: SRT / VTT / karaoke VTT / JSON subtitle file (`content`\n  inline up to 60k chars, `download_url` beyond; presets: youtube,\n  tiktok-shorts, instagram-reels, netflix, podcast, broadcast).\n\n## Clips\n\n- `getClipQuote`: preview before rendering. Pass `transcription_id`,\n  `start_seconds` and `end_seconds`; it renders nothing and writes nothing,\n  and returns `charge_usd` (what `renderClip` would use from the user's\n  existing transcribe.so account for that range) plus the normalized range and\n  `clip_seconds`. It runs the same range checks as `renderClip`, so it doubles\n  as a dry run. It does not check what the account can cover or how many\n  clips are already rendering; `renderClip` enforces those when it runs.\n- `renderClip`: hosted captioned MP4 of a 1-60 s range of a completed\n  transcription with word timestamps. A clip always uses the account, so\n  first call `getClipQuote` for the same range, tell the user its\n  `charge_usd` and wait for a go-ahead, unless it is within a limit the user\n  already gave. Pass the agreed figure as `max_charge_usd`. If the real\n  figure is higher the call is refused with `max_charge_exceeded` before\n  anything is held and nothing is rendered: report the figure and ask; do not\n  raise the ceiling yourself.\n  Retries: pass `idempotency_key`; without one `renderClip` is not idempotent\n  (check `getClip` before retrying a timed-out call). Keep the SAME key\n  unless the NEW-key case below applies:\n  - SAME key: a retry with the same arguments replays the first result. A\n    `not_ready` saying a request with this key is already in flight also\n    keeps the same key, and so does one saying the earlier request just\n    completed with an error (nothing was recorded). If the in-flight answer\n    carries `stale: true` (no result recorded after 120 seconds), a clip may\n    already have been rendered and drawn: do not send a new key on your own;\n    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 drawn, once its cause is fixed (for example\n    `max_charge_exceeded` or `insufficient_funds` after the user resolved it,\n    `not_ready` once the transcription has completed, `rate_limited` once\n    clips in flight have finished; check with `getClip`). Changed arguments\n    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 to\n    the first call: it may have gone through. Re-send the SAME key with the\n    original arguments, or check `getClip`, before rendering again; never\n    switch keys just to get past that rejection.\n- `getClip`: pass `wait_seconds` (up to 45) to long-poll; `completed`\n  carries a presigned `mp4_url` valid one hour (call again for a fresh one).\n  Renders take several times the clip length; expect multiple calls.\n\n## Live Q&A (daily allowance)\n\n- `askTranscription` (one transcription) and `askLibrary` (whole library or\n  up to 50 ids) return a markdown `answer` with `[N]` markers plus\n  `citations[]` carrying deep-link `url` + `start_seconds`; render those.\n  Each call takes ~10 s and consumes the account's daily Q&A allowance;\n  `no_answer: true` consumes nothing. Cached pairs from\n  `getTranscriptionResult include=[\"qna\"]` do not consume the allowance; read\n  those first.\n\n## Authentication\n\nOAuth 2.0 (automatic browser flow) or a `tsk_live_*` API key as Bearer.\nGuide: https://transcribe.so/auth.md\n\n## Related\n\n- Submit new jobs: see the `transcribe-audio` skill\n- REST shapes: https://transcribe.so/api/v1/openapi.yaml\n"
}

SHA-256 of public snapshot: ad23ee3b5ae9bcf4395fe657ed7e7085985545cc591d4807c0dcc9b3e64c6b3a