| name | lecture-notetaker-abbr |
| description | Generate Obsidian markdown study notes from lecture slides and transcripts, organized by learning objective, with a hoverable abbreviation glossary. Each slide is embedded via PDF++ with non-redundant transcript content, structured around evidence-based learning techniques (pre-questions, retrieval practice, elaborative interrogation, interleaved self-testing, spaced review). |
| disable-model-invocation | true |
Lecture Notetaker
Invocation
Manual only. Apply this skill only when the user invokes /lecture-notetaker-abbr or explicitly selects it. Do not load or run it based on conversation context alone.
Generate an Obsidian .md file organized by learning objective, with lecture slides embedded via PDF++ and transcript content filtered to only what the slide doesn't already show. The note structure uses pre-questions, foldable callouts for retrieval practice, elaborative interrogation prompts, interleaved self-testing, and a spaced review schedule.
Before starting
- Read
/mnt/skills/public/pdf-reading/SKILL.md for PDF handling.
- Read
references/output-template.md in this skill's directory — it contains the full output structure with a filled-in example. Follow it closely.
- If slides are
.pptx, also read /mnt/skills/public/pptx/SKILL.md.
Inputs required
| Input | Format | Required? |
|---|
| Lecture slides | .pdf | Yes (for PDF++ embeds) |
| Transcript | .txt, .srt, .md, or pasted | Yes |
| Learning objectives | List | Yes — ask if not provided |
| PDF filename in vault | String | Yes — ask if unclear |
If the user provides .pptx instead of .pdf, ask them to export as PDF (PDF++ requires it). If they can't, convert with soffice --headless --convert-to pdf.
If no learning objectives exist, infer 3-5 from the slide content and label them as inferred.
If no transcript exists, suggest references/transcriber-guide.md approaches or proceed with slides only.
Workflow
1. Extract slide text
Run the bundled extraction script:
python3 scripts/extract_slides.py <path-to-slides.pdf>
This outputs a JSON file at /tmp/slides_extracted.json with page count and per-page text. Use this for transcript alignment and redundancy filtering.
If the script fails, fall back to:
pdfinfo slides.pdf
pdftotext slides.pdf /tmp/slides-text.txt
2. Map slides → objectives
For each slide, determine which learning objective(s) it addresses. A slide can map to multiple objectives. Slides that map to none (title, admin, "questions?") go in a Supplementary section — unless the transcript adds useful content.
3. Segment transcript → slides
Walk the transcript linearly. Assign segments to slides by matching:
- Shared words/phrases between slide text and transcript
- Topic shifts aligning with slide transitions
- Marker phrases: "on this slide," "as you can see," "moving on"
For .srt transcripts, use timestamps for alignment.
4. Extract abbreviations
The goal: every abbreviation in the note becomes hoverable, so the user never has to context-switch to remember what something stands for.
Scan slides and transcript for introductions — usually parenthetical: "enteric nervous system (ENS)", or reversed: "ENS (enteric nervous system)". Build a map of ABBR → full term. Add discipline-standard abbreviations the slides use without expansion (e.g. CNS, ATP in biomed) from your own knowledge.
Tag every occurrence using <abbr title="full term">ABBR</abbr> — Obsidian renders this with a native browser tooltip, no plugin needed. Use context to disambiguate: if "MR" means magnetic resonance in one paragraph and mitral regurgitation in another, tag each with the locally-correct meaning. Same for English-word collisions like "IS" or "MAP" — only tag occurrences that are clearly the abbreviation in context.
On first appearance in the document, write it as <abbr title="full term">full term (ABBR)</abbr> so the introduction reads naturally. After that, plain ABBR inside the tag. Don't tag inside lecturer quotes (preserve verbatim) or inside the Abbreviations section itself.
5. Filter redundancy
For each slide, compare its extracted text against the corresponding transcript segment.
Keep transcript content that: explains why, gives examples/analogies/stories, adds caveats or nuance, connects to other topics, flags exam relevance, defines terms the slide only names, describes processes the slide only labels.
Drop transcript content that: restates slide bullets, is filler/admin, repeats content already captured under another slide.
6. Generate the markdown
Read references/output-template.md now if you haven't. Follow the template structure exactly. Key structural elements:
- Pre-question (
[!question]) before each objective — requires relational/causal thinking, not just definition recall
- Foldable slide callouts (
[!note]+) — the + makes them collapsible for retrieval practice
- Elaborative interrogation — bold "Why?" prompts after the most important or counterintuitive claims, 1-2 per slide section max
- Self-explanation — "Connect it:" prompts linking to other objectives or prior knowledge
- Answer-writing block (
[!question]+) — empty space for the student to type their answer to the focusing question
- Sample answer (
[!example]-) — collapsed-by-default model answer the student reveals after writing their own, for self-comparison
- Recall check (
[!success]) after each objective — specific instructions to fold callouts and self-test
- Interleaved self-test — end questions mixed across objectives, escalating: recall → comprehension → application → analysis
- Spaced review schedule — checkbox-based 1-3-7-14 day intervals
7. Deliver
Save the .md file and present it.
What makes a good pre-question
The pre-question is the single most impactful element — it primes attention and creates a retrieval target. Get it right.
- ❌ "What are glial cells?" → too simple, answerable by definition
- ✅ "Why can't neurons function without glial cells, and what would fail if specific subtypes were absent?" → requires understanding relationships
Write questions the student can't fully answer yet, but will be able to after reading the section. This productive struggle is what drives encoding.
What makes good redundancy filtering
This is the core value proposition — the student already has the slides. Don't repeat them.
Good — adds to the slide:
Professor used a highway on-ramp analogy to explain action potential propagation, which isn't shown on the slide's diagram.
Bad — restates the slide:
Action potentials propagate along the axon. (This is already a bullet point on the slide.)
If a slide's transcript is purely redundant, write: "The lecturer covered this slide directly — no additional context beyond what's shown."
What makes a good sample answer
The sample answer sits collapsed at the end of each objective so the student can write their own answer first, then unfold it to self-grade. It only earns its place if it's a real answer.
- ❌ "Glial cells support neurons in various ways including structural and functional roles." → vague, restates the question
- ❌ "See slide 8 for astrocyte functions." → not an answer
- ✅ A 3–6 sentence response that synthesises across the section's slides, names specific mechanisms, and addresses the relational part of the focusing question (the "why" or "what would happen if")
The answer should be derivable from the section's content (slides + transcript) — not reach beyond it. If the focusing question can't be answered from the section, the focusing question is wrong, not the sample answer.
Edge cases
| Situation | Action |
|---|
| Transcript only, no slides | Topic-based structure without embeds; all other elements still apply |
| Slides only, no transcript | Embed slides, expand with explanations, flag missing verbal context |
| 50+ slides | Split into multiple files by objective cluster, add index file |
| Poor transcript (STT errors) | Use slide text to correct obvious errors; flag unclear sections with ⚠️ |
| Objective not covered by any slide | Include section with gap warning and study suggestion |
| Abbreviation appears once with no expansion anywhere | If it's discipline-standard, expand from your own knowledge and flag it in the Abbreviations section as (inferred). If not, leave it untagged and note it in Gaps. |
References
| File | When to read |
|---|
references/output-template.md | Always — before generating output |
references/evidence-base.md | If you want to understand why the structure works |
references/transcriber-guide.md | If user needs help getting a transcript |