From wiki
Use when the user invokes LLM Wiki parse workflow — explicitly via "wiki:parse", "parse this", "parse this folder", "wiki: parse <path|url>", drops a YouTube link, or when a new file is dropped into a wiki's raw/_inbox/. Handles four input kinds: single file, folder (batch), generic URL (defuddle clip), or YouTube URL (yt-dlp transcript + optional whisper). Processes each source into the wiki: creates sources/<slug>.md summary, updates 10-15 entities/concepts with citations, appends a log entry. Recognizes the target wiki by a CLAUDE.md with `type: schema, scope: wiki` frontmatter. Reads that CLAUDE.md for the authoritative ingest protocol before acting.
How this skill is triggered — by the user, by Claude, or both
Slash command
/wiki:parseThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are the ingest workflow for an LLM Wiki. The authoritative procedure lives in the target wiki's `CLAUDE.md` — read it before acting.
You are the ingest workflow for an LLM Wiki. The authoritative procedure lives in the target wiki's CLAUDE.md — read it before acting.
Find CLAUDE.md with frontmatter type: schema and scope: wiki:
pwd and walk up — look for wiki/CLAUDE.md$VAULT_ROOT/**/wiki/CLAUDE.mdArgument can be a file path, folder path, URL, YouTube URL, the literal this, or empty. Detect kind:
| Input | How to detect | Action |
|---|---|---|
| YouTube URL | matches youtube.com/watch, youtu.be/, youtube.com/shorts/ | go to Step 2a |
| Generic URL | starts with http(s)://, not YouTube | call obsidian:defuddle → raw/anthropic-docs/<slug>.md |
| Folder | [ -d "$path" ] | go to Step 2b (batch) |
| File | [ -f "$path" ] and lives under raw/ | use as-is. If outside raw/ — ask user where it belongs |
this / empty | no arg | pick the most recently modified file in raw/_inbox/; if empty, ask user |
mkdir -p wiki/raw/transcriptsyt-dlp --skip-download --write-auto-sub --write-sub \
--sub-lang "en,uk,en-orig" --sub-format vtt \
-o "wiki/raw/transcripts/%(id)s.%(ext)s" "<URL>"
.vtt missing), fall back to whisper:
yt-dlp -x --audio-format mp3 -o "wiki/raw/transcripts/%(id)s.%(ext)s" "<URL>"
whisper "wiki/raw/transcripts/<id>.mp3" --model small --output_format txt \
--output_dir wiki/raw/transcripts
.vtt/.txt into a clean markdown at wiki/raw/transcripts/<slug>.md with metadata header (video title via yt-dlp --get-title, URL, duration, channel, fetched date).md, .txt, and other text files in the folder (skip binaries)N files. Pick mode:
raw/_inbox/: after Step 4 succeeds for each file, move the source out of _inbox/ into its permanent home:
.url / .txt containing a URL → already processed via defuddle/yt-dlp, original moves to raw/_inbox/_processed/<filename>raw/transcripts/<id>.md (already there from Step 2a)raw/anthropic-docs/ (from Step 2a)raw/articles/<filename> (or raw/_inbox/_processed/ if unclear)Use this when N > 20. Splits work between subagents to avoid sequential bottleneck and write conflicts.
Phase A — sources/ (parallel, idempotent writes):
sources/<slug>.md in with frontmatter (type: source, raw: [[...]], url, fetched, tags, confidence) and sections Summary / Key claims / Quotes / Backlinks. Do NOT touch entities/ or concepts/ — that's a later pass. Return list of slugs created."Phase B — entities/concepts sweep (single thread, after Phase A):
sources/*.md[[sources/<slug>]] citation, refresh last_updatedPhase C — finalize:
qmd update && qmd embedRead the schema in full. Do not paraphrase or shortcut steps.
Per wiki/CLAUDE.md:
Read the raw file completely
Discuss takeaways with the user (1-2 sentences each) before writing — in batch mode, summarize per file but skip the back-and-forth
Create sources/<slug>.md with frontmatter (type: source, raw: [[...]], url, fetched: YYYY-MM-DD, tags, confidence) and sections: Summary / Key claims / Quotes / Backlinks. For YouTube sources add video_id, channel, duration fields
Touch 10-15 entities/ and concepts/: add new claims with citation [[sources/<slug>]], refresh last_updated. Create new entities/concepts if warranted
Sync index.md if it contains manual sections (Dataview blocks auto-refresh)
Append log.md:
## [YYYY-MM-DD] ingest | <Source title>
- bullet 1 — what changed
- bullet 2
- bullet 3
For batch ingests: one log entry per source, OR one rollup entry with sub-bullets listing each source — your choice based on scale.
After all sources written:
qmd update && qmd embed
Mention this in the final summary so the user knows the search index is fresh.
raw/ after Step 2 — read-only from Step 3 onwardconfidence: low + matching questions/<topic>.mdurl: frontmatter for any web/YouTube sourcenpx claudepluginhub genkovich/llm-wiki --plugin wikiCreates bite-sized, testable implementation plans from specs or requirements, with file structure and task decomposition. Activates before coding multi-step tasks.