All-platform progressive-disclosure skill split + generator (addresses #1106). Splits each platform's skill into a lean core (~615 lines, full default pipeline inline) + on-demand references/, generated from a single source via tools/skillgen with a CI/pre-commit drift gate. 13 hosts split, aider/devin stay monoliths. Also fixes the stale bare-path bugs across the previously hand-maintained variants and moves the always-on blocks into packaged markdown. Verified: all 5 generator guards pass, byte-verbatim load-bearing slices, lean cores self-sufficient on the default path across all 13 split hosts, references gated to non-default branches, description preserves the graphify-out-query-first clause. Supersedes #1119 (Claude-first subset). Known follow-up applied on top: harden _always_on() against a missing packaged file so a partial install can't brick the CLI.
49 lines
2.6 KiB
Markdown
49 lines
2.6 KiB
Markdown
# graphify reference: transcribe video and audio
|
|
|
|
Load this only when `detect` reported one or more `video` files. A corpus with no video never reads this.
|
|
|
|
### Step 2.5 - Transcribe video / audio files (only if video files detected)
|
|
|
|
Skip this step entirely if `detect` returned zero `video` files.
|
|
|
|
Video and audio files cannot be read directly. Transcribe them to text first, then treat the transcripts as doc files in Step 3.
|
|
|
|
**Strategy:** Read the god nodes from `graphify-out/.graphify_detect.json` (or the analysis file if it exists from a previous run). You are already a language model — write a one-sentence domain hint yourself from those labels. Then pass it to Whisper as the initial prompt. No separate API call needed.
|
|
|
|
**However**, if the corpus has *only* video files and no other docs/code, use the generic fallback prompt: `"Use proper punctuation and paragraph breaks."`
|
|
|
|
**Step 1 - Write the Whisper prompt yourself.**
|
|
|
|
Read the top god node labels from detect output or analysis, then compose a short domain hint sentence, for example:
|
|
|
|
- Labels: `transformer, attention, encoder, decoder` → `"Machine learning research on transformer architectures and attention mechanisms. Use proper punctuation and paragraph breaks."`
|
|
- Labels: `kubernetes, deployment, pod, helm` → `"DevOps discussion about Kubernetes deployments and Helm charts. Use proper punctuation and paragraph breaks."`
|
|
|
|
Set it as `WHISPER_PROMPT` to use in the next command.
|
|
|
|
**Step 2 - Transcribe:**
|
|
|
|
```bash
|
|
GRAPHIFY_WHISPER_MODEL=base # or whatever --whisper-model the user passed
|
|
$(cat graphify-out/.graphify_python) -c "
|
|
import json, os
|
|
from pathlib import Path
|
|
from graphify.transcribe import transcribe_all
|
|
|
|
detect = json.loads(Path('graphify-out/.graphify_detect.json').read_text(encoding=\"utf-8\"))
|
|
video_files = detect.get('files', {}).get('video', [])
|
|
prompt = os.environ.get('GRAPHIFY_WHISPER_PROMPT', 'Use proper punctuation and paragraph breaks.')
|
|
|
|
transcript_paths = transcribe_all(video_files, initial_prompt=prompt)
|
|
print(json.dumps(transcript_paths, ensure_ascii=False))
|
|
" > graphify-out/.graphify_transcripts.json
|
|
```
|
|
|
|
After transcription:
|
|
- Read the transcript paths from `graphify-out/.graphify_transcripts.json`
|
|
- Add them to the docs list before dispatching semantic subagents in Step 3B
|
|
- Print how many transcripts were created: `Transcribed N video file(s) -> treating as docs`
|
|
- If transcription fails for a file, print a warning and continue with the rest
|
|
|
|
**Whisper model:** Default is `base`. If the user passed `--whisper-model <name>`, set `GRAPHIFY_WHISPER_MODEL=<name>` in the environment before running the command above.
|