Individual skill
notebook-video
Turn a topic into a Chinese 16:9 teaching video (flat / cel component themes, or the journal / papercut / archive hand-made skins driven by a metaphor-first director layer) with React, TypeScript and Remotion. Every shot fuses up to three layers: code-drawn components (consoles, diffs, checklists, stat rows, charts), a skin-matched line drawing of the thing being explained (30 built-in sketches, seven verbs), and hand annotations (circle / underline / arrow / note) that connect the two; an engine-level virtual camera frames it without cropping the sketch. Eight recipes let a weak model fill content only. Weak-model friendly: five teaching blueprints with per-shot component picks, golden examples, a five-step workflow and one cross-platform command (`node scripts/make-video.mjs <project>`, `make-video.cmd` on Windows) that resolves shots, runs hard gates with objective auto-fixes (no clipped titles, font floor, text contrast, ≤16-character captions at 4.5 chars/s, no dead tails, blurry-media check) and renders stills or the MP4. Tuned semantic sound effects land on the visual hit; no BGM by default. Every topic first searches Wikimedia Commons / Openverse for licence-filtered real media with automatic on-screen credits. TTS narration (edge-tts or your own recording) drives caption and shot timing; no image-generation model. Use when the user asks to 做科普视频, 讲解视频, 概念讲解, 代码讲解, 数据对比视频, 流程讲解, 踩坑提醒, 产品讲解, 30 秒到数分钟的中文讲解短片, 或把一段文字讲解做成 MP4.
SKILL.md
Source commit 839813d99bcf9a23cacdf74504a05e92e0bb090c
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- No
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Not checked yet
- Last checked
- Nov 6, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 10
- Repository last updated
- Nov 4, 2026
- License
- Apache-2.0
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- ai-video Repository topic
- chinese Repository topic
- explainer-video Repository topic
- remotion Repository topic
- text-to-speech Repository topic
- typescript Repository topic
- video-automation Repository topic
- agent-skills Repository topic
- motion-graphics Repository topic
- subtitles Repository topic
- design Derived category
- operations Derived category
- writing Derived category
- education Derived category
- engineering Derived category
- engineering-web Derived category
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
.editorconfigasset · 268 bytes.gitattributesasset · 144 bytes.github/ISSUE_TEMPLATE/bug_report.ymlasset · 1,122 bytes.github/ISSUE_TEMPLATE/config.ymlasset · 230 bytes.github/ISSUE_TEMPLATE/feature_request.ymlasset · 726 bytes.github/pull_request_template.mddoc · 674 bytes.github/repository-metadata.ymlasset · 715 bytes.github/workflows/validate.ymlasset · 9,045 bytes.gitignoreasset · 586 bytesCHANGELOG.mddoc · 406,004 bytesCODE_OF_CONDUCT.mddoc · 1,476 bytesCONTRIBUTING.mddoc · 1,551 bytesCONTRIBUTORS.mddoc · 503 bytesCROSS-PLATFORM-ADAPTATION.mddoc · 2,533 bytesDEPENDENCIES.mddoc · 6,450 bytesLICENSEasset · 11,358 bytesNOTICEasset · 9,421 bytesREADME.en.mddoc · 22,653 bytesREADME.mddoc · 21,226 bytesRELEASE_NOTES_3.3.0.mddoc · 6,879 bytesSECURITY.mddoc · 776 bytesSKILL.mdcore · 20,473 bytesSKILL.mdcore · 20,473 bytesSKILL.mdcore · 20,473 bytesSKILL.mdcore · 20,473 bytesSKILL.mdcore · 20,473 bytesSKILL.mdcore · 20,473 bytesSKILL.mdcore · 20,473 bytesSKILL.mdcore · 20,473 bytesSKILL.mdcore · 20,473 bytesSKILL.mdcore · 20,473 bytesSUPPORT.mddoc · 3,124 bytesagents/openai.yamlasset · 700 bytesassets/fonts/LICENSE-OFL-1.1-LXGW.txtdoc · 5,176 bytesassets/fonts/LICENSE-OFL-1.1-NotoSerifSC.txtdoc · 4,301 bytesassets/lecture-template/.gitignoreasset · 391 bytesassets/lecture-template/REMOTION-LICENSE-NOTICE.mddoc · 633 bytesassets/lecture-template/audio/README.mddoc · 472 bytesassets/lecture-template/audio/narration.mp3.jsonasset · 9,879 bytesassets/lecture-template/manifests/asset-manifest.jsonasset · 10,810 bytesassets/lecture-template/manifests/backgrounds.jsonasset · 50,947 bytesassets/lecture-template/manifests/caption-cues.jsonasset · 18,471 bytesassets/lecture-template/manifests/commons-log.jsonasset · 1,009 bytesassets/lecture-template/manifests/media.jsonasset · 14 bytesassets/lecture-template/manifests/protected-caption-phrases.txtdoc · 95 bytesassets/lecture-template/manifests/semantic-caption-lines.txtdoc · 446 bytesassets/lecture-template/manifests/shots.jsonasset · 8,446 bytesassets/lecture-template/manifests/shots.resolved.jsonasset · 17,055 bytesassets/lecture-template/manifests/treatment.example.jsonasset · 3,152 bytesassets/lecture-template/manifests/treatment.jsonasset · 7,141 bytesassets/lecture-template/manifests/visual-assets.jsonasset · 11,969 bytesassets/lecture-template/narration.txtdoc · 440 bytesassets/lecture-template/package-lock.jsonasset · 240,615 bytesassets/lecture-template/package.jsonruns · 2,166 bytesassets/lecture-template/public/bg/bg-archive-chapter.jpgasset · 300,968 bytesassets/lecture-template/public/bg/bg-archive-main.jpgasset · 300,844 bytesassets/lecture-template/public/bg/bg-archive-quiet.jpgasset · 280,802 bytesassets/lecture-template/public/bg/bg-cel-chapter.jpgasset · 249,436 bytesassets/lecture-template/public/bg/bg-cel-main.jpgasset · 250,565 bytesassets/lecture-template/public/bg/bg-cel-quiet.jpgasset · 219,557 bytesassets/lecture-template/public/bg/bg-flat-chapter.jpgasset · 125,619 bytesassets/lecture-template/public/bg/bg-flat-main.jpgasset · 155,029 bytesassets/lecture-template/public/bg/bg-flat-quiet.jpgasset · 149,407 bytesassets/lecture-template/public/bg/bg-journal-chapter.jpgasset · 499,860 bytesassets/lecture-template/public/bg/bg-journal-main.jpgasset · 503,583 bytesassets/lecture-template/public/bg/bg-journal-quiet.jpgasset · 474,464 bytesassets/lecture-template/public/bg/bg-papercut-chapter.jpgasset · 484,182 bytesassets/lecture-template/public/bg/bg-papercut-main.jpgasset · 460,149 bytesassets/lecture-template/public/bg/bg-papercut-quiet.jpgasset · 460,216 bytesassets/lecture-template/public/bg/lib/archive-catalog.webpasset · 35,438 bytesassets/lecture-template/public/bg/lib/archive-envelope.webpasset · 79,366 bytesassets/lecture-template/public/bg/lib/archive-filmstrip.webpasset · 25,124 bytesassets/lecture-template/public/bg/lib/archive-ledger.webpasset · 31,396 bytesassets/lecture-template/public/bg/lib/archive-linen.webpasset · 231,816 bytesassets/lecture-template/public/bg/lib/archive-map.webpasset · 106,106 bytesassets/lecture-template/public/bg/lib/archive-newsprint.webpasset · 31,674 bytesassets/lecture-template/public/bg/lib/archive-vellum.webpasset · 30,292 bytesassets/lecture-template/public/bg/lib/cel-halftone.webpasset · 278,870 bytesassets/lecture-template/public/bg/lib/cel-panels.webpasset · 17,978 bytesassets/lecture-template/public/bg/lib/cel-screentone.webpasset · 103,102 bytesassets/lecture-template/public/bg/lib/cel-speedlines.webpasset · 90,158 bytesassets/lecture-template/public/bg/lib/cel-sunburst.webpasset · 41,022 bytesassets/lecture-template/public/bg/lib/flat-dotgrid.webpasset · 39,386 bytesassets/lecture-template/public/bg/lib/flat-mesh-dawn.webpasset · 101,954 bytesassets/lecture-template/public/bg/lib/flat-mesh-mint.webpasset · 115,684 bytesassets/lecture-template/public/bg/lib/flat-shapes.webpasset · 9,046 bytesassets/lecture-template/public/bg/lib/flat-sunrise.webpasset · 13,896 bytesassets/lecture-template/public/bg/lib/journal-dots.webpasset · 41,692 bytesassets/lecture-template/public/bg/lib/journal-graph.webpasset · 92,402 bytesassets/lecture-template/public/bg/lib/journal-grid.webpasset · 106,984 bytesassets/lecture-template/public/bg/lib/journal-kraft.webpasset · 98,328 bytesassets/lecture-template/public/bg/lib/journal-oldpage.webpasset · 56,228 bytesassets/lecture-template/public/bg/lib/journal-ruled.webpasset · 80,738 bytesassets/lecture-template/public/bg/lib/journal-sticky.webpasset · 24,502 bytesassets/lecture-template/public/bg/lib/journal-watercolor.webpasset · 221,502 bytesassets/lecture-template/public/bg/lib/papercut-cloud.webpasset · 55,526 bytesassets/lecture-template/public/bg/lib/papercut-hongzhi.webpasset · 62,596 bytesassets/lecture-template/public/bg/lib/papercut-kraft.webpasset · 72,830 bytesassets/lecture-template/public/bg/lib/papercut-lattice.webpasset · 57,602 bytesassets/lecture-template/public/bg/lib/papercut-menjian.webpasset · 53,790 bytesassets/lecture-template/public/bg/lib/papercut-origami.webpasset · 37,506 bytesassets/lecture-template/public/bg/lib/papercut-sajin.webpasset · 109,048 bytesassets/lecture-template/public/bg/lib/papercut-xuan.webpasset · 143,798 bytesassets/lecture-template/public/craft/craft-manifest.jsonasset · 163 bytesassets/lecture-template/public/craft/fibre-tile.pngasset · 378,206 bytesassets/lecture-template/public/fonts/Caveat-Latin.woff2asset · 74,932 bytesassets/lecture-template/public/fonts/ClashDisplay-Bold.woff2asset · 14,544 bytesassets/lecture-template/public/fonts/ClashDisplay-Medium.woff2asset · 15,272 bytesassets/lecture-template/public/fonts/ClashDisplay-Semibold.woff2asset · 15,284 bytesassets/lecture-template/public/fonts/SpaceGrotesk-Latin.woff2asset · 22,288 bytesassets/lecture-template/public/media/.gitkeepasset · 0 bytesassets/lecture-template/public/sfx/LICENSE.txtdoc · 1,275 bytesassets/lecture-template/public/sfx/lib/bed.oggasset · 63,152 bytesassets/lecture-template/public/sfx/lib/chapter.oggasset · 12,421 bytesassets/lecture-template/public/sfx/lib/chart.oggasset · 6,507 bytesassets/lecture-template/public/sfx/lib/click.oggasset · 3,879 bytesassets/lecture-template/public/sfx/lib/error.oggasset · 5,408 bytesassets/lecture-template/public/sfx/lib/highlight.oggasset · 5,291 bytesassets/lecture-template/public/sfx/lib/latch.oggasset · 6,619 bytesassets/lecture-template/public/sfx/lib/page.oggasset · 9,740 bytesassets/lecture-template/public/sfx/lib/place.oggasset · 6,810 bytesassets/lecture-template/public/sfx/lib/pop.oggasset · 4,849 bytesassets/lecture-template/public/sfx/lib/riser.oggasset · 12,665 bytesassets/lecture-template/public/sfx/lib/rustle.oggasset · 7,833 bytesassets/lecture-template/public/sfx/lib/snip.oggasset · 7,944 bytesassets/lecture-template/public/sfx/lib/stamp.oggasset · 6,438 bytesassets/lecture-template/public/sfx/lib/success.oggasset · 6,467 bytesassets/lecture-template/public/sfx/lib/typing.oggasset · 8,667 bytesassets/lecture-template/public/sfx/lib/whoosh.oggasset · 5,888 bytesassets/lecture-template/public/sfx/sfx-manifest.jsonasset · 13,131 bytesassets/lecture-template/remotion-network-shim.cjsruns · 253 bytesassets/lecture-template/scripts/speed-post.pyruns · 1,700 bytesassets/lecture-template/scripts/tts-openai-compatible.pyruns · 8,577 bytesassets/lecture-template/src/audio-config.tsruns · 222 bytesassets/lecture-template/src/auto.tsxruns · 20,983 bytesassets/lecture-template/src/canvas-bounds-gate.tsxruns · 14,043 bytesassets/lecture-template/src/caption-cues.jsonasset · 18,471 bytesassets/lecture-template/src/caption-gap.tsruns · 1,077 bytesassets/lecture-template/src/cinema.tsxruns · 24,507 bytesassets/lecture-template/src/clipping-gate.tsxruns · 12,139 bytesassets/lecture-template/src/components/chart.tsxruns · 25,942 bytesassets/lecture-template/src/components/data.tsxruns · 33,024 bytesassets/lecture-template/src/components/effects.tsxruns · 5,733 bytesassets/lecture-template/src/components/fittext.tsxruns · 14,776 bytesassets/lecture-template/src/components/focus.tsxruns · 10,628 bytesassets/lecture-template/src/components/index.tsruns · 6,468 bytesassets/lecture-template/src/components/network.tsxruns · 9,256 bytesassets/lecture-template/src/components/overlay.tsxruns · 9,553 bytesassets/lecture-template/src/components/pathfx.tsxruns · 15,601 bytesassets/lecture-template/src/components/shiki.tsruns · 5,851 bytesassets/lecture-template/src/components/sketch.tsxruns · 10,247 bytesassets/lecture-template/src/components/ui.tsxruns · 39,593 bytesassets/lecture-template/src/craft-sheet.tsxruns · 8,448 bytesassets/lecture-template/src/craft/index.tsruns · 603 bytesassets/lecture-template/src/craft/ink.tsxruns · 13,953 bytesassets/lecture-template/src/craft/lens.tsxruns · 5,507 bytesassets/lecture-template/src/craft/media.tsxruns · 15,334 bytesassets/lecture-template/src/craft/paper.tsxruns · 9,933 bytesassets/lecture-template/src/custom/RequestLane.tsxruns · 3,050 bytesassets/lecture-template/src/custom/index.tsruns · 1,321 bytesassets/lecture-template/src/external-types.d.tsruns · 3,070 bytesassets/lecture-template/src/fill-gate.tsxruns · 14,960 bytesassets/lecture-template/src/film.tsruns · 614 bytesassets/lecture-template/src/fonts.tsxruns · 4,220 bytesassets/lecture-template/src/fx.tsxruns · 5,629 bytesassets/lecture-template/src/fxkit.tsxruns · 21,950 bytesassets/lecture-template/src/index.tsxruns · 39,014 bytesassets/lecture-template/src/insert.tsxruns · 4,982 bytesassets/lecture-template/src/kit.tsxruns · 4,097 bytesassets/lecture-template/src/linework/library.tsruns · 11,711 bytesassets/lecture-template/src/linework/sketch.tsxruns · 12,278 bytesassets/lecture-template/src/linework/types.tsruns · 2,696 bytesassets/lecture-template/src/mascot-gate.tsxruns · 3,751 bytesassets/lecture-template/src/media-frame.tsxruns · 10,296 bytesassets/lecture-template/src/media.jsonasset · 14 bytesassets/lecture-template/src/media.tsxruns · 16,978 bytesassets/lecture-template/src/overlap-gate.tsxruns · 25,208 bytesassets/lecture-template/src/scenes.tsxruns · 21,349 bytesassets/lecture-template/src/sfx.tsruns · 12,217 bytesassets/lecture-template/src/shotkit.tsxruns · 14,189 bytesassets/lecture-template/src/shots.tsruns · 7,910 bytesassets/lecture-template/src/showcase.tsxruns · 61,231 bytesassets/lecture-template/src/skeletons.tsxruns · 22,112 bytesassets/lecture-template/src/stagekit.tsxruns · 14,873 bytesassets/lecture-template/src/story.tsruns · 196 bytesassets/lecture-template/src/theme/active.tsruns · 339 bytesassets/lecture-template/src/theme/archive.tsxruns · 5,158 bytesassets/lecture-template/src/theme/canvas.tsruns · 900 bytesassets/lecture-template/src/theme/cel.tsxruns · 8,428 bytesassets/lecture-template/src/theme/craft-common.tsxruns · 4,455 bytesassets/lecture-template/src/theme/flat.tsxruns · 7,368 bytesassets/lecture-template/src/theme/journal.tsxruns · 5,804 bytesassets/lecture-template/src/theme/papercut.tsxruns · 5,738 bytesassets/lecture-template/src/theme/types.tsruns · 7,366 bytesassets/lecture-template/src/toolkit.tsxruns · 9,335 bytesassets/lecture-template/storyboard.mddoc · 2,166 bytesassets/lecture-template/sync-render-inputs.cjsruns · 1,789 bytesassets/lecture-template/tsconfig.jsonasset · 508 bytesassets/vendor/README.mddoc · 3,038 bytesassets/vendor/budoux/LICENSEasset · 11,307 bytesassets/vendor/budoux/module/data/models/zh-hans.jsruns · 75,735 bytesassets/vendor/budoux/module/index.jsruns · 1,826 bytesassets/vendor/budoux/module/package.jsonruns · 17 bytesassets/vendor/budoux/module/parser.jsruns · 4,212 bytesblueprints/code-change.jsonasset · 5,712 bytesblueprints/concept.jsonasset · 4,686 bytesblueprints/data-compare.jsonasset · 4,003 bytesblueprints/experiment.jsonasset · 4,274 bytesblueprints/kishotenketsu.jsonasset · 3,943 bytesblueprints/medium-metaphor.jsonasset · 5,393 bytesblueprints/mystery.jsonasset · 4,441 bytesblueprints/pitfall.jsonasset · 3,990 bytesblueprints/process.jsonasset · 5,216 bytesblueprints/scale-ladder.jsonasset · 4,263 bytesexamples/code-change-cache.story.jsonasset · 4,326 bytesexamples/concept-hash-table.story.jsonasset · 2,325 bytesexamples/data-ssd-vs-hdd.story.jsonasset · 2,157 bytesexamples/handmade-golden.mddoc · 1,673 bytesexamples/real-media/git-pr.story.jsonasset · 1,378 bytesexamples/real-media/pr-placeholder.pngasset · 10,881 bytesexamples/recipes/annotated.story.jsonasset · 830 bytesexamples/recipes/data-with-object.story.jsonasset · 657 bytesexamples/recipes/list-icons.story.jsonasset · 570 bytesexamples/recipes/rocket-fusion.story.jsonasset · 4,102 bytesexamples/regress/rocket-components-only.story.jsonasset · 1,289 bytesexamples/weak-model-test/float.story.jsonasset · 2,291 bytesexamples/weak-model-test/stills-before-fix.jpgasset · 193,328 bytesmanifest.jsonasset · 186 bytesreferences/INDEX.mddoc · 2,492 bytesreferences/auto-engine.mddoc · 4,813 bytesreferences/background-library.mddoc · 16,081 bytesreferences/camera-language.mddoc · 5,934 bytesreferences/canvas-modes.mddoc · 1,930 bytesreferences/cinema-camera.mddoc · 6,451 bytesreferences/commons-media.mddoc · 5,501 bytesreferences/composition-gate.mddoc · 29,089 bytesreferences/craft-kit.mddoc · 8,767 bytesreferences/cross-platform-compatibility.mddoc · 2,899 bytesreferences/dependency-policy.mddoc · 34,049 bytesreferences/director-method.mddoc · 11,027 bytesreferences/fx-effects.mddoc · 8,320 bytesreferences/fxkit.mddoc · 12,864 bytesreferences/handwritten-scenes.mddoc · 28,464 bytesreferences/html-capture.mddoc · 1,213 bytesreferences/independent-parts.mddoc · 2,239 bytesreferences/lecture-composition.mddoc · 8,245 bytesreferences/linework.mddoc · 6,426 bytesreferences/locked-style-contract.jsonasset · 14,094 bytesreferences/media-routing.mddoc · 42,207 bytesreferences/motion-design.mddoc · 12,416 bytesreferences/narrative-hook.mddoc · 5,859 bytesreferences/narrative-moves.mddoc · 10,572 bytesreferences/official-aesthetic-system.mddoc · 8,381 bytesreferences/official-skills-exemplar.mddoc · 3,047 bytesreferences/pacing-rhythm.mddoc · 3,638 bytesreferences/performance-design.mddoc · 4,687 bytesreferences/presentation-gate.mddoc · 19,972 bytesreferences/quality-checklist.mddoc · 10,933 bytesreferences/real-media.mddoc · 5,491 bytesreferences/recipes.mddoc · 4,014 bytesreferences/remotion-architecture.mddoc · 7,791 bytesreferences/scene-authoring.mddoc · 10,693 bytesreferences/scene-skeletons.mddoc · 9,461 bytesreferences/sfx-library.mddoc · 5,154 bytesreferences/shot-language.mddoc · 9,375 bytesreferences/style-recipes.mddoc · 6,920 bytesreferences/subtitle-timing.mddoc · 10,679 bytesreferences/theme-archive.mddoc · 2,935 bytesreferences/theme-cel.mddoc · 5,483 bytesreferences/theme-flat.mddoc · 5,177 bytesreferences/theme-journal.mddoc · 3,315 bytesreferences/theme-papercut.mddoc · 2,866 bytesreferences/theme-system.mddoc · 8,191 bytesreferences/tts-audio.mddoc · 14,616 bytesreferences/visual-director.mddoc · 4,850 bytesreferences/windows-compatibility.mddoc · 8,915 bytesscripts/audition.pyruns · 3,448 bytesscripts/build-semantic-captions.pyruns · 17,926 bytesscripts/check-deps.cmdruns · 85 bytesscripts/check-deps.shruns · 116 bytesscripts/commons-search.pyruns · 31,388 bytesscripts/compose-story.pyruns · 80,164 bytesscripts/coords-lint.pyruns · 6,449 bytesscripts/dev/audit-sfx.pyruns · 6,282 bytesscripts/dev/bg-gallery.pyruns · 4,063 bytesscripts/dev/bg_metrics.pyruns · 3,294 bytesscripts/dev/build-sfx-library.pyruns · 13,448 bytesscripts/dev/import-craft-sfx.pyruns · 6,524 bytesscripts/dev/listen-check.pyruns · 2,590 bytesscripts/dev/make-bg-library.pyruns · 47,098 bytesscripts/dev/make-craft-textures.pyruns · 11,681 bytesscripts/dev/paper-shaders.spec.jsonasset · 4,825 bytesscripts/dev/prerender-paper-shaders.pyruns · 5,684 bytesscripts/dev/tune-sfx.pyruns · 6,696 bytesscripts/eval-project.pyruns · 8,121 bytesscripts/export-srt.pyruns · 3,198 bytesscripts/fx-browser.mjsruns · 20,414 bytesscripts/gatelib.pyruns · 3,725 bytesscripts/gates_compose.pyruns · 17,860 bytesscripts/make-video.cmdruns · 150 bytesscripts/make-video.mjsruns · 27,564 bytesscripts/match-timing.pyruns · 6,478 bytesscripts/negative-gate-check.pyruns · 80,871 bytesscripts/new-project.cmdruns · 86 bytesscripts/new-project.shruns · 117 bytesscripts/notebook-video.cmdruns · 74 bytesscripts/notebook-video.mjsruns · 87,873 bytesscripts/package-project.cmdruns · 82 bytesscripts/package-project.pyruns · 1,230 bytesscripts/package-project.shruns · 113 bytesscripts/prepare-browser.cmdruns · 90 bytesscripts/prepare-browser.shruns · 121 bytesscripts/prepare-media.cmdruns · 155 bytesscripts/prepare-media.pyruns · 8,831 bytesscripts/render-remotion.cmdruns · 81 bytesscripts/render-remotion.shruns · 112 bytesscripts/resolve-shots.pyruns · 36,296 bytesscripts/retime.pyruns · 2,584 bytesscripts/selftest.pyruns · 17,717 bytesscripts/silent-timing.pyruns · 5,160 bytesscripts/story_camera.pyruns · 3,950 bytesscripts/sync-project-assets.cmdruns · 79 bytesscripts/sync-project-assets.shruns · 110 bytesscripts/tts.pyruns · 8,354 bytesscripts/validate-audio-levels.pyruns · 16,000 bytesscripts/validate-backgrounds.pyruns · 11,166 bytesscripts/validate-caption-sync.pyruns · 5,806 bytesscripts/validate-composition.pyruns · 40,138 bytesscripts/validate-frame-props.pyruns · 12,704 bytesscripts/validate-fusion.pyruns · 7,289 bytesscripts/validate-glyphs.pyruns · 5,674 bytesscripts/validate-layering.pyruns · 3,357 bytesscripts/validate-media.pyruns · 12,441 bytesscripts/validate-motion-gaps.pyruns · 6,553 bytesscripts/validate-ocr.pyruns · 15,121 bytesscripts/validate-opening.pyruns · 9,738 bytesscripts/validate-presentation.pyruns · 39,947 bytesscripts/validate-semantic-breaks.pyruns · 8,531 bytesscripts/validate-shot-motion.pyruns · 18,582 bytesscripts/validate-silence.pyruns · 4,105 bytesscripts/validate-skill-consistency.pyruns · 32,744 bytesscripts/validate-treatment.pyruns · 15,713 bytesscripts/validate-video.cmdruns · 89 bytesscripts/validate-video.shruns · 120 bytesscripts/validate-visual-plan.pyruns · 11,580 bytesscripts/windows-hide-console.cjsruns · 4,127 bytestests/fixtures/commons-imageinfo.jsonasset · 8,444 bytestests/fixtures/compose-golden/manifests__caption-cues.jsonasset · 12,756 bytestests/fixtures/compose-golden/manifests__shots.jsonasset · 9,029 bytestests/fixtures/compose-golden/report.jsonasset · 702 bytestests/fixtures/compose-golden/text__manifests_protected-caption-phrases.txtdoc · 71 bytestests/fixtures/compose-golden/text__manifests_semantic-caption-lines.txtdoc · 479 bytestests/fixtures/compose-golden/text__src_film.tsruns · 411 bytestests/fixtures/compose-golden/text__src_scenes.tsxruns · 939 bytestests/fixtures/compose-golden/text__src_story.tsruns · 6,042 bytestests/fixtures/openverse-audio.jsonasset · 6,151 bytestests/test_backgrounds.pyruns · 8,316 bytestests/test_bgmode.pyruns · 7,590 bytestests/test_blueprints.pyruns · 3,034 bytestests/test_bundled_budoux.pyruns · 5,477 bytestests/test_camera.pyruns · 3,332 bytestests/test_captions.pyruns · 3,102 bytestests/test_commons.pyruns · 11,464 bytestests/test_compose_golden.pyruns · 5,555 bytestests/test_composition_craft.pyruns · 3,411 bytestests/test_craft_layout.pyruns · 8,283 bytestests/test_eval_project.pyruns · 4,641 bytestests/test_export_srt.pyruns · 3,852 bytestests/test_frame_props.pyruns · 3,428 bytestests/test_fusion_gate.pyruns · 2,702 bytestests/test_fx.pyruns · 4,896 bytestests/test_ocr.pyruns · 10,872 bytestests/test_opening.pyruns · 4,614 bytestests/test_reading_speed.pyruns · 4,130 bytestests/test_sfx_density.pyruns · 4,039 bytestests/test_silence.pyruns · 3,348 bytestests/test_skill.pyruns · 404 bytestests/test_storyboard.pyruns · 4,237 bytestests/test_sweep.pyruns · 7,274 bytestests/test_sweep_e2e.pyruns · 4,682 bytestests/test_treatment.pyruns · 9,927 bytestests/test_tts.pyruns · 4,702 bytes
Read excerpt
# notebook-video · 讲清一件事:组件 + 线稿 + 讲解
画面 = **三层融合**(每镜至少两层):**组件层**给信息(控制台、代码差异、清单、数字行、柱条、结论条……),**线稿层**让观众认出「在讲什么东西」(30 个内置简笔线稿,跟着皮肤墨色),**讲解层**把两者连起来(手绘圈注 / 下划线 / 引线 / 手写小字)。
含线稿镜头占片长 30–60%,纯组件镜头 ≤30%,纯文字镜头 ≤10%(锤子帧除外);主题里的那个东西全片至少出现一次,否则 `validate-fusion` 判 P0。配方见 [references/recipes.md](references/recipes.md),线稿写法见 [references/linework.md](references/linework.md)。
组件仍然是信息的主体:每一镜都要有真组件(控制台、代码差异、清单、数字行、漏斗、进度环、印章、结论条……),
由引擎虚拟摄影机推近 / 跟随 / 横摇。**常规镜头不要做满屏大字的「文字页」**——一句话也要放进卡片(`Callout` / `StampBanner`)里;
例外是每片 2–3 个**锤子帧**(整章最该被记住的一句,满屏单独出现 1.5–2.5 秒),规则见 [references/pacing-rhythm.md](references/pacing-rhythm.md)。
锤子帧怎么做:组件路线用 `StampBanner`(或 `Callout` 放大到 displayL)独占一镜;手作路线用 `HandLettering` 手写满屏一句,或 `Seal` 印章大字——都放在媒介里,不是白底大字。
只有 16:9;五个皮肤:`flat`(默认)、`cel`,以及 3.3.0 的手作皮肤 `journal`(手账水彩)/ `papercut`(红色剪纸)/ `archive`(档案灯台)。
TTS 是正式步骤:`notebook-video tts <工程>`(默认 edge-tts;也可 `--engine=file` 用你自己的录音),字幕与镜头按**词级时间**对齐;没有真实旁白时 `--render` 会停在渲染前(静音占位只给 `--stills` / `preview`)。默认无 BGM,音效稀疏。
## 先选路线