Turn a screen recording (or any video) into a multi-page PDF. A Claude Code skill with two modes:
--capture-all— scroll-aware capture for continuous content (a scrolling chat-history recording, a long-page scroll). Captures every message (一条不差, no skips) by measuring the scroll and keeping a frame each half-screen, so adjacent pages always overlap.--auto/ manual (--scene-threshold,--max-frames,--fps) — key-frame extraction for demos, tutorials, and click-throughs (keeps only the moments that change).
video.mp4 --extract_frames.py--> frame_*.jpg --frames_to_pdf.py--> output.pdf
pip install imageio-ffmpeg Pillow numpy img2pdf
# place this folder at ~/.claude/skills/screen-recording-to-pdf/No system ffmpeg needed (imageio-ffmpeg bundles one). Windows / macOS / Linux.
# chat-history recording -> PDF (every message captured)
python scripts/extract_frames.py chat.mp4 --capture-all \
| python scripts/frames_to_pdf.py --json - -o chat.pdf
# demo / tutorial -> PDF (key frames only)
python scripts/extract_frames.py demo.mp4 --auto \
| python scripts/frames_to_pdf.py --json - -o demo.pdfFull options (--overlap, --sample-fps, --scene-threshold, quality presets,
A4 output, troubleshooting) are in SKILL.md.
This project uses a mixed license — see LICENSE:
- Original work (
scripts/frames_to_pdf.py; the--capture-all/--auto/ pause-de-dup / ffmpeg-resolution additions inscripts/extract_frames.py;SKILL.md; thisREADME.md) © 2026 WDenlie, licensed under the PolyForm Noncommercial License 1.0.0. Non-commercial use is free with attribution; commercial use requires a separate license — contact WDenlie via WeChat (ID: WDenlie). - Upstream-derived code — the core frame-extraction logic in
scripts/extract_frames.py, plusreferences/video-frames-source.mdandreferences/llm-image-specs.md— is adapted/copied from mugnimaestra/video-frames-skill and remains under the MIT License (commercial use of those portions is permitted by MIT and cannot be revoked).
Runtime dependencies are not bundled and are pip-installed by the user:
imageio-ffmpeg (BSD-2-Clause), Pillow (PIL License), numpy (BSD-3-Clause),
img2pdf (LGPL-3.0-or-later), and ffmpeg (GPL, invoked only as an external
subprocess — never linked or redistributed). See
references/THIRD-PARTY-LICENSES.md.
Not legal advice. Have counsel review before commercial use.