Knihovník — Personal Knowledge Base v2.0
Filozofie
Inspirováno Knowledge OS Blueprint. Klíčová idea: compound effect — každý nový zdroj nejen přidává, ale i obohacuje existující znalosti přes auto-linking a concept pages.
Kdy použít
- Uživatel chce uložit článek, video, zdroj, insight nebo poznámku
- Trigger fráze: "/knihovnik", "ulož článek", "ulož zdroj", "hodím to do inboxu", "hledej v knihovníku", "moje zdroje"
Datová struktura
Zdroj pravdy jsou frontmattery content souborů. sources.json je derivovaný index pro rychlé hledání — kdykoli ho lze přestavět přes /knihovnik reindex. Důvod: data žijí na Google Drive se sync mezi počítači; konflikt syncu (soubory * (1).json) může index rozbít, ale content soubory přežijí a index se z nich obnoví.
KNIHOVNIK_DIR/
├── data/
│ ├── sources.json # derivovaný index všech zdrojů + connections (rebuild: /knihovnik reindex)
│ └── tags.json # vocabulary s aliasy
├── inbox/ # rychlé zachycení (nezpracované)
├── content/
│ ├── articles/ # externí články
│ ├── videos/ # YT videa s přepisem
│ ├── books/ # výpisky z knih
│ ├── insights/ # vlastní pozorování (1 myšlenka = 1 soubor)
│ ├── concepts/ # evolving wiki stránky (compound)
│ └── my-notes/ # delší vlastní texty, sbírky
└── zdroje/ # raw zdroje (HTML, PDF, ENEX)
Kde KNIHOVNIK_DIR je tvoje knowledge base složka — nastav si ji v lokálním CLAUDE.md projektu, např.:
KNIHOVNIK_DIR=$HOME/Documents/knihovnik
Doporučuju ji umístit na cloud (Google Drive, iCloud, Dropbox), ať máš data sync mezi počítači.
Typy záznamů
| Typ |
Složka |
Účel |
Příklad |
article |
articles/ |
Externí článek |
Komentář z novin |
video |
videos/ |
YT video s přepisem |
Podcast |
book |
books/ |
Výpisky z knihy |
Non-fiction titul |
insight |
insights/ |
Vlastní myšlenka, jedna ucelená realizace |
"Zákazy ničí důvěru" |
concept |
concepts/ |
Evolving wiki stránka, syntéza více zdrojů |
"Děti a sociální sítě" |
note |
my-notes/ |
Delší vlastní text, sbírka |
Citáty |
fragment |
inbox/ |
Nezpracovaný zachycený obsah |
Surová URL |
Příkazy
/knihovnik save <url-nebo-text> — Uložení s plným zpracováním
- Načti
sources.json a tags.json
- Zkontroluj duplicitu (URL/title)
- Detekuj typ (article/video/book) nebo se zeptej
- Extrahuj obsah:
- Articles:
WebFetch (pokud paywall, zkontroluj zdroje/ jestli tam není stažený HTML)
- YouTube: viz "YouTube videa — přepis"
- Books: očekává citaci od uživatele
- Auto-link — viz "Auto-linking workflow"
- Compound check — viz "Concept pages workflow"
- Vytvoř content soubor (frontmatter + obsah)
- Navrhni štítky (preferuj existující z
tags.json)
- Zobraz uživateli návrh — titulek, autor, štítky, propojené zdroje, návrh concept page (pokud relevantní)
- Po schválení ulož vše
/knihovnik inbox <text-nebo-url> — Rychlé zachycení
Pro situace kdy nemáš čas to zpracovat. Jen to hodím tam.
- Vytvoř soubor v
inbox/YYYY-MM-DD-HHMMSS-slug.md s minimální strukturou:---
captured: "2026-04-07 14:30"
raw: "https://..."
---
<volný text/poznámka uživatele>
- Žádné tagy, žádné zpracování, žádný entry v sources.json
- Potvrď: "Uloženo do inboxu (X položek čeká na zpracování)"
/knihovnik process — Zpracování inboxu
Projde všechny soubory v inbox/, jeden po druhém:
- Pro každý fragment zobraz jeho obsah uživateli
- Navrhni typ + štítky + auto-links
- Po schválení spusť workflow
/knihovnik save (s předvyplněnými hodnotami)
- Smaž zpracovaný fragment z inboxu
- Po dokončení zobraz souhrn: "Zpracováno N položek, X zbývá v inboxu"
/knihovnik insight <text> — Vlastní pozorování
Pro jednu ucelenou myšlenku/realizaci.
- Vytvoř soubor v
content/insights/YYYY-MM-DD-slug.md:---
id: "2026-04-07-001"
type: insight
title: "Krátký výstižný titulek"
date: "2026-04-07"
tags: ["#tag1", "#tag2"]
is_mine: true
links: []
---
# Titulek
## Pozorování
<hlavní myšlenka>
## Kontext
<co k tomu vedlo>
## Co z toho plyne
<důsledek, akce>
- Auto-link na související zdroje (viz workflow)
- Compound check na concepts
/knihovnik note <text> — Vlastní delší poznámka / sbírka
Pro delší texty, sbírky, blogposty (jako sbírka citátů). Stejné jako insight, ale jde do content/my-notes/.
/knihovnik book <název> — Výpisky z knihy
- Vytvoř soubor v
content/books/YYYY-MM-DD-slug.md
- Citace knihy (autor, vydavatel, rok)
is_mine: false
- Uživatel doplní výpisky a poznámky
- Navrhni štítky + auto-link
/knihovnik concept <téma> — Vytvoření / aktualizace concept page
Manuální vytvoření concept page (jinak skill navrhne auto).
- Najdi všechny zdroje v
sources.json související s tématem (přes tagy + fulltext)
- Pokud jsou < 3, varuj uživatele ("málo signálu pro concept page")
- Syntetizuj obsah z nalezených zdrojů
- Vytvoř
content/concepts/topic-slug.md:---
id: "concept-001"
type: concept
title: "Téma"
tags: ["#tag1", "#tag2"]
sources:
- "content/articles/2026-04-02-xyz.md"
- "content/insights/2026-04-03-abc.md"
related:
- "content/concepts/jine-tema.md"
last_updated: "2026-04-07"
---
# Téma
## Klíčové myšlenky
<syntéza ze všech sources>
## Vlastní pohled
<co si o tom myslím>
## Sources
- [Titul 1](path) — co přináší
- [Titul 2](path) — co přináší
- Aktualizuj
sources.json (přidej concept jako entry s linky na sources)
/knihovnik search <dotaz> — Hledání
- Načti
sources.json
- Hledej v:
- Titulcích a autorech
- Štítcích (pokud začíná
#)
- Content souborech (
Grep)
- Concept pages (priorita — koncepty obsahují syntézu)
- Zobraz tabulku: ID | Typ | Titulek | Štítky | Datum
- Pokud dotaz odpovídá nějaké concept page, ukaž ji jako první
/knihovnik list [#tag] [typ] — Výpis zdrojů
Filtruj dle štítku/typu, seřaď od nejnovějšího.
/knihovnik tags — Výpis štítků
Zobraz štítky s počtem zdrojů, varuj na aliasy.
/knihovnik open <id> — Detail zdroje
Zobraz frontmatter + obsah + propojené zdroje (links).
/knihovnik connections <id> — Graf vazeb
Zobraz:
- Přímé linky daného zdroje
- Concept pages, ke kterým patří
- Sourozence (zdroje s podobnými tagy)
/knihovnik edit <id> — Editace zdroje
Najdi, zobraz, uprav dle pokynů uživatele, aktualizuj content + sources.json.
/knihovnik bundle <téma> — Sbalí téma do jednoho .md
Pro export do NotebookLM, přípravu blogpostu, nebo jen pro souhrn co všechno k tématu mám.
- Najdi všechny zdroje v
sources.json související s tématem (přes tagy + fulltext + concept page)
- Zobraz uživateli seznam nalezených zdrojů, nech ho přidat/odebrat
- Vygeneruj
content/bundles/YYYY-MM-DD-tema-slug.md:---
bundle_topic: "Téma"
generated: "2026-04-07"
sources_count: 8
tags: ["#tag1", "#tag2"]
---
# Bundle: Téma
> Vygenerováno z N zdrojů Knihovníka pro NotebookLM / blogpost / přípravu.
## Concept page (pokud existuje)
<plný obsah concept page>
---
## Zdroj 1: <titulek>
**Autor:** ... | **Datum:** ... | **Typ:** article
**Tagy:** #tag1 #tag2
**Shrnutí:** ...
<plný obsah content souboru>
---
## Zdroj 2: ...
- Zobraz uživateli cestu + počet zdrojů + délku v slovech
- Tip pro NotebookLM: "Soubor můžeš nahrát na notebooklm.google.com → Generate podcast"
/knihovnik health — Kontrola zdraví KB
Zkontroluj:
- Sirotci — zdroje bez
links
- Tagy mimo vocabulary — tagy v sources.json které nejsou v tags.json
- Stale concepts — concept pages starší 30 dní s novými zdroji k tématu
- Concept candidates — tagy s 3+ zdroji bez concept page
- Duplicitní URL
- Drift indexu — content soubory na disku, které nejsou v sources.json (a naopak entry bez souboru) → doporuč
/knihovnik reindex
- Drive konflikty — soubory
* (1).md, * (1).json, *conflict* kdekoli v KNIHOVNIK_DIR → vypiš je a navrhni řešení (porovnat, sloučit, smazat)
Vrať report s návrhy na opravu.
/knihovnik reindex — Přestavba indexu z content souborů
Když je sources.json rozbitý, po Drive konfliktu, nebo při driftu (health check 6):
- Projdi všechny
.md v content/** a přečti frontmattery (id, type, title, tags, links, …)
- Postav nový
sources.json čistě z nich — frontmatter je zdroj pravdy
summary pole: převezmi ze starého sources.json podle id (pokud existuje), jinak vygeneruj z obsahu
- Zkontroluj bidirectional linky (A→B vyžaduje B→A) — chybějící doplň do frontmatterů
- Starý sources.json ulož jako
data/sources.json.bak (jeden backup, přepisuj)
- Report: počet zdrojů, opravených linků, rozdílů proti starému indexu
Auto-linking workflow
Při ukládání nového zdroje skill automaticky najde 2-3 nejvíc související existující zdroje:
- Tag overlap — najdi zdroje sdílející 2+ tagy s novým
- Title similarity — fulltext hledání klíčových slov z titulku v ostatních
- Author/source match — stejný autor nebo stejný zdroj
- Topic match — pokud má nový zdroj concept page, propoj na ni
Vyber top 2-3 a:
- Přidej je do
links: [] v novém content souboru
- Bidirectional update — přidej nový zdroj do
links: [] těch existujících (v jejich content souborech i v sources.json)
- Ukaž uživateli, co se propojilo
Concept pages workflow (compound effect)
Při každém save příkazu:
- Existuje concept page k tématu? (matchnu přes tagy)
- ANO → aktualizuj ji:
- Přidej novou data point/citát do obsahu
- Přidej cestu do
sources: array
- Bumpni
last_updated:
- Pokud update odhalí novou vazbu na jinou concept page, přidej do
related:
- NE → zkontroluj jestli existuje 3+ zdrojů ke stejnému tématu (po přidání tohoto)
- Pokud ANO → navrhni uživateli vytvořit concept page
- Pokud NE → nic, jen ulož
Příklad compound update:
Nový článek "AI v marketingu" →
- Vytvoří entry v library/
- Updates concepts/ai-marketing.md (přidá data)
- Updates concepts/marketing-trends.md (cross-reference)
Práh 3 = dostatečný signál pro syntézu bez předčasné abstrakce.
YouTube videa — přepis
Při /knihovnik save <youtube-url> se automaticky stáhne audio a přepíše přes lokální Whisper.
Prerekvizity
yt-dlp (nainstalováno přes brew)
whisper (lokální, model large-v3)
ffprobe / ffmpeg
Workflow
Stáhni metadata z YouTube:
yt-dlp --print title --print channel --print upload_date --print description --skip-download "<url>"
Stáhni audio do dočasné složky:
yt-dlp -x --audio-format mp3 --audio-quality 0 -o "/tmp/knihovnik-yt-%(id)s.%(ext)s" "<url>"
Zjisti délku nahrávky:
ffprobe -v error -show_entries format=duration -of csv=p=0 "/tmp/knihovnik-yt-VIDEOID.mp3"
- Pokud > 60 minut, upozorni uživatele
Přepiš přes Whisper:
whisper "/tmp/knihovnik-yt-VIDEOID.mp3" --model large-v3 --language cs --output_format txt --output_dir /tmp
- Pro anglická videa použij
--language en
- Jazyk detekuj z názvu/popisu videa, nebo se zeptej uživatele
Vyčisti přepis:
- Odstraň hezitační zvuky (ehm, ééé, hmm)
- Odstraň opakování a nedokončené věty
- Rozděl do odstavců s mezititulky
- Zachovej autentický jazyk mluvčího
- NEpřidávej nic co řečník neřekl
Ulož content soubor do content/videos/YYYY-MM-DD-slug.md
Smaž dočasné soubory z /tmp
Navrhni štítky + auto-link + compound check
Poznámky
- Dlouhá videa (60+ min) — Whisper přes
run_in_background
- Pokud
yt-dlp selže, informuj uživatele
Pravidla pro štítky
- Lowercase, bez diakritiky:
#e-commerce, #leadership
- Krátké, max 2 slova spojená pomlčkou
- Preferuj existující štítky z
tags.json
- Formát v
tags.json:{
"name": "#leadership",
"description": "Vedení lidí, management",
"aliases": ["#management", "#vedeni"],
"category": "byznys",
"count": 5
}
Alias resolution (povinné při každém save)
Když skill navrhne nebo dostane od uživatele štítek:
- Přesný match — je v
tags.json jako name? → použij ho
- Alias match — je v některém
aliases poli? → přepiš na canonical name a informuj uživatele:
"Štítek #management je alias na #leadership, používám #leadership"
- Žádný match — nový štítek:
- Zkontroluj jestli to není zjevný překlad/synonymum existujícího (např.
#startup → mohl by být alias na #podnikani)
- Pokud ano, navrhni uživateli přidat jako alias místo nového tagu
- Pokud ne, přidej do
tags.json s description, category, count: 1
Health alert na tagy
Při /knihovnik health zkontroluj:
- Tagy v
sources.json které nejsou v tags.json (neregistrované)
- Tagy které jsou v
aliases ale stále se používají v sources (mělo by se přepsat)
- Tagy s
count: 0 (nevyužité, kandidát na smazání)
Pravidla pro citace
- Cizí obsah (
is_mine: false): vždy Autor — [Název](URL) (datum)
- V content souboru cizí text jako blockquote (
>)
- Vlastní poznámky normálním textem
- Nikdy nemíchat bez jasného oddělení
Formát sources.json záznamu
{
"id": "2026-04-07-001",
"type": "article",
"title": "Název",
"url": "https://...",
"author": "Jméno",
"date_saved": "2026-04-07",
"date_published": "2024-01-15",
"tags": ["#tag1", "#tag2"],
"is_mine": false,
"content_file": "content/articles/2026-04-07-nazev.md",
"summary": "Krátké shrnutí 2-3 věty.",
"links": ["2026-04-02-003", "concept-deti-online"]
}
Session Harvest
Trigger: Když uživatel řekne „hotovo / done / shrň session / co jsme vlastně udělali" — nebo na konci podstatné konverzace.
Skill vyhodnotí:
Vytvořila session novou znalost?
- Nová analýza, rámec, rozhodnutí, syntéza, srovnání?
- Odpověď na netriviální otázku, kterou stojí za to uchovat?
- Skipni triviální session (bug fixy, formátování, krátké Q&A)
Pokud ANO, navrhni uložení jako:
- Concept page (
concepts/) — pokud session prohloubila pochopení tématu, ke kterému už něco máme
- Insight (
insights/) — pokud session odhalila novou realizaci
- Decision — pokud padlo důležité rozhodnutí (uložíme jako insight s tagem
#decision)
Návrh formuluj krátce:
„Tato session přinesla X. Uložit jako [concept/insight]?"
Po schválení: spusť /knihovnik insight nebo /knihovnik concept workflow
Max 1 návrh za session — nenuť uživatele.
Wikilinks v content tělech
V markdownu uvnitř content souborů používej Obsidian-friendly syntax:
Tahle myšlenka navazuje na [[2026-04-02-001|Jinou poznámku]] a [[2026-04-02-002|Další]].
Související koncept: [[concept-nazev]]
Pravidla:
[[id]] — link na zdroj/concept podle ID
[[id|alias]] — link s vlastním textem
- Concept pages používají slug:
[[concept-nazev]]
- Při exportu / čtení tyhle linky fungují jak v Obsidianu, tak je skill umí resolvovat
Důležité
- Vždy přečti
sources.json a tags.json PŘED zápisem
- ID:
YYYY-MM-DD-NNN (datum + pořadí)
- Slug: lowercase, bez diakritiky, max 5 slov
- Bidirectional links — když A linkuje B, B musí linkovat A
- Po každé operaci potvrď uživateli co se stalo + co se propojilo
- Při save vždy NAVRHNI a nech schválit
- Compound effect je core — každý save by měl ideálně updatnout aspoň 1 existující entry (link) nebo concept page
Changelog
- 2026-07-02 — Frontmattery content souborů prohlášeny za zdroj pravdy,
sources.json je derivovaný index. Nový příkaz /knihovnik reindex (rebuild po Drive konfliktu/driftu), health check rozšířen o drift indexu a Drive konflikt soubory. YouTube přepis odkázán na /whspr (konec duplikace whisper parametrů).
1---2name: knihovnik3description: Osobní knowledge base s compound effect — ukládání článků, YT videí, knih, insights a poznámek. Inbox buffer, auto-linking mezi zdroji, evolving concept pages. Data na Google Drive, sync mezi počítači.4---56# Knihovník — Personal Knowledge Base v2.078## Filozofie910Inspirováno Knowledge OS Blueprint. Klíčová idea: **compound effect** — každý nový zdroj nejen přidává, ale i obohacuje existující znalosti přes auto-linking a concept pages.1112## Kdy použít13- Uživatel chce uložit článek, video, zdroj, insight nebo poznámku14- Trigger fráze: "/knihovnik", "ulož článek", "ulož zdroj", "hodím to do inboxu", "hledej v knihovníku", "moje zdroje"1516## Datová struktura1718**Zdroj pravdy jsou frontmattery content souborů.** `sources.json` je derivovaný index pro rychlé hledání — kdykoli ho lze přestavět přes `/knihovnik reindex`. Důvod: data žijí na Google Drive se sync mezi počítači; konflikt syncu (soubory `* (1).json`) může index rozbít, ale content soubory přežijí a index se z nich obnoví.1920```21KNIHOVNIK_DIR/22├── data/23│ ├── sources.json # derivovaný index všech zdrojů + connections (rebuild: /knihovnik reindex)24│ └── tags.json # vocabulary s aliasy25├── inbox/ # rychlé zachycení (nezpracované)26├── content/27│ ├── articles/ # externí články28│ ├── videos/ # YT videa s přepisem29│ ├── books/ # výpisky z knih30│ ├── insights/ # vlastní pozorování (1 myšlenka = 1 soubor)31│ ├── concepts/ # evolving wiki stránky (compound)32│ └── my-notes/ # delší vlastní texty, sbírky33└── zdroje/ # raw zdroje (HTML, PDF, ENEX)34```3536Kde `KNIHOVNIK_DIR` je tvoje knowledge base složka — nastav si ji v lokálním `CLAUDE.md` projektu, např.:3738```39KNIHOVNIK_DIR=$HOME/Documents/knihovnik40```4142Doporučuju ji umístit na cloud (Google Drive, iCloud, Dropbox), ať máš data sync mezi počítači.4344## Typy záznamů4546| Typ | Složka | Účel | Příklad |47|---|---|---|---|48| `article` | `articles/` | Externí článek | Komentář z novin |49| `video` | `videos/` | YT video s přepisem | Podcast |50| `book` | `books/` | Výpisky z knihy | Non-fiction titul |51| `insight` | `insights/` | Vlastní myšlenka, jedna ucelená realizace | "Zákazy ničí důvěru" |52| `concept` | `concepts/` | Evolving wiki stránka, syntéza více zdrojů | "Děti a sociální sítě" |53| `note` | `my-notes/` | Delší vlastní text, sbírka | Citáty |54| `fragment` | `inbox/` | Nezpracovaný zachycený obsah | Surová URL |5556## Příkazy5758### `/knihovnik save <url-nebo-text>` — Uložení s plným zpracováním59601. Načti `sources.json` a `tags.json`612. Zkontroluj duplicitu (URL/title)623. Detekuj typ (article/video/book) nebo se zeptej634. **Extrahuj obsah:**64 - Articles: `WebFetch` (pokud paywall, zkontroluj `zdroje/` jestli tam není stažený HTML)65 - YouTube: viz "YouTube videa — přepis"66 - Books: očekává citaci od uživatele675. **Auto-link** — viz "Auto-linking workflow"686. **Compound check** — viz "Concept pages workflow"697. Vytvoř content soubor (frontmatter + obsah)708. Navrhni štítky (preferuj existující z `tags.json`)719. Zobraz uživateli návrh — titulek, autor, štítky, propojené zdroje, návrh concept page (pokud relevantní)7210. Po schválení ulož vše7374### `/knihovnik inbox <text-nebo-url>` — Rychlé zachycení7576Pro situace kdy nemáš čas to zpracovat. Jen to hodím tam.77781. Vytvoř soubor v `inbox/YYYY-MM-DD-HHMMSS-slug.md` s minimální strukturou:79 ```markdown80 ---81 captured: "2026-04-07 14:30"82 raw: "https://..."83 ---8485 <volný text/poznámka uživatele>86 ```872. Žádné tagy, žádné zpracování, žádný entry v sources.json883. Potvrď: "Uloženo do inboxu (X položek čeká na zpracování)"8990### `/knihovnik process` — Zpracování inboxu9192Projde všechny soubory v `inbox/`, jeden po druhém:93941. Pro každý fragment zobraz jeho obsah uživateli952. Navrhni typ + štítky + auto-links963. Po schválení spusť workflow `/knihovnik save` (s předvyplněnými hodnotami)974. Smaž zpracovaný fragment z inboxu985. Po dokončení zobraz souhrn: "Zpracováno N položek, X zbývá v inboxu"99100### `/knihovnik insight <text>` — Vlastní pozorování101102Pro jednu ucelenou myšlenku/realizaci.1031041. Vytvoř soubor v `content/insights/YYYY-MM-DD-slug.md`:105 ```markdown106 ---107 id: "2026-04-07-001"108 type: insight109 title: "Krátký výstižný titulek"110 date: "2026-04-07"111 tags: ["#tag1", "#tag2"]112 is_mine: true113 links: []114 ---115116 # Titulek117118 ## Pozorování119 <hlavní myšlenka>120121 ## Kontext122 <co k tomu vedlo>123124 ## Co z toho plyne125 <důsledek, akce>126 ```1272. Auto-link na související zdroje (viz workflow)1283. Compound check na concepts129130### `/knihovnik note <text>` — Vlastní delší poznámka / sbírka131132Pro delší texty, sbírky, blogposty (jako sbírka citátů). Stejné jako insight, ale jde do `content/my-notes/`.133134### `/knihovnik book <název>` — Výpisky z knihy1351361. Vytvoř soubor v `content/books/YYYY-MM-DD-slug.md`1372. Citace knihy (autor, vydavatel, rok)1383. `is_mine: false`1394. Uživatel doplní výpisky a poznámky1405. Navrhni štítky + auto-link141142### `/knihovnik concept <téma>` — Vytvoření / aktualizace concept page143144Manuální vytvoření concept page (jinak skill navrhne auto).1451461. Najdi všechny zdroje v `sources.json` související s tématem (přes tagy + fulltext)1472. Pokud jsou < 3, varuj uživatele ("málo signálu pro concept page")1483. Syntetizuj obsah z nalezených zdrojů1494. Vytvoř `content/concepts/topic-slug.md`:150 ```markdown151 ---152 id: "concept-001"153 type: concept154 title: "Téma"155 tags: ["#tag1", "#tag2"]156 sources:157 - "content/articles/2026-04-02-xyz.md"158 - "content/insights/2026-04-03-abc.md"159 related:160 - "content/concepts/jine-tema.md"161 last_updated: "2026-04-07"162 ---163164 # Téma165166 ## Klíčové myšlenky167 <syntéza ze všech sources>168169 ## Vlastní pohled170 <co si o tom myslím>171172 ## Sources173 - [Titul 1](path) — co přináší174 - [Titul 2](path) — co přináší175 ```1765. Aktualizuj `sources.json` (přidej concept jako entry s linky na sources)177178### `/knihovnik search <dotaz>` — Hledání1791801. Načti `sources.json`1812. Hledej v:182 - Titulcích a autorech183 - Štítcích (pokud začíná `#`)184 - Content souborech (`Grep`)185 - Concept pages (priorita — koncepty obsahují syntézu)1863. Zobraz tabulku: ID | Typ | Titulek | Štítky | Datum1874. Pokud dotaz odpovídá nějaké concept page, ukaž ji jako první188189### `/knihovnik list [#tag] [typ]` — Výpis zdrojů190191Filtruj dle štítku/typu, seřaď od nejnovějšího.192193### `/knihovnik tags` — Výpis štítků194195Zobraz štítky s počtem zdrojů, varuj na aliasy.196197### `/knihovnik open <id>` — Detail zdroje198199Zobraz frontmatter + obsah + propojené zdroje (links).200201### `/knihovnik connections <id>` — Graf vazeb202203Zobraz:204- Přímé linky daného zdroje205- Concept pages, ke kterým patří206- Sourozence (zdroje s podobnými tagy)207208### `/knihovnik edit <id>` — Editace zdroje209210Najdi, zobraz, uprav dle pokynů uživatele, aktualizuj content + sources.json.211212### `/knihovnik bundle <téma>` — Sbalí téma do jednoho .md213214Pro export do NotebookLM, přípravu blogpostu, nebo jen pro souhrn co všechno k tématu mám.2152161. Najdi všechny zdroje v `sources.json` související s tématem (přes tagy + fulltext + concept page)2172. Zobraz uživateli seznam nalezených zdrojů, nech ho přidat/odebrat2183. Vygeneruj `content/bundles/YYYY-MM-DD-tema-slug.md`:219 ```markdown220 ---221 bundle_topic: "Téma"222 generated: "2026-04-07"223 sources_count: 8224 tags: ["#tag1", "#tag2"]225 ---226227 # Bundle: Téma228229 > Vygenerováno z N zdrojů Knihovníka pro NotebookLM / blogpost / přípravu.230231 ## Concept page (pokud existuje)232 <plný obsah concept page>233234 ---235236 ## Zdroj 1: <titulek>237 **Autor:** ... | **Datum:** ... | **Typ:** article238 **Tagy:** #tag1 #tag2239 **Shrnutí:** ...240241 <plný obsah content souboru>242243 ---244245 ## Zdroj 2: ...246 ```2474. Zobraz uživateli cestu + počet zdrojů + délku v slovech2485. Tip pro NotebookLM: "Soubor můžeš nahrát na notebooklm.google.com → Generate podcast"249250### `/knihovnik health` — Kontrola zdraví KB251252Zkontroluj:2531. **Sirotci** — zdroje bez `links`2542. **Tagy mimo vocabulary** — tagy v sources.json které nejsou v tags.json2553. **Stale concepts** — concept pages starší 30 dní s novými zdroji k tématu2564. **Concept candidates** — tagy s 3+ zdroji bez concept page2575. **Duplicitní URL**2586. **Drift indexu** — content soubory na disku, které nejsou v sources.json (a naopak entry bez souboru) → doporuč `/knihovnik reindex`2597. **Drive konflikty** — soubory `* (1).md`, `* (1).json`, `*conflict*` kdekoli v KNIHOVNIK_DIR → vypiš je a navrhni řešení (porovnat, sloučit, smazat)260261Vrať report s návrhy na opravu.262263### `/knihovnik reindex` — Přestavba indexu z content souborů264265Když je `sources.json` rozbitý, po Drive konfliktu, nebo při driftu (health check 6):2662671. Projdi všechny `.md` v `content/**` a přečti frontmattery (id, type, title, tags, links, …)2682. Postav nový `sources.json` čistě z nich — frontmatter je zdroj pravdy2693. `summary` pole: převezmi ze starého sources.json podle id (pokud existuje), jinak vygeneruj z obsahu2704. Zkontroluj bidirectional linky (A→B vyžaduje B→A) — chybějící doplň do frontmatterů2715. Starý sources.json ulož jako `data/sources.json.bak` (jeden backup, přepisuj)2726. Report: počet zdrojů, opravených linků, rozdílů proti starému indexu273274## Auto-linking workflow275276Při ukládání nového zdroje skill automaticky najde 2-3 nejvíc související existující zdroje:2772781. **Tag overlap** — najdi zdroje sdílející 2+ tagy s novým2792. **Title similarity** — fulltext hledání klíčových slov z titulku v ostatních2803. **Author/source match** — stejný autor nebo stejný zdroj2814. **Topic match** — pokud má nový zdroj concept page, propoj na ni282283Vyber top 2-3 a:284- Přidej je do `links: []` v novém content souboru285- **Bidirectional update** — přidej nový zdroj do `links: []` těch existujících (v jejich content souborech i v sources.json)286- Ukaž uživateli, co se propojilo287288## Concept pages workflow (compound effect)289290Při každém save příkazu:2912921. **Existuje concept page k tématu?** (matchnu přes tagy)293 - **ANO** → aktualizuj ji:294 - Přidej novou data point/citát do obsahu295 - Přidej cestu do `sources:` array296 - Bumpni `last_updated:`297 - Pokud update odhalí novou vazbu na jinou concept page, přidej do `related:`298 - **NE** → zkontroluj jestli existuje 3+ zdrojů ke stejnému tématu (po přidání tohoto)299 - Pokud ANO → navrhni uživateli vytvořit concept page300 - Pokud NE → nic, jen ulož301302**Příklad compound update:**303```304Nový článek "AI v marketingu" →305- Vytvoří entry v library/306- Updates concepts/ai-marketing.md (přidá data)307- Updates concepts/marketing-trends.md (cross-reference)308```309310**Práh 3** = dostatečný signál pro syntézu bez předčasné abstrakce.311312## YouTube videa — přepis313314Při `/knihovnik save <youtube-url>` se automaticky stáhne audio a přepíše přes lokální Whisper.315316### Prerekvizity317- `yt-dlp` (nainstalováno přes brew)318- `whisper` (lokální, model large-v3)319- `ffprobe` / `ffmpeg`320321### Workflow3223231. **Stáhni metadata** z YouTube:324 ```bash325 yt-dlp --print title --print channel --print upload_date --print description --skip-download "<url>"326 ```3273282. **Stáhni audio** do dočasné složky:329 ```bash330 yt-dlp -x --audio-format mp3 --audio-quality 0 -o "/tmp/knihovnik-yt-%(id)s.%(ext)s" "<url>"331 ```3323333. **Zjisti délku** nahrávky:334 ```bash335 ffprobe -v error -show_entries format=duration -of csv=p=0 "/tmp/knihovnik-yt-VIDEOID.mp3"336 ```337 - Pokud > 60 minut, upozorni uživatele3383394. **Přepiš přes Whisper**:340 ```bash341 whisper "/tmp/knihovnik-yt-VIDEOID.mp3" --model large-v3 --language cs --output_format txt --output_dir /tmp342 ```343 - Pro anglická videa použij `--language en`344 - Jazyk detekuj z názvu/popisu videa, nebo se zeptej uživatele3453465. **Vyčisti přepis**:347 - Odstraň hezitační zvuky (ehm, ééé, hmm)348 - Odstraň opakování a nedokončené věty349 - Rozděl do odstavců s mezititulky350 - Zachovej autentický jazyk mluvčího351 - NEpřidávej nic co řečník neřekl3523536. **Ulož** content soubor do `content/videos/YYYY-MM-DD-slug.md`3543557. **Smaž dočasné soubory** z `/tmp`3563578. **Navrhni štítky** + auto-link + compound check358359### Poznámky360- Dlouhá videa (60+ min) — Whisper přes `run_in_background`361- Pokud `yt-dlp` selže, informuj uživatele362363## Pravidla pro štítky364365- Lowercase, bez diakritiky: `#e-commerce`, `#leadership`366- Krátké, max 2 slova spojená pomlčkou367- **Preferuj existující** štítky z `tags.json`368- Formát v `tags.json`:369 ```json370 {371 "name": "#leadership",372 "description": "Vedení lidí, management",373 "aliases": ["#management", "#vedeni"],374 "category": "byznys",375 "count": 5376 }377 ```378379### Alias resolution (povinné při každém save)380381Když skill navrhne nebo dostane od uživatele štítek:3823831. **Přesný match** — je v `tags.json` jako `name`? → použij ho3842. **Alias match** — je v některém `aliases` poli? → přepiš na canonical `name` a informuj uživatele:385 > "Štítek `#management` je alias na `#leadership`, používám `#leadership`"3863. **Žádný match** — nový štítek:387 - Zkontroluj jestli to není zjevný překlad/synonymum existujícího (např. `#startup` → mohl by být alias na `#podnikani`)388 - Pokud ano, navrhni uživateli přidat jako alias místo nového tagu389 - Pokud ne, přidej do `tags.json` s `description`, `category`, `count: 1`390391### Health alert na tagy392393Při `/knihovnik health` zkontroluj:394- Tagy v `sources.json` které **nejsou** v `tags.json` (neregistrované)395- Tagy které jsou v `aliases` ale stále se používají v sources (mělo by se přepsat)396- Tagy s `count: 0` (nevyužité, kandidát na smazání)397398## Pravidla pro citace399400- Cizí obsah (`is_mine: false`): vždy `Autor — [Název](URL) (datum)`401- V content souboru cizí text jako blockquote (`>`)402- Vlastní poznámky normálním textem403- Nikdy nemíchat bez jasného oddělení404405## Formát sources.json záznamu406407```json408{409 "id": "2026-04-07-001",410 "type": "article",411 "title": "Název",412 "url": "https://...",413 "author": "Jméno",414 "date_saved": "2026-04-07",415 "date_published": "2024-01-15",416 "tags": ["#tag1", "#tag2"],417 "is_mine": false,418 "content_file": "content/articles/2026-04-07-nazev.md",419 "summary": "Krátké shrnutí 2-3 věty.",420 "links": ["2026-04-02-003", "concept-deti-online"]421}422```423424## Session Harvest425426**Trigger:** Když uživatel řekne „hotovo / done / shrň session / co jsme vlastně udělali" — nebo na konci podstatné konverzace.427428Skill vyhodnotí:4294301. **Vytvořila session novou znalost?**431 - Nová analýza, rámec, rozhodnutí, syntéza, srovnání?432 - Odpověď na netriviální otázku, kterou stojí za to uchovat?433 - Skipni triviální session (bug fixy, formátování, krátké Q&A)4344352. **Pokud ANO, navrhni uložení jako:**436 - **Concept page** (`concepts/`) — pokud session prohloubila pochopení tématu, ke kterému už něco máme437 - **Insight** (`insights/`) — pokud session odhalila novou realizaci438 - **Decision** — pokud padlo důležité rozhodnutí (uložíme jako insight s tagem `#decision`)4394403. **Návrh formuluj krátce:**441 > „Tato session přinesla X. Uložit jako [concept/insight]?"4424434. **Po schválení:** spusť `/knihovnik insight` nebo `/knihovnik concept` workflow4444455. **Max 1 návrh za session** — nenuť uživatele.446447## Wikilinks v content tělech448449V markdownu uvnitř content souborů používej Obsidian-friendly syntax:450451```markdown452Tahle myšlenka navazuje na [[2026-04-02-001|Jinou poznámku]] a [[2026-04-02-002|Další]].453454Související koncept: [[concept-nazev]]455```456457**Pravidla:**458- `[[id]]` — link na zdroj/concept podle ID459- `[[id|alias]]` — link s vlastním textem460- Concept pages používají slug: `[[concept-nazev]]`461- Při exportu / čtení tyhle linky fungují jak v Obsidianu, tak je skill umí resolvovat462463## Důležité464465- **Vždy přečti** `sources.json` a `tags.json` PŘED zápisem466- **ID:** `YYYY-MM-DD-NNN` (datum + pořadí)467- **Slug:** lowercase, bez diakritiky, max 5 slov468- **Bidirectional links** — když A linkuje B, B musí linkovat A469- Po každé operaci potvrď uživateli **co se stalo + co se propojilo**470- Při save vždy NAVRHNI a nech schválit471- **Compound effect je core** — každý save by měl ideálně updatnout aspoň 1 existující entry (link) nebo concept page472473## Changelog474- **2026-07-02** — Frontmattery content souborů prohlášeny za zdroj pravdy, `sources.json` je derivovaný index. Nový příkaz `/knihovnik reindex` (rebuild po Drive konfliktu/driftu), health check rozšířen o drift indexu a Drive konflikt soubory. YouTube přepis odkázán na `/whspr` (konec duplikace whisper parametrů).