Asi nblm-flashcards
Generate and drill flashcards from NotebookLM Enterprise notebooks via Gemini (Vertex AI), with Emacs UI and babashka backfill pipeline
install
source · Clone the upstream repo
git clone https://github.com/plurigrid/asi
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/nblm-flashcards" ~/.claude/skills/plurigrid-asi-nblm-flashcards && rm -rf "$T"
manifest:
skills/nblm-flashcards/SKILL.mdsource content
NotebookLM Enterprise Flashcard Generator + Drill
Trit: +1 (PLUS — knowledge extraction and spaced repetition from notebook sources)
What This Does
Extracts knowledge from the entire plurigrid/bmorphism ecosystem (1,244 repos across 5 NBLM notebooks) into drillable flashcards.
GitHub repos (1,244 total) | v DeepWiki URLs → NBLM Enterprise (5 notebooks × 300 sources) | v Discovery Engine API → fetch source titles | v Gemini 2.5 Flash (Vertex AI) → batched generation | 5 sources/batch, 10 cards/source, token auto-refresh v flashcards.json + quiz.json (per notebook) | v bb n/nblm_merge.bb → all-flashcards.json (deduped) | v Emacs drill (M-x nblm-drill-all)
Interaction with notebooklm-enterprise skill
This skill is the consumer of notebooks managed by
notebooklm-enterprise:
| notebooklm-enterprise (ERGODIC) | nblm-flashcards (PLUS) |
|---|---|
| Creates notebooks | Reads notebook sources |
| Adds DeepWiki URLs as sources | Generates flashcards from sources |
| Manages source ingestion status | Batches Gemini calls per source |
| Shares notebooks with users | Merges decks across notebooks |
GF(3) Triad
notebooklm-enterprise (0) + nblm-flashcards (+1) + [verifier] (-1) = 0
The verifier role is filled by the Emacs drill itself — missed cards feed back as verification signal.
Notebooks (as of 2026-03-25)
| Notebook | ID | Sources | Role |
|---|---|---|---|
| Original | | 300 | bmorphism + plurigrid core |
| Backfill 1/4 | | 300 | Gap repos chunk 1 |
| Backfill 2/4 | (see backfill-state.json) | 300 | Gap repos chunk 2 |
| Backfill 3/4 | | 300 | Gap repos chunk 3 |
| Backfill 4/4 | | 44 | Gap repos chunk 4 |
Pipeline
All scripts live in
~/worlds/n/:
# Generate flashcards from a single notebook hy n/nblm_flashcards.hy --notebook-id <UUID> --per-source 10 --batch-size 5 # Backfill: create notebooks for uncovered repos bb n/nblm_backfill.bb # create + add sources bb n/nblm_backfill.bb --status # check ingestion bb n/nblm_backfill.bb --generate # generate flashcards per notebook # Merge all decks bb n/nblm_merge.bb # Drill in Emacs emacs -nw --load ~/worlds/n/nblm-drill.el # M-x nblm-drill-all (full merged deck) # M-x nblm-drill-repo (filter by org/repo)
Key Parameters
| Arg | Default | What |
|---|---|---|
| 10 | Flashcards per notebook source |
| 5 | Sources per Gemini call (50 cards/call sweet spot) |
| hard | easy / medium / hard |
| gemini-2.5-flash | Vertex AI model |
Architecture
- Token auto-refreshes every 30 min (gcloud tokens expire at 1hr)
- Truncated JSON repaired by finding last complete
and closing array} - Discovery Engine
for notebook source listingv1alpha - Gemini via Vertex AI REST (
), regiongenerateContentus-central1
,maxOutputTokens: 65536temperature: 0.7- GCP project:
(302712368086)merovingians
Ecosystem Coverage
| Org | Repos | Coverage |
|---|---|---|
| 406 | 100% (across original + backfill) |
| 586 | 100% (across original + backfill) |
| Third-party | 131 | 100% (backfill chunks 1-4) |
| Total | 1,244 | 100% |
Related Skills
— NBLM API (notebook CRUD, source management)notebooklm-enterprise
— DeepWiki documentation for source URLsdeepwiki-mcp
— Pipeline orchestration (backfill, merge)babashka
— Repo discovery for gap analysisgh-cli
— Author/repo network for cross-repo flashcardsgh-interactome