pi/agent/skills/slopcast/SKILL.md
Render lecture videos from Beamer PDFs and pdfpc speaker notes via the slopcast pipeline (slide.pdf → segments.json → audio → clips → final/lecture.mp4) with Qwen3-TTS voice cloning and optional split-screen livecode. Use to generate, re-render, or splice slopcast lecture videos, or to author Beamer notes for slopcast.
npx skillsauth add krystophny/prompts slopcastInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Automated lecture videos from Beamer PDFs with pdfpc speaker notes plus a reference voice WAV. Pipeline: slide.pdf → segments.json → audio/ → clips/ → final/lecture.mp4. Voice cloning via Qwen3-TTS, optional split-screen livecode segments.
Use this skill when the user asks to render a lecture video, re-render selected slides, splice clips, or author Beamer notes for slopcast.
Repo: ~/code/sloppy/slopcast. Driver: ./generate_lecture.sh.
./generate_lecture.sh path/to/slide.pdf path/to/reference.wav
Output goes to slopcast/<lecture-key>/{segments.json, audio/, clips/, final/}. Clips are content-hashed: re-running only redoes what changed.
--slides 36-38 # work on a slide range
--pages 1-20 # PDF page range
--rerender-clips 3,5-7 # re-render selected clips, reuse audio
--patch-into lecture.mp4 # splice the rendered range into an existing video
--merge-clips # produce final/lecture.mp4 (default stops after clips)
--pacing natural|flat
--ref-text "transcript of the reference WAV"
-o out.mp4
--lecture-key foo
./generate_lecture.sh --help lists the full set.
Use the \autonote macro (preamble in the slopcast CLAUDE.md) instead of bare \note<N> — it auto-captures the current overlay number and avoids a known duplication bug.
\autonote{[moderate] Die Sprungfunktion springt um eins, wenn x positiv wird.}
\pause
\autonote{[simple] Formal: Theta von x.}
Complexity tags drive pause timing:
| Tag | Pause after | Lead-in |
|---|---|---|
| [trivial] | 0.5 s | 0.5 s |
| [simple] | 1.5 s | 0.8 s |
| [moderate] (default) | 3.0 s | 1.0 s |
| [complex] | 5.0 s | 1.5 s |
End-of-slide bonus: +1.0 s. Write umlauts as UTF-8 (ä ö ü ß), not LaTeX escapes.
\note{[livedemo:livecode/accumulator.py]}
Renders a split-screen segment: real python3 execution, terminal typing animation, mechanical keyboard sounds.
sudo pacman -S ffmpeg poppler python # or apt/brew equivalents
pip install -r requirements.txt pygments keyboardsounds
QWEN3_TTS_PYTHON should point at a venv with Qwen3-TTS installed (default: ../slopshell/tools/qwen3-tts/.venv/bin/python). A 5+ minute reference WAV of the target voice is required.
data-ai
Delegate a bulk-work subtask to the local Qwen via one-shot pi run. Use when the subtask is high-volume but low-complexity (file scans, log parsing, large-text summaries, repetitive transforms) so it should not burn parent-model tokens.
development
Delegate a bulk-work subtask to the local Qwen via one-shot opencode run. Use when the subtask is high-volume but low-complexity (file scans, log parsing, large-text summaries, repetitive transforms) so it should not burn parent-model tokens.
development
ETL pipeline that imports manually-downloaded Discord, LinkedIn, and WhatsApp archive ZIPs into the user's brain vaults as plain files (no APIs, no tokens, no daemons). Use when the task involves processing or querying a Discord/LinkedIn/WhatsApp data export.
tools
The user's email, contacts, personal tasks/todos, and full-CRUD Google + EWS calendars. Drives the sloptools CLI (same surface as the sloppy MCP on 127.0.0.1:9420). Use for mail (Gmail / Exchange-EWS / IMAP — list, read, send, reply, forward, flag, categorize, server-side filters, delegated mailboxes, out-of-office), calendar events (create / update / delete / RSVP / freebusy / ICS export across work + private accounts), contacts and contact groups, tasks (Google Tasks, Todoist), slopshell canvas, agent handoffs, and workspace items/artifacts/actors/triage.