← All craftbooks

Transcribe and Index a Tape

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

Give one tape the ten-second-findability treatment: transcript on file, then every moment worth finding indexed with its timecode and people tags — so 'the clip of Opa's 80th toast' becomes a query, not an afternoon of scrubbing. Locks the tape's metadata and the indexing rules FIRST (timecoded moments, people tags drawn from the family roster, searchable descriptions), then lands the transcript, then the clip records, then a tape summary with the highlights. Use for indexing a digitized tape, making home videos searchable, cataloging family footage, and 'what is on this tape'.

Steps

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

  1. Scope the tapefilmarchivarisentry

    tape metadata, the family roster, indexing rules locked

    Show working prompt
    Define the indexing job before touching the tape. Step 1: identify the tape being indexed — its label or number, roughly when it was shot, and where its transcript lands under transcripts/ (when a transcript is already on file there, this run verifies and indexes it rather than re-transcribing). Step 2: read family.md from the workspace — the roster of names is the controlled vocabulary for people tags; a tag that is not on the roster is a typo waiting to break search. Step 3: read clips.json to see how prior tapes were indexed, and lock the indexing rules — every moment worth finding gets a record with the tape, the timecode where it starts, the people in it tagged from the roster, and a description written the way someone would actually search for it ('Opa's toast at the 80th', not 'man speaking'). Step 4: write an acceptance-criteria checklist ('transcript on file under transcripts/', 'every notable moment indexed with its timecode', 'every people tag matches the roster', 'descriptions are searchable phrases', 'existing clip records untouched'). Call write_task_note with the tape id + roster size + checklist and write notes/scope.md.
  2. Land the transcripttranscriber

    the tape's transcript on file, timestamped and speaker-marked

    Show working prompt
    Get the tape's transcript on file. Step 1: produce the transcript through the project's transcription capabilities — or, when a transcript for this tape is already provided under transcripts/, read it end to end and treat it as the source. Step 2: make sure it carries what indexing needs — timestamps through the recording and speaker names where voices are identifiable from the family roster; normalize obvious mis-hearings of family names against family.md. Step 3: save the result under transcripts/ named for the tape, and skim once for the moments that will matter — celebrations, first words, arrivals, the stories people tell — noting rough timecodes as you go. Call write_task_note with the transcript path, its rough duration, and the count of candidate moments spotted.
  3. Index the momentsarchivist

    clip records appended: tape, timecode, people, description

    Show working prompt
    Index every moment worth finding. Step 1: walk the transcript and pick the moments someone will one day search for — the toast, the song, the argument about the recipe, the baby's first steps in the background. Aim for completeness over polish: a missed moment is invisible forever. Step 2: for each moment, append a record to clips.json through the project's archive capabilities — the tape id, the timecode where the moment starts (matching a timestamp in the transcript), the people in it as an array of roster names from family.md, and a searchable description. Step 3: never edit or drop the existing records from prior tapes — this is an append, and the archive's history is the point. Step 4: re-read clips.json once — valid JSON, new records complete, timecodes real. Call write_task_note with the count of new records and the single best moment found.
  4. Write the tape summarycopywriter

    what is on the tape, the highlights, who appears

    Show working prompt
    Write the tape summary the family actually reads. Step 1: open with what the tape is — when it was shot, the occasions it covers, roughly how long it runs. Step 2: give the highlights — the five or so best moments with their timecodes, written warmly enough that someone wants to go watch them. Step 3: list who appears on the tape, drawn from the people tags just indexed. Step 4: close with how to find things — a line noting that every indexed moment is searchable in the archive by person or description. Keep it to a page; this is a family document, not a catalog printout. Write report.md and call write_task_note with the report path and the indexed-moment count.
  5. Evaluatereviewer

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

    Show working prompt
    Open report.md, clips.json, the transcript under transcripts/, and family.md and verify every criterion from notes/scope.md: the transcript is on file and timestamped, every new clip record carries a timecode that appears in the transcript, every people tag matches a roster name exactly, descriptions read as searchable phrases rather than shrugs, prior tapes' records are untouched, and the summary's highlights point at real indexed moments. Write PASS/FAIL per criterion; on any failure, name the offending record and loop back to index.
    
    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: "index" })` 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.
  6. 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