/gitbook-import — GitBook space → vault
🧒 When reporting to Anton end with a child-simple "In plain words" recap. (memory
eli5-always)
Turns a live GitBook space into atomic vault notes. Proven on the Palo Alto / AAA «C(H+A)RM» GitBook (85 pages, 10 chapters, 694 links, 0 broken). Pipeline + slug rules = memory [[palo-alto-gitbook-import]]. This is the GitBook source-adapter; for any other source use [[obsidian-ingest]].
Pipeline home: $IMPORTS_ROOT/gitbook/live/ — slugs.py (derive page URLs from TOC titles) + build_live.py (per-page notes + nav + concept links → live\md\). ⚠️ Both are **TEMPLATED for the Palo-Alto / AAA space** (org+space IDs, page-title list, pa-gitbook-NN slug, concepts, origin, MOC name are hardcoded; they do NOT read the <url>). So this command's clean path is refreshing the Palo-Alto GitBook. A different space = first edit those constants in the two scripts (or hand the raw pages to [[obsidian-ingest]]). There is no MOC-builder or copy-to-vault script — those steps are manual (see Steps 5–6).
Credential boundary (Anton must clear it once)
GitBook login is a boundary I can't pass alone. Anton logs into the GitBook org in Chrome (the Palo Alto org = bbplatinum Google acct), THEN I scrape. If not logged in → escalate per [[chrome-autonomy-self-drive]] (open the login page in its own window, ask Anton to sign in, then continue). Don't try to brute the login.
Steps
- Resolve pages: from the space URL, get the TOC;
python $IMPORTS_ROOT/gitbook/live/slugs.pyderives per-page URLs. GitBook slug rules: lowercase, space→-,&→and,(/)→-, apostrophes/quotes/$→dropped ($→usdonce), keep./+/digits. Wrong slug → 404 → recover via the "Next"-link walk from the prior good page. - Scrape (delegate to a Sonnet subagent — keep bulk text out of main context, [[model-routing-sonnet-grunt]]): the subagent drives Claude-in-Chrome: navigate + wait ~3s +
get_page_textper page, writes each topages\NN.txt, returns ONLY a short report (page count + any 404s). - Originals first ([[preserve-originals-rule]]): copy raw pages to
_originals\<space-slug>\live-pages-<date>\. Never delete. - Backup ([[vault-backup-rule]]):
python $IMPORTS_ROOT/vault_backup.py. - Build:
python $IMPORTS_ROOT/gitbook/live/build_live.py→ per-page notes (pa-gitbook-NN-*) + nav +_index.jsoninto **live\md\** (a staging dir, NOT the vault). Provenance is set by the script (origin: Palo Alto Research Lab); for a non-Palo-Alto space change that constant first. - Move into the vault + MOC (manual): copy the
md\*.mdnotes to05-Resources\<space-slug>\and build/refresh the chapter-grouped MOC there (no script does this — by hand or via [[obsidian-ingest]]). - Concept-link the NEW notes (mandatory per concept-creation-rules) — create concepts where the §1 threshold is met (≥3 repeats, noun-entity, domain-anchored); self-create, don't ask ([[capture-rules-into-bible]] reflex).
- Validate + reindex: link-check (expect BROKEN=0, 0 orphans), then
python $IMPORTS_ROOT/brain_embed_update.py --wait-gpu 10(or rely on nightly reindex).
Output
Pages imported · notes + MOC created · concepts added · links 0-broken/0-orphan confirmed. Then 🧒 recap. Re-import of an already-imported space = idempotent rebuild (md5 source vs _originals first, like [[crypto-essays-reimport-idempotent]]).
Like this skill? It is one of 100 in second-brain-starter-kit: the second brain we built for ourselves and run every day at Palo Alto AI Research Lab. Install the whole set with npx skills add tonydzi/second-brain-starter-kit. Everything is open source and free, so take what you need.
Flagships worth a look on their own: secondop-panel (a second opinion from a panel of external models), claude-memory-tidy (stop your agent's memory from rotting), telegram-mcp-kit (your own Telegram over MCP in about 15 minutes).
Author: Anton Dziatkovskii, Palo Alto AI Research Lab. Telegram @tonydzi - WhatsApp +1 341 222 9178 - X @Tony_Stef_
Engineers: want to test-drive this setup? Message me. I hand out free starter seeds to engineers who test and report back, and custom skill requests are welcome.