Ingest new sources into the knowledge base
The knowledge base lives in the plugin root: ${CLAUDE_PLUGIN_ROOT}. Read
${CLAUDE_PLUGIN_ROOT}/CLAUDE.md first — it defines the note format and citation rules.
Work in the git checkout (normally ~/web/skills.subida.ai), not in a plugin cache copy.
1. Fetch transcripts
uv run scripts/ingest.py --list "https://www.youtube.com/@channel/videos" # catalogue, [x] = done
uv run scripts/ingest.py "<video url>" # one video
uv run scripts/ingest.py "<channel url>" --ids id1,id2 # picked videos
uv run scripts/ingest.py "<channel url>" --limit 10 # 10 newest not yet ingested
Captions come from YouTube (free, timestamped). Without captions it downloads audio and runs
~/.claude/scripts/transcribe.py (OpenAI Whisper, ~$0.006/min, no timestamps). Prefer videos that
teach something reusable (frameworks, tests with numbers, teardowns) over news and hype.
2. Digest
For each new source (uv run scripts/kb.py status lists undigested ones):
- Read the transcript; identify speakers (description + intro) →
speakers:in its frontmatter, and create/updatepeople/<slug>.mdfor any new expert. - Extract reusable claims: rules, frameworks, numbers, experiments and their results, tools, named examples. Skip filler, sponsor reads and self-promotion.
- For each claim, find the existing note (
INDEX.md,grep -ril) and update it; only create a new note when the question is genuinely new. Cite withyt:<id> @ mm:ss — Speaker. - New claim contradicts an existing note → add to Disagreements / caveats, don’t overwrite.
- Add new notes to the domain’s
SKILL.mdnote map, and change the playbook only if the new source changes the top-level advice. - Set
digested: trueon the source.
Many sources at once: split by topic cluster (not by video) across subagents, giving each an exclusive set of notes/folders so they never edit the same file.
3. Check and commit
uv run scripts/kb.py validate && uv run scripts/kb.py index
git add -A && git commit -m "Ingest: <channel/topic> (<n> sources)" && git push
Publish the website: cd site && npm run deploy.
Then bump version in .claude-plugin/plugin.json (commit it too) and refresh the installed copy:
claude plugin marketplace update subida && claude plugin update subida-kb@subida.