← All craftbooks

Transcribe Audio or Video

Media: audio and videoevalv1.0.0released 2026-06-05workflow: build-loop

Convert an audio or video recording into an accurate, readable transcript using speech-to-text, with speaker labels and timestamps. Scopes the output format, speaker-labeling, and timestamp granularity FIRST so the transcript is usable downstream (search, subtitles, minutes), then transcribes the full recording end-to-end, then verifies coverage against the recording's duration and checks for dropped segments. The scope-first ordering matters because deciding timestamp cadence and speaker handling up front is what separates a clean, searchable transcript from a wall of unattributed text.

Steps

Entry step: scope. Each step names the specialist role it wants; the full working prompt is expandable.

  1. Scope the transcriptplannerentry

    format, speaker labels, timestamp cadence, glossary

    Show working prompt
    Define what a good transcript looks like BEFORE transcribing. Step 1: record the source file (path, format, duration in seconds). Step 2: pick the output format (plain markdown, or timestamped blocks like `[00:01:23] Speaker 1: ...`) and the timestamp cadence (per-utterance, every N seconds, or per-paragraph). Step 3: decide speaker handling (diarize into Speaker 1/2…, or single-speaker) and how to label them. Step 4: build a small glossary of names/terms/acronyms likely in the audio so they transcribe correctly. Step 5: decide cleanup level (verbatim with ums, or lightly edited for readability). Write an acceptance-criteria checklist (transcript spans the full duration with a final timestamp near the end, every block is timestamped, speakers are labeled consistently, glossary terms spelled correctly, output parses as the chosen format) and decisions to `notes/scope.md` via write_task_note AND to the produces path.
  2. Transcribe the recordingdeveloper

    run STT over the full file, label speakers, timestamp

    Show working prompt
    Produce the transcript to the locked format. Step 1: run the speech-to-text capability over the WHOLE file (chunk long files on silence boundaries and stitch, keeping running timestamps so they stay monotonic across chunks). Step 2: apply speaker labels and the chosen timestamp cadence. Step 3: apply the glossary — correct names/terms the recognizer got wrong. Step 4: apply the chosen cleanup level. Step 5: write the result to `transcript.md` in the locked format and confirm it parses. write_task_note the transcript path, its final timestamp, and the recording duration so coverage is checkable. On a loop-back, fix only the flagged gaps (missing tail, mislabeled speakers, glossary misspellings).
  3. Evaluatereviewer

    Grade the deliverable against every acceptance criterion. All pass → finish; any fail → loop back and fix the gap.

    Show working prompt
    Check accuracy and coverage. Step 1: confirm the LAST timestamp is within a small margin of the recording's duration (no dropped tail) — PASS/FAIL coverage. Step 2: confirm every block is timestamped and speakers are labeled consistently throughout. Step 3: spot-check 3 timestamps against the audio (if an audio capability exists) — does the text match what is said there? Step 4: confirm glossary terms/names are spelled correctly. Step 5: confirm the file parses as the chosen format. Write PASS/FAIL per criterion.
    
    Then route — this is the whole point of the loop:
    
    - **Every criterion PASSES →** call `advance_task_step({ ref, stepId: "evaluate", next: "finish" })`.
    - **Any criterion FAILS →** write the specific gaps to notes, then call `advance_task_step({ ref, stepId: "evaluate", next: "transcribe" })` to loop back. The builder fixes exactly those gaps.
    
    Never route to `finish` while any criterion is unmet. The build phase's completion gate already blocked a grossly-incomplete deliverable; your job is the judgment an automated check cannot make (does it actually work, read well, look right). After ~3 unproductive loops, stop and report DONE_WITH_CONCERNS so the user can step in.
  4. Finishdeveloper

    All acceptance criteria met. Stamp a short summary and report DONE.

    Show working prompt
    Every acceptance criterion passed. Write a one-paragraph DONE summary to task notes via `write_task_note`: what was built, the deliverable path(s), and a one-line confirmation that each criterion is met. Then report DONE.

Triggers

Phrases that suggest this craftbook to a crew.

Source

View this craftbook on GitHub · MIT license