This skill should be used when the user asks to "convert lecture recordings into notes", "transcribe class videos", "match transcripts to slides", "summarize a lecture from recording and slides", or "generate lecture notes with notifications and TODOs".
Convert course recordings into structured English lecture notes by running the provided scripts (video -> audio -> transcript), matching transcripts to slide PDFs, and summarizing the content into a fixed note template that highlights key points, notifications, TODOs, and attendance checks.
Use this skill to operationalize a repeatable workflow for course note generation in this repository.
data/notes/ for traceability.Maintain the following folder structure under :
data/data/video/ - Raw lecture recordings (mp4/mov/etc.)data/audio/ - Extracted audio files (wav)data/transcripts/ - Text transcripts from audiodata/class_slides/ - Lecture slide PDFsdata/notes/ - Final lecture notes and slide matchesCreate missing folders before running scripts. Keep file names consistent across stages (video -> audio -> transcript) to simplify matching.
scripts/video2audio.py - Convert videos to audio with optional silence removal.scripts/audio2text.py - Transcribe audio using faster-whisper; supports chunking.scripts/find_matched_slides.py - Retrieve top-matching slide PDFs for a transcript.Check that data/ exists and has required subfolders. Create any missing folders.
Confirm that dependencies are available:
ffmpeg and ffprobe on PATH.faster-whisper, torch (if using Silero VAD), pymupdf, sentence-transformers.data/video/.data/class_slides/.data/transcripts/ (or data/rawtexts/ for legacy data).Prefer consistent naming, e.g. week2_lecture.mp4 -> week2_lecture.wav -> week2_lecture.txt.
Convert lecture videos to audio files:
uv run scripts/video2audio.py \
--input-dir data/video \
--output-dir data/audio \
--silence-backend silero
Transcribe audio into text:
uv run scripts/audio2text.py \
--input-dir data/audio \
--output-dir data/transcripts \
--model base \
--chunk-minutes 30 \
--chunk-overlap-minutes 0.2 \
--parallel-workers 2 \
--language en \
--device cpu \
--compute-type int8
Open the generated transcript in data/transcripts/ and scan for:
If needed, re-run with adjusted parameters:
--min-silence-duration or lower --silence-threshold-db.--model to a larger Whisper model.--chunk-minutes for long lectures.Use the slide matching script:
uv run scripts/find_matched_slides.py \
--mode hybrid \
--hybrid-weight 0.7 \
--transcript data/transcripts/week2_lecture.txt \
--slides-dir data/class_slides \
--top-k 5
Record the results in data/notes/ for reference and use the top results as context when summarizing.
Combine the transcript and the most relevant slides into a concise English note that follows the structure and tone of example_note.md. Keep the output short, factual, and actionable. Use markdown headings and bullet points where appropriate.
Lesson Recap
Key Takeaways By Teacher
Important Notification
TODO
Attendance Check
Write the final notes to data/notes/<lecture_name>_notes.md.
Optionally store slide matches to data/notes/<lecture_name>_slides.txt.
faster-whisper and its dependencies.--mode keyword.--mode hybrid and tune --hybrid-weight.scripts/video2audio.py - Video to audio conversion and silence removal.scripts/audio2text.py - Faster-whisper transcription with chunking.scripts/find_matched_slides.py - Slide matching with vector/keyword/hybrid retrieval.