agentic/code/frameworks/media-curator/skills/transcribe-media/SKILL.md
Produce timestamped transcript sidecars for acquired audio/video with hashes, source metadata, speaker labels when available, and explicit degraded plans when STT tooling is missing
npx skillsauth add jmagly/aiwg Transcribe MediaInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create a research-grade transcript sidecar for a local acquired audio or video file. This primitive supports media-curator to research handoff. It does not claim transcription support unless an actual local STT tool, approved service adapter, human transcript, or diarization sidecar is available.
Required:
Optional:
Write transcript sidecars under .aiwg/media/transcripts/ or beside the acquired media when the collection already stores sidecars locally.
Recommended filename: <media-basename>.transcript.json
Required fields:
schema: aiwg.media.transcript.v1source.path, source.url, source.sha256transcript.sha256, transcript.language, transcript.generated_at, transcript.tool, transcript.qualitysegments[] with stable id, start, end, text, and optional speakerprovenance.wasDerivedFrom, provenance.generatedEntity, provenance.activity, provenance.usedSegment IDs MUST be stable. Use zero-padded sequential IDs such as seg-000001 unless the upstream transcript already has durable IDs.
source.sha256 is the SHA-256 of the exact local media file bytes.transcript.sha256 is the SHA-256 of the canonical transcript payload used for citation, not the pretty-printed JSON file.id, start, end, speaker if present, and text for every segment, separated by tabs and newlines.sha256:<hex> convention as media-curator integrity manifests.Preserve speaker labels when STT output, a diarization sidecar, or a human transcript provides them. If no diarization is available, emit the documented single-speaker fallback SPEAKER_00 and record the limitation in transcript.quality.limitations.
Do not invent speaker names. Replace SPEAKER_00 with real names only when metadata or human verification proves them.
Check for an available transcription path before generating text:
command -v whisper-cpp || command -v whisper || command -v vosk-transcriber || true
command -v ffmpeg || true
If no STT tool or approved transcript source is available, do not fabricate transcript text. Write or report an actionable plan with:
schema: aiwg.media.transcript-plan.v1status: blocked-tooling-missingA generated transcript is evidence of tool output, not proof of exact speech content. Handoff notes MUST state:
Include the transcript sidecar path, source media hash, transcript hash, source URL, acquisition metadata, quality status, and known limitations.
See examples/sample.transcript.json for a minimal transcript sidecar with timestamps, speaker fallback, source URL, source hash, transcript hash, and provenance fields.
data-ai
Report which research-corpus radar sidecars are overdue for refresh. Computes staleness (days since last refresh vs the cadence window) for every radar, sorted most-overdue-first. Runs via `aiwg corpus radar-status`.
data-ai
Aggregate research-corpus radar sidecars into a corpus or per-cluster freshness report — totals, overdue count, per-cluster / per-GRADE / per-trajectory breakdowns, an overdue table, and per-radar rationale snippets. Runs via `aiwg corpus radar-report`.
testing
Scaffold radar/freshness sidecars for research-corpus REFs. Pulls title/authors from the citation sidecar and GRADE from the analysis doc, defaults the refresh cadence from GRADE and the cluster from a corpus-local map, and stamps documentation/radar/REF-XXX-radar.md. Runs via `aiwg corpus radar-init`.
data-ai
Compute an entity's publication trajectory — per-year paper counts, topic drift, hot-streak detection (≥3 consecutive A-grade years), and career phase. Runs via `aiwg corpus profile-temporal`.