Paper Slides to Video
The public entrypoint is:
<SKILLS_DIR>/paper-slides-to-video/scripts/slides_to_video.py
Run it with the package environment:
uv run --project <SKILLS_DIR>/paper-slides-to-video python <SKILLS_DIR>/paper-slides-to-video/scripts/slides_to_video.py <subcommand>
Exact CLI
render PDF FRAME_DIR [--dpi 200]plan TEXnarrations FRAME_DIR TEX --annotated-tex ANNOTATED_TEXtts FRAME_DIR [--lang zh]assemble FRAME_DIR OUTPUT [--pad-sec 0.5] [--speed 1.25]cover FIRST_FRAME OUTPUTmetadata TEX COVER OUTPUTfull PAPER_DIR --annotated-tex ANNOTATED_TEX
Required full workflow
- Compile
slides-beamer/main.pdfbefore invoking this package. - Copy
slides-beamer/main.textovideo/main_with_narration.texand add one nonempty% NARRATION:annotation for every rendered physical page. This per-physical-page contract is what keeps landscape and portrait renders in sync: both orientations are assembled from the same PDF pages, so narration/audio cardinality gates apply equally to each orientation. - Run
fullwith the annotated TeX path.
uv run --project <SKILLS_DIR>/paper-slides-to-video python <SKILLS_DIR>/paper-slides-to-video/scripts/slides_to_video.py full "<PAPER_DIR>" --annotated-tex "<PAPER_DIR>/video/main_with_narration.tex"
full removes any stale narrated output before processing. It requires exact PNG/TXT/MP3 cardinality, nonempty narration and audio, probeable positive audio durations, and an assembled MP4 containing both video and audio streams. A missing narration or MP3 exits nonzero and cannot leave a narrated result.
Tool discovery
PDFTOPPMorPOPPLER_DIR(directory containingpdftoppm), thenPATHFFMPEG, thenPATHFFPROBE, thenPATHEDGE_TTS_BIN, thenPATH
Silence is never implicit. Programmatic callers may create a deliberately silent page only by calling encode_slide(..., require_audio=False). The public default is require_audio=True.
Outputs are written under <PAPER_DIR>/video/: video_frames/, <paper>_narrated.mp4, cover.png, frames_data.json, narrations.json, and video_meta.json.
Related skills
- skill://batch-papers-single-omp-full-pipeline
- skill://batch-slides-to-video
- skill://blog-to-bilibili
- skill://edge-tts-retry-video-driver
- skill://index-tts-fallback