#423 by GitHub stars
cclank/lanshu-create-ai-presenter-video
Turn a topic or finished script into a complete, publish-ready explainer video — led by an AI presenter from an authorized adult presenter image, or performed with no presenter in one of twelve explainer styles (nine visual styles and three narrative ones). Not for promos, ads, or footage montages.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
762d3ee42623 → 762d3ee42623
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 762d3ee42623
No earlier version was observed for comparison.
Verified commit 762d3ee42623b75a4ec63ad6aa61ace69d78ce6e
git clone --filter=blob:none --no-checkout https://github.com/cclank/lanshu-create-ai-presenter-video.git .hotskills/cclank-lanshu-create-ai-presenter-video && git -C .hotskills/cclank-lanshu-create-ai-presenter-video checkout --detach 762d3ee42623b75a4ec63ad6aa61ace69d78ce6e
# Copy each selected skill directory from .hotskills/cclank-lanshu-create-ai-presenter-video into .agents/skills/<skill-name>/Heat
6.8- Star growth, last 7 daysAhead of 94% of tracked repositories
- Star growth, last 24 hoursAhead of 70% of tracked repositories
- Rank movement, last 7 daysAhead of 51% of tracked repositories
- Commits, last 30 daysAhead of 79% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
How it works
lanshu-create-ai-presenter-video
When your agent uses it
Turn a topic or finished script into a complete, publish-ready explainer video — led by an AI presenter from an authorized adult presenter image, or performed with no presenter in one of twelve explainer styles (nine visual styles and three narrative ones). Not for promos, ads, or footage montages. Use for new presenter or styled explainer videos and for continuing, revising, captioning, lip-sync repairing, or re-exporting an existing job. Use it whenever the user asks for 数字人口播 / 数字人讲解, for a 讲解视频 / 动画讲解 / 科普视频, asks which styles or templates are available (有哪些风格 / 看看风格 / 风格模板), or names one of the styles: 留白, 信号/科技感, 手帐/手绘, 立体书/纸艺, 波普漫画, 一镜到底/3D, 图纸与注脚, 黑板报, 黏土小城, 推演/动态图解, 案卷/调查复盘, 小剧场/生活场景. Keep model and provider selection capability-based and record the actual choices per job.
What it loads into context
Frontmatter
322 tokensAlways available to the agent
SKILL.md
3,495 tokensWhen the skill is activated
Reference documents
116,761 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Choose a route
- Required outcome
- Operating rules
- Start or resume a job
- Production state machine
- Default behavior for minimal input
- Required job artifacts
- Reference routing
Scripts executed separately
explainer/core/core.jsexplainer/core/sfxlib.pyexplainer/examples/kv-cache/v1-editorial/package.jsonexplainer/examples/kv-cache/v1-editorial/tools/sfx.pyexplainer/examples/kv-cache/v10-reasoning/beats.jsexplainer/examples/kv-cache/v10-reasoning/package.jsonexplainer/examples/kv-cache/v10-reasoning/tools/sfx.pyexplainer/examples/kv-cache/v10-reasoning/tools/sfx.shexplainer/examples/kv-cache/v11-casefile/beats.jsexplainer/examples/kv-cache/v11-casefile/package.jsonexplainer/examples/kv-cache/v11-casefile/tools/sfx.pyexplainer/examples/kv-cache/v11-casefile/tools/sfx.shexplainer/examples/kv-cache/v12-sitcom/beats.jsexplainer/examples/kv-cache/v12-sitcom/package.jsonexplainer/examples/kv-cache/v12-sitcom/tools/sfx.pyexplainer/examples/kv-cache/v12-sitcom/tools/sfx.shexplainer/examples/kv-cache/v12-sitcom/tools/sfx_beats.pyexplainer/examples/kv-cache/v2-signal/package.jsonexplainer/examples/kv-cache/v2-signal/tools/sfx.pyexplainer/examples/kv-cache/v3-notebook/package.jsonexplainer/examples/kv-cache/v3-notebook/tools/sfx.pyexplainer/examples/kv-cache/v4-paper/package.jsonexplainer/examples/kv-cache/v4-paper/tools/sfx.pyexplainer/examples/kv-cache/v5-comic/package.jsonexplainer/examples/kv-cache/v5-comic/tools/sfx.pyexplainer/examples/kv-cache/v6-cinematic/package.jsonexplainer/examples/kv-cache/v6-cinematic/tools/sfx.pyexplainer/examples/kv-cache/v7-drafting/package.jsonexplainer/examples/kv-cache/v7-drafting/tools/sfx.pyexplainer/examples/kv-cache/v8-chalkboard/package.jsonexplainer/examples/kv-cache/v8-chalkboard/tools/sfx.pyexplainer/examples/kv-cache/v9-clay/package.jsonexplainer/examples/kv-cache/v9-clay/tools/sfx.pyexplainer/kits/v1-editorial/kit.jsexplainer/kits/v1-editorial/starter/beats.jsexplainer/kits/v1-editorial/starter/package.jsonexplainer/kits/v1-editorial/starter/tools/sfx.pyexplainer/kits/v1-editorial/starter/tools/sfx.shexplainer/kits/v10-reasoning/kit.jsexplainer/kits/v10-reasoning/starter/beats.jsexplainer/kits/v10-reasoning/starter/package.jsonexplainer/kits/v10-reasoning/starter/tools/sfx.pyexplainer/kits/v10-reasoning/starter/tools/sfx.shexplainer/kits/v11-casefile/casefile_sfx.pyexplainer/kits/v11-casefile/events.mjsexplainer/kits/v11-casefile/kit.jsexplainer/kits/v11-casefile/starter/beats.jsexplainer/kits/v11-casefile/starter/package.jsonexplainer/kits/v11-casefile/starter/tools/sfx.pyexplainer/kits/v11-casefile/starter/tools/sfx.shexplainer/kits/v12-sitcom/kit.jsexplainer/kits/v12-sitcom/sitcom_sfx.pyexplainer/kits/v12-sitcom/starter/beats.jsexplainer/kits/v12-sitcom/starter/package.jsonexplainer/kits/v12-sitcom/starter/tools/sfx.pyexplainer/kits/v12-sitcom/starter/tools/sfx.shexplainer/kits/v12-sitcom/starter/tools/sfx_beats.pyexplainer/kits/v2-signal/kit.jsexplainer/kits/v2-signal/sfx_signal.pyexplainer/kits/v2-signal/starter/beats.jsexplainer/kits/v2-signal/starter/package.jsonexplainer/kits/v2-signal/starter/tools/sfx.pyexplainer/kits/v2-signal/starter/tools/sfx.shexplainer/kits/v3-notebook/events.mjsexplainer/kits/v3-notebook/kit.jsexplainer/kits/v3-notebook/notebook_sfx.pyexplainer/kits/v3-notebook/starter/beats.jsexplainer/kits/v3-notebook/starter/package.jsonexplainer/kits/v3-notebook/starter/tools/sfx.pyexplainer/kits/v3-notebook/starter/tools/sfx.shexplainer/kits/v4-paper/kit.jsexplainer/kits/v4-paper/paper_sfx.pyexplainer/kits/v4-paper/starter/beats.jsexplainer/kits/v4-paper/starter/package.jsonexplainer/kits/v4-paper/starter/tools/sfx.pyexplainer/kits/v4-paper/starter/tools/sfx.shexplainer/kits/v4-paper/starter/tools/sfx_beats.pyexplainer/kits/v5-comic/kit.jsexplainer/kits/v5-comic/starter/beats.jsexplainer/kits/v5-comic/starter/package.jsonexplainer/kits/v5-comic/starter/tools/sfx.pyexplainer/kits/v5-comic/starter/tools/sfx.shexplainer/kits/v6-cinematic/kit.jsexplainer/kits/v6-cinematic/starter/beats.jsexplainer/kits/v6-cinematic/starter/package.jsonexplainer/kits/v6-cinematic/starter/tools/sfx.pyexplainer/kits/v6-cinematic/starter/tools/sfx.shexplainer/kits/v7-drafting/kit.jsexplainer/kits/v7-drafting/starter/beats.jsexplainer/kits/v7-drafting/starter/package.jsonexplainer/kits/v7-drafting/starter/tools/sfx.pyexplainer/kits/v7-drafting/starter/tools/sfx.shexplainer/kits/v8-chalkboard/chalklog.mjsexplainer/kits/v8-chalkboard/kit.jsexplainer/kits/v8-chalkboard/starter/beats.jsexplainer/kits/v8-chalkboard/starter/package.jsonexplainer/kits/v8-chalkboard/starter/tools/sfx.pyexplainer/kits/v8-chalkboard/starter/tools/sfx.shexplainer/kits/v9-clay/kit.jsexplainer/kits/v9-clay/starter/beats.jsexplainer/kits/v9-clay/starter/package.jsonexplainer/kits/v9-clay/starter/tools/plan.mjsexplainer/kits/v9-clay/starter/tools/sfx.pyexplainer/kits/v9-clay/starter/tools/sfx.shexplainer/tools/docs.pyexplainer/tools/fonts.pyexplainer/tools/grid.pyexplainer/tools/new_film.shexplainer/tools/new_topic.shexplainer/tools/qa.pyexplainer/tools/render.shexplainer/tools/srt.pyexplainer/tools/stamp.pyexplainer/tools/still_grid.pyexplainer/tools/story.pyexplainer/tools/sync.shscripts/check_state.pyscripts/finalize_delivery.shscripts/init_job.pyscripts/plan_segments.pyscripts/preflight.pytests/explainer_smoke.shtests/smoke.shtests/story_timing.py
Files
.github/workflows/validate.ymlasset2,042 bytes.gitignoreasset360 bytesCHANGELOG.mddoc2,207 bytesLICENSEasset1,063 bytesREADME.mddoc20,451 bytesREADME.zh-CN.mddoc20,103 bytesSKILL.mdcore15,265 bytesSKILL.mdcore15,265 bytesSKILL.mdcore15,265 bytesSKILL.mdcore15,265 bytesSKILL.mdcore15,265 bytesSKILL.mdcore15,265 bytesSKILL.mdcore15,265 bytesSKILL.mdcore15,265 bytesSKILL.mdcore15,265 bytesVERSIONasset6 bytesagents/openai.yamlasset443 bytesassets/job.template.jsonasset1,988 bytesexplainer/GOTCHAS.mddoc4,935 bytesexplainer/KITS.mddoc18,871 bytesexplainer/STARTER-BRIEF.mddoc5,865 bytesexplainer/STYLES.mddoc14,142 bytesexplainer/THIRD_PARTY.mddoc1,398 bytesexplainer/core/core.jsruns11,347 bytesexplainer/core/sfxlib.pyruns9,320 bytesexplainer/examples/README.mddoc1,414 bytesexplainer/examples/kv-cache/v1-editorial/fonts.jsonasset133 bytesexplainer/examples/kv-cache/v1-editorial/hyperframes.jsonasset355 bytesexplainer/examples/kv-cache/v1-editorial/index.htmlasset49,660 bytesexplainer/examples/kv-cache/v1-editorial/meta.jsonasset114 bytesexplainer/examples/kv-cache/v1-editorial/package.jsonruns306 bytesexplainer/examples/kv-cache/v1-editorial/tools/sfx.pyruns7,754 bytesexplainer/examples/kv-cache/v10-reasoning/STYLE.mddoc2,159 bytesexplainer/examples/kv-cache/v10-reasoning/beats.jsruns31,067 bytesexplainer/examples/kv-cache/v10-reasoning/fonts.jsonasset678 bytesexplainer/examples/kv-cache/v10-reasoning/hyperframes.jsonasset355 bytesexplainer/examples/kv-cache/v10-reasoning/index.htmlasset31,020 bytesexplainer/examples/kv-cache/v10-reasoning/meta.jsonasset116 bytesexplainer/examples/kv-cache/v10-reasoning/package.jsonruns307 bytesexplainer/examples/kv-cache/v10-reasoning/tools/sfx.pyruns13,559 bytesexplainer/examples/kv-cache/v10-reasoning/tools/sfx.shruns374 bytesexplainer/examples/kv-cache/v11-casefile/STYLE.mddoc3,941 bytesexplainer/examples/kv-cache/v11-casefile/beats.jsruns29,554 bytesexplainer/examples/kv-cache/v11-casefile/fonts.jsonasset340 bytesexplainer/examples/kv-cache/v11-casefile/hyperframes.jsonasset355 bytesexplainer/examples/kv-cache/v11-casefile/index.htmlasset37,919 bytesexplainer/examples/kv-cache/v11-casefile/meta.jsonasset114 bytesexplainer/examples/kv-cache/v11-casefile/package.jsonruns306 bytesexplainer/examples/kv-cache/v11-casefile/tools/sfx.pyruns3,590 bytesexplainer/examples/kv-cache/v11-casefile/tools/sfx.shruns991 bytesexplainer/examples/kv-cache/v12-sitcom/STYLE.mddoc2,637 bytesexplainer/examples/kv-cache/v12-sitcom/beats.jsruns38,743 bytesexplainer/examples/kv-cache/v12-sitcom/fonts.jsonasset327 bytesexplainer/examples/kv-cache/v12-sitcom/hyperframes.jsonasset355 bytesexplainer/examples/kv-cache/v12-sitcom/index.htmlasset27,908 bytesexplainer/examples/kv-cache/v12-sitcom/meta.jsonasset110 bytesexplainer/examples/kv-cache/v12-sitcom/package.jsonruns304 bytesexplainer/examples/kv-cache/v12-sitcom/tools/sfx.pyruns7,498 bytesexplainer/examples/kv-cache/v12-sitcom/tools/sfx.shruns579 bytesexplainer/examples/kv-cache/v12-sitcom/tools/sfx_beats.pyruns11,518 bytesexplainer/examples/kv-cache/v2-signal/fonts.jsonasset203 bytesexplainer/examples/kv-cache/v2-signal/hyperframes.jsonasset355 bytesexplainer/examples/kv-cache/v2-signal/index.htmlasset83,096 bytesexplainer/examples/kv-cache/v2-signal/meta.jsonasset108 bytesexplainer/examples/kv-cache/v2-signal/package.jsonruns303 bytesexplainer/examples/kv-cache/v2-signal/tools/sfx.pyruns9,735 bytesexplainer/examples/kv-cache/v3-notebook/fonts.jsonasset61 bytesexplainer/examples/kv-cache/v3-notebook/hyperframes.jsonasset355 bytesexplainer/examples/kv-cache/v3-notebook/index.htmlasset44,081 bytesexplainer/examples/kv-cache/v3-notebook/meta.jsonasset112 bytesexplainer/examples/kv-cache/v3-notebook/package.jsonruns305 bytesexplainer/examples/kv-cache/v3-notebook/tools/sfx.pyruns1,050 bytesexplainer/examples/kv-cache/v4-paper/fonts.jsonasset50 bytesexplainer/examples/kv-cache/v4-paper/hyperframes.jsonasset355 bytesexplainer/examples/kv-cache/v4-paper/index.htmlasset61,432 bytesexplainer/examples/kv-cache/v4-paper/meta.jsonasset106 bytesexplainer/examples/kv-cache/v4-paper/package.jsonruns302 bytesexplainer/examples/kv-cache/v4-paper/tools/sfx.pyruns9,540 bytesexplainer/examples/kv-cache/v5-comic/fonts.jsonasset287 bytesexplainer/examples/kv-cache/v5-comic/hyperframes.jsonasset355 bytesexplainer/examples/kv-cache/v5-comic/index.htmlasset75,068 bytesexplainer/examples/kv-cache/v5-comic/meta.jsonasset106 bytesexplainer/examples/kv-cache/v5-comic/package.jsonruns302 bytesexplainer/examples/kv-cache/v5-comic/tools/sfx.pyruns11,118 bytesexplainer/examples/kv-cache/v6-cinematic/fonts.jsonasset569 bytesexplainer/examples/kv-cache/v6-cinematic/hyperframes.jsonasset355 bytesexplainer/examples/kv-cache/v6-cinematic/index.htmlasset55,703 bytesexplainer/examples/kv-cache/v6-cinematic/meta.jsonasset114 bytesexplainer/examples/kv-cache/v6-cinematic/package.jsonruns306 bytesexplainer/examples/kv-cache/v6-cinematic/tools/sfx.pyruns7,222 bytesexplainer/examples/kv-cache/v7-drafting/fonts.jsonasset558 bytesexplainer/examples/kv-cache/v7-drafting/hyperframes.jsonasset355 bytesexplainer/examples/kv-cache/v7-drafting/index.htmlasset63,037 bytesexplainer/examples/kv-cache/v7-drafting/meta.jsonasset111 bytesexplainer/examples/kv-cache/v7-drafting/package.jsonruns304 bytesexplainer/examples/kv-cache/v7-drafting/tools/sfx.pyruns8,888 bytesexplainer/examples/kv-cache/v8-chalkboard/fonts.jsonasset169 bytesexplainer/examples/kv-cache/v8-chalkboard/hyperframes.jsonasset355 bytesexplainer/examples/kv-cache/v8-chalkboard/index.htmlasset34,222 bytesexplainer/examples/kv-cache/v8-chalkboard/meta.jsonasset115 bytesexplainer/examples/kv-cache/v8-chalkboard/package.jsonruns306 bytesexplainer/examples/kv-cache/v8-chalkboard/tools/sfx.pyruns3,752 bytesexplainer/examples/kv-cache/v9-clay/STYLE.mddoc1,687 bytesexplainer/examples/kv-cache/v9-clay/fonts.jsonasset418 bytesexplainer/examples/kv-cache/v9-clay/hyperframes.jsonasset355 bytesexplainer/examples/kv-cache/v9-clay/index.htmlasset72,293 bytesexplainer/examples/kv-cache/v9-clay/meta.jsonasset104 bytesexplainer/examples/kv-cache/v9-clay/package.jsonruns301 bytesexplainer/examples/kv-cache/v9-clay/tools/sfx.pyruns8,352 bytesexplainer/gallery/nine-styles-kv-cache.jpgasset245,417 bytesexplainer/gallery/three-narrative-styles-kv-cache.jpgasset151,401 bytesexplainer/kits/v1-editorial/KIT.mddoc10,887 bytesexplainer/kits/v1-editorial/kit.cssasset14,639 bytesexplainer/kits/v1-editorial/kit.jsruns25,027 bytesexplainer/kits/v1-editorial/paper-grain.svgasset437 bytesexplainer/kits/v1-editorial/starter/AGENTS.mddoc1,491 bytesexplainer/kits/v1-editorial/starter/CLAUDE.mddoc1,491 bytesexplainer/kits/v1-editorial/starter/STARTER.mddoc7,066 bytesexplainer/kits/v1-editorial/starter/beats.jsruns1,748 bytesexplainer/kits/v1-editorial/starter/fonts.jsonasset133 bytesexplainer/kits/v1-editorial/starter/hyperframes.jsonasset355 bytesexplainer/kits/v1-editorial/starter/index.htmlasset32,999 bytesexplainer/kits/v1-editorial/starter/meta.jsonasset112 bytesexplainer/kits/v1-editorial/starter/package.jsonruns305 bytesexplainer/kits/v1-editorial/starter/tools/sfx.pyruns8,002 bytesexplainer/kits/v1-editorial/starter/tools/sfx.shruns456 bytesexplainer/kits/v10-reasoning/KIT.mddoc11,455 bytesexplainer/kits/v10-reasoning/kit.cssasset15,754 bytesexplainer/kits/v10-reasoning/kit.jsruns44,698 bytesexplainer/kits/v10-reasoning/starter/AGENTS.mddoc1,491 bytesexplainer/kits/v10-reasoning/starter/CLAUDE.mddoc1,491 bytesexplainer/kits/v10-reasoning/starter/STARTER.mddoc8,663 bytesexplainer/kits/v10-reasoning/starter/beats.jsruns1,417 bytesexplainer/kits/v10-reasoning/starter/fonts.jsonasset678 bytesexplainer/kits/v10-reasoning/starter/hyperframes.jsonasset355 bytesexplainer/kits/v10-reasoning/starter/index.htmlasset30,550 bytesexplainer/kits/v10-reasoning/starter/meta.jsonasset114 bytesexplainer/kits/v10-reasoning/starter/package.jsonruns306 bytesexplainer/kits/v10-reasoning/starter/tools/sfx.pyruns9,088 bytesexplainer/kits/v10-reasoning/starter/tools/sfx.shruns374 bytesexplainer/kits/v11-casefile/KIT.mddoc11,566 bytesexplainer/kits/v11-casefile/casefile_sfx.pyruns8,660 bytesexplainer/kits/v11-casefile/cork.svgasset1,200 bytesexplainer/kits/v11-casefile/events.mjsruns2,835 bytesexplainer/kits/v11-casefile/kit.cssasset18,590 bytesexplainer/kits/v11-casefile/kit.jsruns59,226 bytesexplainer/kits/v11-casefile/stamp-ink.svgasset539 bytesexplainer/kits/v11-casefile/starter/AGENTS.mddoc1,491 bytesexplainer/kits/v11-casefile/starter/CLAUDE.mddoc1,491 bytesexplainer/kits/v11-casefile/starter/STARTER.mddoc8,737 bytesexplainer/kits/v11-casefile/starter/beats.jsruns1,671 bytesexplainer/kits/v11-casefile/starter/fonts.jsonasset340 bytesexplainer/kits/v11-casefile/starter/hyperframes.jsonasset355 bytesexplainer/kits/v11-casefile/starter/index.htmlasset37,872 bytesexplainer/kits/v11-casefile/starter/meta.jsonasset112 bytesexplainer/kits/v11-casefile/starter/package.jsonruns305 bytesexplainer/kits/v11-casefile/starter/tools/sfx.pyruns3,590 bytesexplainer/kits/v11-casefile/starter/tools/sfx.shruns991 bytesexplainer/kits/v12-sitcom/KIT.mddoc11,794 bytesexplainer/kits/v12-sitcom/kit.cssasset27,192 bytesexplainer/kits/v12-sitcom/kit.jsruns85,952 bytesexplainer/kits/v12-sitcom/sitcom_sfx.pyruns6,330 bytesexplainer/kits/v12-sitcom/starter/AGENTS.mddoc1,491 bytesexplainer/kits/v12-sitcom/starter/CLAUDE.mddoc1,491 bytesexplainer/kits/v12-sitcom/starter/STARTER.mddoc8,362 bytesexplainer/kits/v12-sitcom/starter/beats.jsruns1,853 bytesexplainer/kits/v12-sitcom/starter/fonts.jsonasset327 bytesexplainer/kits/v12-sitcom/starter/hyperframes.jsonasset355 bytesexplainer/kits/v12-sitcom/starter/index.htmlasset27,056 bytesexplainer/kits/v12-sitcom/starter/meta.jsonasset110 bytesexplainer/kits/v12-sitcom/starter/package.jsonruns304 bytesexplainer/kits/v12-sitcom/starter/tools/sfx.pyruns7,498 bytesexplainer/kits/v12-sitcom/starter/tools/sfx.shruns579 bytesexplainer/kits/v12-sitcom/starter/tools/sfx_beats.pyruns1,102 bytesexplainer/kits/v2-signal/KIT.mddoc10,900 bytesexplainer/kits/v2-signal/kit.cssasset14,792 bytesexplainer/kits/v2-signal/kit.jsruns28,809 bytesexplainer/kits/v2-signal/sfx_signal.pyruns3,692 bytesexplainer/kits/v2-signal/starter/AGENTS.mddoc1,491 bytesexplainer/kits/v2-signal/starter/CLAUDE.mddoc1,491 bytesexplainer/kits/v2-signal/starter/STARTER.mddoc7,706 bytesexplainer/kits/v2-signal/starter/beats.jsruns1,371 bytesexplainer/kits/v2-signal/starter/fonts.jsonasset203 bytesexplainer/kits/v2-signal/starter/hyperframes.jsonasset355 bytesexplainer/kits/v2-signal/starter/index.htmlasset41,799 bytesexplainer/kits/v2-signal/starter/meta.jsonasset106 bytesexplainer/kits/v2-signal/starter/package.jsonruns302 bytesexplainer/kits/v2-signal/starter/tools/sfx.pyruns7,758 bytesexplainer/kits/v2-signal/starter/tools/sfx.shruns445 bytesexplainer/kits/v3-notebook/KIT.mddoc9,391 bytesexplainer/kits/v3-notebook/events.mjsruns3,195 bytesexplainer/kits/v3-notebook/fix-56de.woff2asset940 bytesexplainer/kits/v3-notebook/kit.cssasset13,090 bytesexplainer/kits/v3-notebook/kit.jsruns45,077 bytesexplainer/kits/v3-notebook/notebook_sfx.pyruns6,303 bytesexplainer/kits/v3-notebook/paper-grain.svgasset437 bytesexplainer/kits/v3-notebook/starter/AGENTS.mddoc1,491 bytesexplainer/kits/v3-notebook/starter/CLAUDE.mddoc1,491 bytesexplainer/kits/v3-notebook/starter/STARTER.mddoc7,185 bytesexplainer/kits/v3-notebook/starter/beats.jsruns1,496 bytesexplainer/kits/v3-notebook/starter/fonts.jsonasset61 bytesexplainer/kits/v3-notebook/starter/hyperframes.jsonasset355 bytesexplainer/kits/v3-notebook/starter/index.htmlasset35,189 bytesexplainer/kits/v3-notebook/starter/meta.jsonasset110 bytesexplainer/kits/v3-notebook/starter/package.jsonruns304 bytesexplainer/kits/v3-notebook/starter/tools/sfx.pyruns3,522 bytesexplainer/kits/v3-notebook/starter/tools/sfx.shruns882 bytesexplainer/kits/v4-paper/KIT.mddoc11,701 bytesexplainer/kits/v4-paper/kit.cssasset17,590 bytesexplainer/kits/v4-paper/kit.jsruns34,546 bytesexplainer/kits/v4-paper/paper-grain.svgasset437 bytesexplainer/kits/v4-paper/paper_sfx.pyruns5,150 bytesexplainer/kits/v4-paper/starter/AGENTS.mddoc1,491 bytesexplainer/kits/v4-paper/starter/CLAUDE.mddoc1,491 bytesexplainer/kits/v4-paper/starter/STARTER.mddoc7,611 bytesexplainer/kits/v4-paper/starter/beats.jsruns1,612 bytesexplainer/kits/v4-paper/starter/fonts.jsonasset50 bytesexplainer/kits/v4-paper/starter/hyperframes.jsonasset355 bytesexplainer/kits/v4-paper/starter/index.htmlasset36,124 bytesexplainer/kits/v4-paper/starter/meta.jsonasset106 bytesexplainer/kits/v4-paper/starter/package.jsonruns302 bytesexplainer/kits/v4-paper/starter/tools/sfx.pyruns6,880 bytesexplainer/kits/v4-paper/starter/tools/sfx.shruns555 bytesexplainer/kits/v4-paper/starter/tools/sfx_beats.pyruns917 bytesexplainer/kits/v5-comic/KIT.mddoc11,555 bytesexplainer/kits/v5-comic/kit.cssasset17,021 bytesexplainer/kits/v5-comic/kit.jsruns32,042 bytesexplainer/kits/v5-comic/starter/AGENTS.mddoc1,491 bytesexplainer/kits/v5-comic/starter/CLAUDE.mddoc1,491 bytesexplainer/kits/v5-comic/starter/STARTER.mddoc7,632 bytesexplainer/kits/v5-comic/starter/beats.jsruns1,159 bytesexplainer/kits/v5-comic/starter/fonts.jsonasset287 bytesexplainer/kits/v5-comic/starter/hyperframes.jsonasset355 bytesexplainer/kits/v5-comic/starter/index.htmlasset35,030 bytesexplainer/kits/v5-comic/starter/meta.jsonasset104 bytesexplainer/kits/v5-comic/starter/package.jsonruns301 bytesexplainer/kits/v5-comic/starter/tools/sfx.pyruns10,812 bytesexplainer/kits/v5-comic/starter/tools/sfx.shruns383 bytesexplainer/kits/v6-cinematic/KIT.mddoc8,315 bytesexplainer/kits/v6-cinematic/grain.svgasset437 bytesexplainer/kits/v6-cinematic/kit.cssasset13,407 bytesexplainer/kits/v6-cinematic/kit.jsruns30,306 bytesexplainer/kits/v6-cinematic/starter/AGENTS.mddoc1,491 bytesexplainer/kits/v6-cinematic/starter/CLAUDE.mddoc1,491 bytesexplainer/kits/v6-cinematic/starter/STARTER.mddoc7,062 bytesexplainer/kits/v6-cinematic/starter/beats.jsruns1,091 bytesexplainer/kits/v6-cinematic/starter/fonts.jsonasset569 bytesexplainer/kits/v6-cinematic/starter/hyperframes.jsonasset355 bytesexplainer/kits/v6-cinematic/starter/index.htmlasset33,854 bytesexplainer/kits/v6-cinematic/starter/meta.jsonasset112 bytesexplainer/kits/v6-cinematic/starter/package.jsonruns305 bytesexplainer/kits/v6-cinematic/starter/tools/sfx.pyruns4,618 bytesexplainer/kits/v6-cinematic/starter/tools/sfx.shruns405 bytesexplainer/kits/v7-drafting/KIT.mddoc9,070 bytesexplainer/kits/v7-drafting/grain.svgasset437 bytesexplainer/kits/v7-drafting/kit.cssasset17,014 bytesexplainer/kits/v7-drafting/kit.jsruns32,823 bytesexplainer/kits/v7-drafting/starter/AGENTS.mddoc1,491 bytesexplainer/kits/v7-drafting/starter/CLAUDE.mddoc1,491 bytesexplainer/kits/v7-drafting/starter/STARTER.mddoc7,824 bytesexplainer/kits/v7-drafting/starter/beats.jsruns1,233 bytesexplainer/kits/v7-drafting/starter/fonts.jsonasset558 bytesexplainer/kits/v7-drafting/starter/hyperframes.jsonasset355 bytesexplainer/kits/v7-drafting/starter/index.htmlasset44,243 bytesexplainer/kits/v7-drafting/starter/meta.jsonasset110 bytesexplainer/kits/v7-drafting/starter/package.jsonruns303 bytesexplainer/kits/v7-drafting/starter/tools/sfx.pyruns8,001 bytesexplainer/kits/v7-drafting/starter/tools/sfx.shruns382 bytesexplainer/kits/v8-chalkboard/KIT.mddoc9,678 bytesexplainer/kits/v8-chalkboard/chalk-mask.pngasset317,154 bytesexplainer/kits/v8-chalkboard/chalklog.mjsruns3,997 bytesexplainer/kits/v8-chalkboard/grain.svgasset437 bytesexplainer/kits/v8-chalkboard/kit.cssasset6,489 bytesexplainer/kits/v8-chalkboard/kit.jsruns62,099 bytesexplainer/kits/v8-chalkboard/starter/AGENTS.mddoc1,491 bytesexplainer/kits/v8-chalkboard/starter/CLAUDE.mddoc1,491 bytesexplainer/kits/v8-chalkboard/starter/STARTER.mddoc8,176 bytesexplainer/kits/v8-chalkboard/starter/beats.jsruns1,093 bytesexplainer/kits/v8-chalkboard/starter/fonts.jsonasset169 bytesexplainer/kits/v8-chalkboard/starter/hyperframes.jsonasset355 bytesexplainer/kits/v8-chalkboard/starter/index.htmlasset34,953 bytesexplainer/kits/v8-chalkboard/starter/meta.jsonasset114 bytesexplainer/kits/v8-chalkboard/starter/package.jsonruns305 bytesexplainer/kits/v8-chalkboard/starter/tools/sfx.pyruns4,535 bytesexplainer/kits/v8-chalkboard/starter/tools/sfx.shruns799 bytesexplainer/kits/v9-clay/KIT.mddoc9,992 bytesexplainer/kits/v9-clay/kit.cssasset14,853 bytesexplainer/kits/v9-clay/kit.jsruns35,762 bytesexplainer/kits/v9-clay/starter/AGENTS.mddoc1,491 bytesexplainer/kits/v9-clay/starter/CLAUDE.mddoc1,491 bytesexplainer/kits/v9-clay/starter/STARTER.mddoc8,103 bytesexplainer/kits/v9-clay/starter/beats.jsruns1,326 bytesexplainer/kits/v9-clay/starter/fonts.jsonasset418 bytesexplainer/kits/v9-clay/starter/hyperframes.jsonasset355 bytesexplainer/kits/v9-clay/starter/index.htmlasset38,566 bytesexplainer/kits/v9-clay/starter/meta.jsonasset102 bytesexplainer/kits/v9-clay/starter/package.jsonruns300 bytesexplainer/kits/v9-clay/starter/tools/plan.mjsruns1,730 bytesexplainer/kits/v9-clay/starter/tools/sfx.pyruns4,223 bytesexplainer/kits/v9-clay/starter/tools/sfx.shruns385 bytesexplainer/stories/_test-dry/script.mddoc972 bytesexplainer/stories/_test-dry/story.jsonasset6,705 bytesexplainer/stories/kv-cache-casefile/script.mddoc2,552 bytesexplainer/stories/kv-cache-casefile/story.jsonasset13,684 bytesexplainer/stories/kv-cache-reasoning/script.mddoc2,362 bytesexplainer/stories/kv-cache-reasoning/story.jsonasset12,412 bytesexplainer/stories/kv-cache-sitcom/script.mddoc2,308 bytesexplainer/stories/kv-cache-sitcom/story.jsonasset12,385 bytesexplainer/stories/kv-cache/STORYBOARD.mddoc6,470 bytesexplainer/stories/kv-cache/script.mddoc2,476 bytesexplainer/stories/kv-cache/story.jsonasset11,258 bytesexplainer/tools/docs.pyruns4,747 bytesexplainer/tools/fonts.pyruns7,120 bytesexplainer/tools/grid.pyruns3,374 bytesexplainer/tools/new_film.shruns3,081 bytesexplainer/tools/new_topic.shruns1,790 bytesexplainer/tools/qa.pyruns5,842 bytesexplainer/tools/render.shruns2,507 bytesexplainer/tools/srt.pyruns3,520 bytesexplainer/tools/stamp.pyruns1,719 bytesexplainer/tools/still_grid.pyruns3,628 bytesexplainer/tools/story.pyruns25,060 bytesexplainer/tools/sync.shruns2,114 bytesreferences/editing.mddoc4,131 bytesreferences/generation.mddoc5,957 bytesreferences/qa-recovery.mddoc4,679 bytesreferences/styled-explainer.mddoc12,866 bytesscripts/check_state.pyruns9,592 bytesscripts/finalize_delivery.shruns9,750 bytesscripts/init_job.pyruns8,034 bytesscripts/plan_segments.pyruns7,162 bytesscripts/preflight.pyruns8,601 bytestests/explainer_smoke.shruns7,089 bytestests/smoke.shruns7,942 bytestests/story_timing.pyruns3,599 bytes
Read SKILL.md
# Lanshu Create AI Presenter Video
Produce a verified explainer video from minimal inputs — led by a digital human, or performed in one of twelve explainer styles. The final narration is the master clock for presenter motion, captions, graphics, cuts, and delivery duration.
## Choose a route
Every job takes one of two routes, recorded as `creative.route`. Infer it when the request is clear (cues below);
otherwise ask once, with this table and the style gallery (`explainer/STYLES.md`; attach or link the images
`explainer/gallery/nine-styles-kv-cache.jpg` and `explainer/gallery/three-narrative-styles-kv-cache.jpg`). Never fall back to `presenter` silently: it needs a portrait the user
may not have.
| Route | The video | The user provides | Paid generation | Format |
|---|---|---|---|---|
| `presenter` | A digital human presents; captions and keyword graphics support it | Topic or script + authorized presenter image | Voice + presenter video | Any; 9:16 by default |View the complete source on GitHubSkills included
- lanshu-create-ai-presenter-video
Repository facts
- License
- MIT
- Created
- Aug 20, 2026
- Last pushed
- Oct 11, 2026
- Forks
- 442
- Open issues
- 2
- Project activity
- Active
Rank over the last 12 weeks
Now #423 · best #384 · down 34 in 30 days
- #413 on Nov 1
- #410 on Nov 2
- #414 from Nov 3 to Nov 4
- #417 on Nov 5
- #421 on Nov 6
- #423 since Nov 7
65 earlier periods
- #909 on Aug 16
- #894 on Aug 20
- #897 on Aug 21
- #835 on Aug 22
- #739 on Aug 23
- #679 on Aug 24
- #656 on Aug 25
- #632 on Aug 26
- #635 on Aug 27
- #653 on Aug 28
- #608 on Aug 29
- #602 on Aug 30
- #624 on Aug 31
- #641 on Sep 1
- #629 on Sep 2
- #613 on Sep 4
- #606 on Sep 5
- #632 on Sep 7
- #644 on Sep 9
- #646 on Sep 10
- #634 on Sep 11
- #637 on Sep 12
- #655 on Sep 15
- #660 on Sep 16
- #662 on Sep 17
- #661 on Sep 18
- #638 on Sep 19
- #666 on Sep 21
- #677 on Sep 22
- #675 on Sep 23
- #648 on Sep 24
- #570 on Sep 25
- #472 on Sep 26
- #451 on Sep 27
- #450 on Sep 28
- #455 on Sep 29
- #447 on Sep 30
- #444 on Oct 1
- #440 on Oct 2
- #427 on Oct 3
- #421 on Oct 4
- #432 on Oct 5
- #407 on Oct 6
- #392 on Oct 7
- #389 on Oct 8
- #399 on Oct 9
- #385 on Oct 10
- #387 on Oct 11
- #394 on Oct 12
- #390 on Oct 13
- #394 on Oct 14
- #392 on Oct 15
- #393 on Oct 16
- #384 on Oct 17
- #390 on Oct 18
- #394 on Oct 19
- #396 on Oct 20
- #394 on Oct 21
- #395 on Oct 22
- #393 on Oct 23
- #385 on Oct 24
- #401 on Oct 25
- #409 on Oct 28
- #412 on Oct 29
- #415 from Oct 30 to Oct 31
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 2, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 23 notes
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedexplainer/examples/kv-cache/v2-signal/index.html:10Analysis incomplete: physical or joined line exceeds character limitexplainer/examples/kv-cache/v2-signal/index.html:11Analysis incomplete: physical or joined line exceeds character limitexplainer/examples/kv-cache/v2-signal/index.html:12Analysis incomplete: physical or joined line exceeds character limitexplainer/examples/kv-cache/v2-signal/index.html:13Analysis incomplete: physical or joined line exceeds character limitexplainer/examples/kv-cache/v2-signal/index.html:14Analysis incomplete: physical or joined line exceeds character limitexplainer/examples/kv-cache/v2-signal/index.html:15Analysis incomplete: physical or joined line exceeds character limitexplainer/examples/kv-cache/v2-signal/index.html:16Analysis incomplete: physical or joined line exceeds character limitexplainer/examples/kv-cache/v9-clay/index.html:18Analysis incomplete: physical or joined line exceeds character limitexplainer/examples/kv-cache/v9-clay/index.html:19Analysis incomplete: physical or joined line exceeds character limitexplainer/examples/kv-cache/v9-clay/index.html:20Analysis incomplete: physical or joined line exceeds character limitexplainer/examples/kv-cache/v9-clay/index.html:21Analysis incomplete: physical or joined line exceeds character limitexplainer/examples/kv-cache/v9-clay/index.html:22Analysis incomplete: physical or joined line exceeds character limit
- No broad tool permissions
- 10 dangerous shell commandsin 6 files: explainer/tools/new_film.sh:28 scripts/finalize_delivery.sh:52 tests/explainer_smoke.sh:16 and 3 more
- 326 network referencesin 76 files: README.md:5 README.zh-CN.md:5 explainer/tools/fonts.py:37 and 73 more
- No hidden or obfuscated text
- No instruction overrides
- 124 executable scriptsin 124 files: explainer/core/core.js:1 explainer/core/sfxlib.py:1 explainer/examples/kv-cache/v1-editorial/package.json:1 and 121 more
- 16 references to secretsin 10 files: explainer/tools/story.py:37 explainer/tools/still_grid.py:30 .gitignore:6 and 7 more
- No requests to vote in Hot
Show all 476 signals by file
.github/workflows/validate.yml
- Dangerous shell operationline 59
run: sudo apt-get update && sudo apt-get install -y --no-install-recommends ffmpeg
.gitignore
- Access to secretsline 6
[Credential-related source omitted]
CHANGELOG.md
- Network accessline 16
- Windows / Git Bash temporary paths and native-tool CRLF output in smoke tests and delivery finalization, including portrait contact-sheet orientation ([#3](https://github.com/cclank/lanshu-create-ai-presenter-video/pull/3)). - Network accessline 17
- Windows npm cache lookup and Chrome executable suffixes for the notebook and chalkboard sound readers ([#4](https://github.com/cclank/lanshu-create-ai-presenter-video/pull/4)). The notebook reader retains its existing Chrome sandbox defau - Network accessline 28
Thanks to [@happysharegithub](https://github.com/happysharegithub) for the Windows compatibility contributions in #3 and #4.
README.md
- Network accessline 5
[](https://agentskills.io) - Network accessline 6
 - Network accessline 7
 - Network accessline 8
 - Network accessline 9
[](explainer/STYLES.md) - Network accessline 10
[](https://hyperframes.heygen.com) - Network accessline 11
<br> [](https://github.com/cclank/lanshu-create-ai-presenter-video/actions/workflows/validate.yml) [](https://github.com/cclank/lanshu-create-ai-presenter-video/actions/workflows/validate.yml) - Network accessline 13
[](LICENSE) - Network accessline 14
[](https://github.com/cclank/lanshu-create-ai-presenter-video/releases/latest) - Network accessline 15
[](https://www.python.org/) - Network accessline 16
[](https://ffmpeg.org/) - Network accessline 17
[](https://nodejs.org/) - Network accessline 18
[](https://github.com/cclank/lanshu-create-ai-presenter-video/stargazers) - Network accessline 19
<br> [](https://x.com/LufzzLiz) [](https://x.com/LufzzLiz) - Network accessline 20
[](https://x.com/LufzzLiz) - Network accessline 21
[](https://x.com/LufzzLiz) - Network accessline 25
`lanshu-create-ai-presenter-video` is an [Agent Skill](https://agentskills.io) that takes an AI agent through the full production of an explainer video. On the **presenter route** that means script, narration, presenter generation, lip-sync - Access to secretsline 140
[Credential-related source omitted] - Network accessline 149
| Claude Code | `~/.claude/skills/` or project-level `.claude/skills/` | `/lanshu-create-ai-presenter-video` | | Codex | `~/.codex/skills/` | `$lanshu-create-ai-presenter-video` | | Other Agent Skills clients | See the client's documentatio - Network accessline 151
| Other Agent Skills clients | See the client's documentation, linked from the [client list](https://agentskills.io/clients) | Client-specific | - Network accessline 156
git clone https://github.com/cclank/lanshu-create-ai-presenter-video.git \ - Network accessline 162
Tagged versions and a ready-to-extract skill ZIP are available in [Releases](https://github.com/cclank/lanshu-create-ai-presenter-video/releases). See [CHANGELOG.md](CHANGELOG.md) for version history. - Network accessline 335
[](https://x.com/LufzzLiz)
README.zh-CN.md
- Network accessline 5
[](https://agentskills.io) - Network accessline 6
 - Network accessline 7
 - Network accessline 8
 - Network accessline 9
[](explainer/STYLES.md) - Network accessline 10
[](https://hyperframes.heygen.com) - Network accessline 11
<br> [](https://github.com/cclank/lanshu-create-ai-presenter-video/actions/workflows/validate.yml) [](https://github.com/cclank/lanshu-create-ai-presenter-video/actions/workflows/validate.yml) - Network accessline 13
[](LICENSE) - Network accessline 14
[](https://github.com/cclank/lanshu-create-ai-presenter-video/releases/latest) - Network accessline 15
[](https://www.python.org/) - Network accessline 16
[](https://ffmpeg.org/) - Network accessline 17
[](https://nodejs.org/) - Network accessline 18
[](https://github.com/cclank/lanshu-create-ai-presenter-video/stargazers) - Network accessline 19
<br> [](https://x.com/LufzzLiz) [](https://x.com/LufzzLiz) - Network accessline 20
[](https://x.com/LufzzLiz) - Network accessline 21
[](https://x.com/LufzzLiz) - Network accessline 25
`lanshu-create-ai-presenter-video` 是一个 [Agent Skill](https://agentskills.io)(岚叔 · 通用数字人与讲解视频制作),带领 AI agent 走完讲解视频的全流程。**数字人路线**包括文案、配音、人物生成、口型同步、字幕与关键词动效、剪辑、渲染和质量验收;**风格化路线**从逐字对时的讲稿出发,用十二种风格之一(九种画风、三种讲法)把每句讲解演成画面,一直到渲染成片。每个阶段都以磁盘上的产物为准入证据 - Access to secretsline 128
[Credential-related source omitted] - Network accessline 136
| Claude Code | `~/.claude/skills/`,或项目内 `.claude/skills/` | `/lanshu-create-ai-presenter-video` | | Codex | `~/.codex/skills/` | `$lanshu-create-ai-presenter-video` | | 其他支持 Agent Skills 的工具 | 见该工具文档,[客户端列表](https://agentskills.io/clients) - Network accessline 138
| 其他支持 Agent Skills 的工具 | 见该工具文档,[客户端列表](https://agentskills.io/clients)附有各家说明链接 | 按该工具的方式 | - Network accessline 143
git clone https://github.com/cclank/lanshu-create-ai-presenter-video.git \ - Network accessline 149
版本标签和可直接解压到 skills 目录的安装 ZIP 见 [Releases](https://github.com/cclank/lanshu-create-ai-presenter-video/releases),版本记录见 [CHANGELOG.md](CHANGELOG.md)。 - Network accessline 319
[](https://x.com/LufzzLiz)
explainer/GOTCHAS.md
- Access to secretsline 68
[Credential-related source omitted]
explainer/core/core.js
- Executable scriptline 1
Executable file
explainer/core/sfxlib.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/examples/kv-cache/v1-editorial/hyperframes.json
explainer/examples/kv-cache/v1-editorial/index.html
- Network accessline 4
<meta charset="UTF-8"> <meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 5
<meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <link rel="stylesheet" href="lib/kit/kit.css"> - Network accessline 6
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 108
function tf(e, x, y, s) { e.style.transform = "translate(" + (x || 0).toFixed(1) + "px," + (y || 0).toFixed(1) + "px) scale(" + (s == null ? 1 : s).toFixed(4) + ")"; } function svg(parent, w, h) { var s = document.createEl - Network accessline 109
function svg(parent, w, h) { var s = document.createElementNS("http://www.w3.org/2000/svg", "svg"); s.setAttribute("class", "kv-svg"); - Network accessline 110
var s = document.createElementNS("http://www.w3.org/2000/svg", "svg"); - Network accessline 116
} function sv(parent, tag, attrs) { var e = document.createElementNS("http://www.w3.org/2000/svg", tag); - Network accessline 117
function sv(parent, tag, attrs) { var e = document.createElementNS("http://www.w3.org/2000/svg", tag); for (var k in attrs) e.setAttribute(k, attrs[k]); - Network accessline 118
var e = document.createElementNS("http://www.w3.org/2000/svg", tag);
explainer/examples/kv-cache/v1-editorial/package.json
- Executable scriptline 1
Executable file
explainer/examples/kv-cache/v1-editorial/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/examples/kv-cache/v10-reasoning/beats.js
- Executable scriptline 1
Executable file
explainer/examples/kv-cache/v10-reasoning/hyperframes.json
explainer/examples/kv-cache/v10-reasoning/index.html
- Network accessline 6
<title>V10 推演</title> <link rel="stylesheet" href="lib/kit/kit.css"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 7
<link rel="stylesheet" href="lib/kit/kit.css"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <style> - Network accessline 8
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
explainer/examples/kv-cache/v10-reasoning/package.json
- Executable scriptline 1
Executable file
explainer/examples/kv-cache/v10-reasoning/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/examples/kv-cache/v10-reasoning/tools/sfx.sh
- Executable scriptline 1
#!/usr/bin/env bash
explainer/examples/kv-cache/v11-casefile/beats.js
- Executable scriptline 1
Executable file
explainer/examples/kv-cache/v11-casefile/hyperframes.json
explainer/examples/kv-cache/v11-casefile/index.html
- Network accessline 4
<meta charset="UTF-8"> <meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 5
<meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <style> - Network accessline 6
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
explainer/examples/kv-cache/v11-casefile/package.json
- Executable scriptline 1
Executable file
explainer/examples/kv-cache/v11-casefile/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/examples/kv-cache/v11-casefile/tools/sfx.sh
- Executable scriptline 1
#!/usr/bin/env bash
explainer/examples/kv-cache/v12-sitcom/beats.js
- Executable scriptline 1
Executable file
explainer/examples/kv-cache/v12-sitcom/hyperframes.json
explainer/examples/kv-cache/v12-sitcom/index.html
- Network accessline 4
<meta charset="UTF-8"> <meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 5
<meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <link rel="stylesheet" href="lib/kit/kit.css"> - Network accessline 6
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
explainer/examples/kv-cache/v12-sitcom/package.json
- Executable scriptline 1
Executable file
explainer/examples/kv-cache/v12-sitcom/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/examples/kv-cache/v12-sitcom/tools/sfx.sh
- Executable scriptline 1
#!/usr/bin/env bash
explainer/examples/kv-cache/v12-sitcom/tools/sfx_beats.py
- Executable scriptline 1
Executable file
explainer/examples/kv-cache/v2-signal/hyperframes.json
explainer/examples/kv-cache/v2-signal/index.html
- Network accessline 4
<meta charset="UTF-8"> <meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 5
<meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <link rel="stylesheet" href="lib/kit/kit.css"> - Network accessline 6
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 505
} } const NS = "http://www.w3.org/2000/svg"; - Network accessline 506
} const NS = "http://www.w3.org/2000/svg"; function sv(tag, attrs, parent) { - Network accessline 507
const NS = "http://www.w3.org/2000/svg";
explainer/examples/kv-cache/v2-signal/package.json
- Executable scriptline 1
Executable file
explainer/examples/kv-cache/v2-signal/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/examples/kv-cache/v3-notebook/hyperframes.json
explainer/examples/kv-cache/v3-notebook/index.html
- Network accessline 4
<meta charset="UTF-8"> <meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 5
<meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <script src="lib/core.js"></script> - Network accessline 6
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 161
const rowT = (n) => b3.mei + 0.03 + (n - 1) * 0.15; const cellD = (n, j) => g.rect(TX(j) + 3, RY(n), TW - 6, CH, 100 + n * 10 + j, 1.8); const NS = "http://www.w3.org/2000/svg"; - Network accessline 162
const cellD = (n, j) => g.rect(TX(j) + 3, RY(n), TW - 6, CH, 100 + n * 10 + j, 1.8); const NS = "http://www.w3.org/2000/svg"; const rows = []; - Network accessline 163
const NS = "http://www.w3.org/2000/svg";
explainer/examples/kv-cache/v3-notebook/package.json
- Executable scriptline 1
Executable file
explainer/examples/kv-cache/v3-notebook/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/examples/kv-cache/v4-paper/hyperframes.json
explainer/examples/kv-cache/v4-paper/index.html
- Network accessline 4
<meta charset="UTF-8"> <meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 5
<meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <link rel="stylesheet" href="lib/kit/kit.css"> - Network accessline 6
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 268
}); // the look-back strings (beat 2) var svgNS = "http://www.w3.org/2000/svg"; - Network accessline 269
// the look-back strings (beat 2) var svgNS = "http://www.w3.org/2000/svg"; function svgLayer(id, z) { - Network accessline 270
var svgNS = "http://www.w3.org/2000/svg";
explainer/examples/kv-cache/v4-paper/package.json
- Executable scriptline 1
Executable file
explainer/examples/kv-cache/v4-paper/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/examples/kv-cache/v5-comic/hyperframes.json
explainer/examples/kv-cache/v5-comic/index.html
- Network accessline 4
<meta charset="UTF-8"> <meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 5
<meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <link rel="stylesheet" href="lib/kit/kit.css"> - Network accessline 6
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
explainer/examples/kv-cache/v5-comic/package.json
- Executable scriptline 1
Executable file
explainer/examples/kv-cache/v5-comic/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/examples/kv-cache/v6-cinematic/hyperframes.json
explainer/examples/kv-cache/v6-cinematic/index.html
- Network accessline 8
{ "imports": { "three": "https://cdn.jsdelivr.net/npm/three@0.181.2/build/three.module.js", - Network accessline 9
"imports": { "three": "https://cdn.jsdelivr.net/npm/three@0.181.2/build/three.module.js", "three/addons/": "https://cdn.jsdelivr.net/npm/three@0.181.2/examples/jsm/" - Network accessline 10
"three": "https://cdn.jsdelivr.net/npm/three@0.181.2/build/three.module.js", - Network accessline 11
"three/addons/": "https://cdn.jsdelivr.net/npm/three@0.181.2/examples/jsm/"
explainer/examples/kv-cache/v6-cinematic/package.json
- Executable scriptline 1
Executable file
explainer/examples/kv-cache/v6-cinematic/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/examples/kv-cache/v7-drafting/hyperframes.json
explainer/examples/kv-cache/v7-drafting/index.html
- Network accessline 6
<title>KV cache · V7 图纸与注脚</title> <link rel="stylesheet" href="lib/kit/kit.css"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 7
<link rel="stylesheet" href="lib/kit/kit.css"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <style> - Network accessline 8
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
explainer/examples/kv-cache/v7-drafting/package.json
- Executable scriptline 1
Executable file
explainer/examples/kv-cache/v7-drafting/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/examples/kv-cache/v8-chalkboard/hyperframes.json
explainer/examples/kv-cache/v8-chalkboard/index.html
- Network accessline 5
<meta name="viewport" content="width=1920, height=1080"> <title>KV cache · V8 黑板报</title> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 6
<title>KV cache · V8 黑板报</title> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <link rel="stylesheet" href="lib/kit/kit.css"> - Network accessline 7
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
explainer/examples/kv-cache/v8-chalkboard/package.json
- Executable scriptline 1
Executable file
explainer/examples/kv-cache/v8-chalkboard/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/examples/kv-cache/v9-clay/hyperframes.json
explainer/examples/kv-cache/v9-clay/index.html
- Network accessline 8
{ "imports": { "three": "https://cdn.jsdelivr.net/npm/three@0.181.2/build/three.module.js", - Network accessline 9
"imports": { "three": "https://cdn.jsdelivr.net/npm/three@0.181.2/build/three.module.js", "three/addons/": "https://cdn.jsdelivr.net/npm/three@0.181.2/examples/jsm/" - Network accessline 10
"three": "https://cdn.jsdelivr.net/npm/three@0.181.2/build/three.module.js", - Network accessline 11
"three/addons/": "https://cdn.jsdelivr.net/npm/three@0.181.2/examples/jsm/"
explainer/examples/kv-cache/v9-clay/package.json
- Executable scriptline 1
Executable file
explainer/examples/kv-cache/v9-clay/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v1-editorial/kit.js
- Executable scriptline 1
Executable file - Network accessline 24
} function svgEl(tag, attrs) { const e = document.createElementNS("http://www.w3.org/2000/svg", tag); - Network accessline 25
function svgEl(tag, attrs) { const e = document.createElementNS("http://www.w3.org/2000/svg", tag); for (const k in attrs || {}) e.setAttribute(k, attrs[k]); - Network accessline 26
const e = document.createElementNS("http://www.w3.org/2000/svg", tag);
explainer/kits/v1-editorial/paper-grain.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
explainer/kits/v1-editorial/starter/beats.js
- Executable scriptline 1
Executable file
explainer/kits/v1-editorial/starter/hyperframes.json
explainer/kits/v1-editorial/starter/index.html
- Network accessline 4
<meta charset="UTF-8"> <meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 5
<meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <link rel="stylesheet" href="lib/kit/kit.css"> - Network accessline 6
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 93
function tf(e, x, y, s) { e.style.transform = "translate(" + (x || 0).toFixed(1) + "px," + (y || 0).toFixed(1) + "px) scale(" + (s == null ? 1 : s).toFixed(4) + ")"; } function svg(parent, w, h) { const s = document.create - Network accessline 94
function svg(parent, w, h) { const s = document.createElementNS("http://www.w3.org/2000/svg", "svg"); s.setAttribute("class", "v1-svg"); - Network accessline 95
const s = document.createElementNS("http://www.w3.org/2000/svg", "svg"); - Network accessline 101
} function sv(parent, tag, attrs) { const e = document.createElementNS("http://www.w3.org/2000/svg", tag); - Network accessline 102
function sv(parent, tag, attrs) { const e = document.createElementNS("http://www.w3.org/2000/svg", tag); for (const k in attrs) e.setAttribute(k, attrs[k]); - Network accessline 103
const e = document.createElementNS("http://www.w3.org/2000/svg", tag);
explainer/kits/v1-editorial/starter/package.json
- Executable scriptline 1
Executable file
explainer/kits/v1-editorial/starter/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v1-editorial/starter/tools/sfx.sh
- Executable scriptline 1
#!/usr/bin/env bash
explainer/kits/v10-reasoning/kit.js
- Executable scriptline 1
Executable file - Network accessline 15
if (!C) throw new Error("kit v10-reasoning: load lib/core.js before lib/kit/kit.js"); const { clamp01, pr, lerp, E, track } = C; const NS = "http://www.w3.org/2000/svg"; - Network accessline 16
const { clamp01, pr, lerp, E, track } = C; const NS = "http://www.w3.org/2000/svg"; const T = { - Network accessline 17
const NS = "http://www.w3.org/2000/svg";
explainer/kits/v10-reasoning/starter/beats.js
- Executable scriptline 1
Executable file
explainer/kits/v10-reasoning/starter/hyperframes.json
explainer/kits/v10-reasoning/starter/index.html
- Network accessline 6
<title>V10 推演</title> <link rel="stylesheet" href="lib/kit/kit.css"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 7
<link rel="stylesheet" href="lib/kit/kit.css"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <style> - Network accessline 8
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
explainer/kits/v10-reasoning/starter/package.json
- Executable scriptline 1
Executable file
explainer/kits/v10-reasoning/starter/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v10-reasoning/starter/tools/sfx.sh
- Executable scriptline 1
#!/usr/bin/env bash
explainer/kits/v11-casefile/casefile_sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v11-casefile/cork.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="384" height="384" viewBox="0 0 384 384">
explainer/kits/v11-casefile/events.mjs
- Executable scriptline 1
Executable file
explainer/kits/v11-casefile/kit.js
- Executable scriptline 1
Executable file - Network accessline 20
if (!C) throw new Error("kit v11-casefile: load lib/core.js first"); const { clamp01, pr, E, hash } = C; const NS = "http://www.w3.org/2000/svg"; - Network accessline 21
const { clamp01, pr, E, hash } = C; const NS = "http://www.w3.org/2000/svg"; const COL = { - Network accessline 22
const NS = "http://www.w3.org/2000/svg";
explainer/kits/v11-casefile/stamp-ink.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="220" height="220" viewBox="0 0 220 220">
explainer/kits/v11-casefile/starter/beats.js
- Executable scriptline 1
Executable file
explainer/kits/v11-casefile/starter/hyperframes.json
explainer/kits/v11-casefile/starter/index.html
- Network accessline 4
<meta charset="UTF-8"> <meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 5
<meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <style> - Network accessline 6
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
explainer/kits/v11-casefile/starter/package.json
- Executable scriptline 1
Executable file
explainer/kits/v11-casefile/starter/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v11-casefile/starter/tools/sfx.sh
- Executable scriptline 1
#!/usr/bin/env bash
explainer/kits/v12-sitcom/kit.js
explainer/kits/v12-sitcom/sitcom_sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v12-sitcom/starter/beats.js
- Executable scriptline 1
Executable file
explainer/kits/v12-sitcom/starter/hyperframes.json
explainer/kits/v12-sitcom/starter/index.html
- Network accessline 4
<meta charset="UTF-8"> <meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 5
<meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <link rel="stylesheet" href="lib/kit/kit.css"> - Network accessline 6
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
explainer/kits/v12-sitcom/starter/package.json
- Executable scriptline 1
Executable file
explainer/kits/v12-sitcom/starter/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v12-sitcom/starter/tools/sfx.sh
- Executable scriptline 1
#!/usr/bin/env bash
explainer/kits/v12-sitcom/starter/tools/sfx_beats.py
- Executable scriptline 1
Executable file
explainer/kits/v2-signal/kit.js
- Executable scriptline 1
Executable file - Network accessline 9
const C = g.ExplainerCore; const { clamp01, pr, E, hash } = C; const NS = "http://www.w3.org/2000/svg"; - Network accessline 10
const { clamp01, pr, E, hash } = C; const NS = "http://www.w3.org/2000/svg"; let SEED = 1; - Network accessline 11
const NS = "http://www.w3.org/2000/svg";
explainer/kits/v2-signal/sfx_signal.py
- Executable scriptline 1
Executable file
explainer/kits/v2-signal/starter/beats.js
- Executable scriptline 1
Executable file
explainer/kits/v2-signal/starter/hyperframes.json
explainer/kits/v2-signal/starter/index.html
- Network accessline 4
<meta charset="UTF-8"> <meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 5
<meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <link rel="stylesheet" href="lib/kit/kit.css"> - Network accessline 6
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 359
} } const NS = "http://www.w3.org/2000/svg"; - Network accessline 360
} const NS = "http://www.w3.org/2000/svg"; function sv(tag, attrs, parent) { - Network accessline 361
const NS = "http://www.w3.org/2000/svg";
explainer/kits/v2-signal/starter/package.json
- Executable scriptline 1
Executable file
explainer/kits/v2-signal/starter/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v2-signal/starter/tools/sfx.sh
- Executable scriptline 1
#!/usr/bin/env bash
explainer/kits/v3-notebook/events.mjs
- Executable scriptline 1
Executable file
explainer/kits/v3-notebook/kit.css
- Network accessline 116
height: 46px; margin-top: -25px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 46 46'%3E%3Cpath d='M 6 24 L 17 36 L 40 9' fill='none' stroke='%23c63d2f' stroke-width='6' stroke-linecap='round - Network accessline 117
margin-top: -25px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 46 46'%3E%3Cpath d='M 6 24 L 17 36 L 40 9' fill='none' stroke='%23c63d2f' stroke-width='6' stroke-linecap='round' stroke-linejoi - Network accessline 118
background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 46 46'%3E%3Cpath d='M 6 24 L 17 36 L 40 9' fill='none' stroke='%23c63d2f' stroke-width='6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg% - Network accessline 141
bottom: -14px; height: 12px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 12' preserveAspectRatio='none'%3E%3Cpath d='M 2 7 Q 60 3 110 6 T 198 5' fill='none' stroke='%23c63d2f' stroke-wi - Network accessline 142
height: 12px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 12' preserveAspectRatio='none'%3E%3Cpath d='M 2 7 Q 60 3 110 6 T 198 5' fill='none' stroke='%23c63d2f' stroke-width='3.2' stroke- - Network accessline 143
background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 12' preserveAspectRatio='none'%3E%3Cpath d='M 2 7 Q 60 3 110 6 T 198 5' fill='none' stroke='%23c63d2f' stroke-width='3.2' stroke-linecap='round' - Network accessline 199
width: calc(var(--ul, 0) * 100%); height: 0.16em; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 16'%3E%3Cpath d='M 0 8 Q 10 1 20 8 T 40 8' fill='none' stroke='%23c63d2f' stroke-width='3.4' - Network accessline 200
height: 0.16em; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 16'%3E%3Cpath d='M 0 8 Q 10 1 20 8 T 40 8' fill='none' stroke='%23c63d2f' stroke-width='3.4' stroke-linecap='round'/%3E%3C/svg%3 - Network accessline 201
background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 16'%3E%3Cpath d='M 0 8 Q 10 1 20 8 T 40 8' fill='none' stroke='%23c63d2f' stroke-width='3.4' stroke-linecap='round'/%3E%3C/svg%3E") 0 50% / 0.42em
explainer/kits/v3-notebook/kit.js
- Executable scriptline 1
Executable file - Network accessline 17
if (!C) throw new Error("kit v3-notebook: load lib/core.js first"); const { clamp01, pr, E, hash } = C; const NS = "http://www.w3.org/2000/svg"; - Network accessline 18
const { clamp01, pr, E, hash } = C; const NS = "http://www.w3.org/2000/svg"; const COL = { - Network accessline 19
const NS = "http://www.w3.org/2000/svg";
explainer/kits/v3-notebook/notebook_sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v3-notebook/paper-grain.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
explainer/kits/v3-notebook/starter/beats.js
- Executable scriptline 1
Executable file
explainer/kits/v3-notebook/starter/hyperframes.json
explainer/kits/v3-notebook/starter/index.html
- Network accessline 4
<meta charset="UTF-8"> <meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 5
<meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <style> - Network accessline 6
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
explainer/kits/v3-notebook/starter/package.json
- Executable scriptline 1
Executable file
explainer/kits/v3-notebook/starter/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v3-notebook/starter/tools/sfx.sh
- Executable scriptline 1
#!/usr/bin/env bash
explainer/kits/v4-paper/kit.js
- Executable scriptline 1
Executable file - Network accessline 476
const push = h("div", "kit-recap-push"); push.appendChild(h("div", "kit-recap-land", `<svg viewBox="0 0 1920 420" preserveAspectRatio="none"><path d="M 0 110 C 220 60, 420 70, 640 100 C 860 130, 1060 50, 1300 70 C 1540 90, 1720 120, 192 - Network accessline 477
push.appendChild(h("div", "kit-recap-land", `<svg viewBox="0 0 1920 420" preserveAspectRatio="none"><path d="M 0 110 C 220 60, 420 70, 640 100 C 860 130, 1060 50, 1300 70 C 1540 90, 1720 120, 1920 80 L 1920 420 L 0 420 Z" fill="#bcd4e6" opa - Network accessline 478
const svgNS = "http://www.w3.org/2000/svg";
explainer/kits/v4-paper/paper-grain.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
explainer/kits/v4-paper/paper_sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v4-paper/starter/beats.js
- Executable scriptline 1
Executable file
explainer/kits/v4-paper/starter/hyperframes.json
explainer/kits/v4-paper/starter/index.html
- Network accessline 4
<meta charset="UTF-8"> <meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 5
<meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <link rel="stylesheet" href="lib/kit/kit.css"> - Network accessline 6
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
explainer/kits/v4-paper/starter/package.json
- Executable scriptline 1
Executable file
explainer/kits/v4-paper/starter/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v4-paper/starter/tools/sfx.sh
- Executable scriptline 1
#!/usr/bin/env bash
explainer/kits/v4-paper/starter/tools/sfx_beats.py
- Executable scriptline 1
Executable file
explainer/kits/v5-comic/kit.js
- Executable scriptline 1
Executable file - Network accessline 14
if (!C) throw new Error("kit v5-comic: load lib/core.js before lib/kit/kit.js"); const { clamp01, E, hash } = C; const NS = "http://www.w3.org/2000/svg"; - Network accessline 15
const { clamp01, E, hash } = C; const NS = "http://www.w3.org/2000/svg"; const COL = { ink: "#141414", paper: "#fff6e0", white: "#ffffff", accent: "#ff4fa3", blue: "#1c7bd1", yellow: "#ffe14d", warn: "#ff5a36", ok: "#2fbf5a" }; - Network accessline 16
const NS = "http://www.w3.org/2000/svg";
explainer/kits/v5-comic/starter/beats.js
- Executable scriptline 1
Executable file
explainer/kits/v5-comic/starter/hyperframes.json
explainer/kits/v5-comic/starter/index.html
- Network accessline 4
<meta charset="UTF-8"> <meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 5
<meta name="viewport" content="width=1920, height=1080"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <link rel="stylesheet" href="lib/kit/kit.css"> - Network accessline 6
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
explainer/kits/v5-comic/starter/package.json
- Executable scriptline 1
Executable file
explainer/kits/v5-comic/starter/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v5-comic/starter/tools/sfx.sh
- Executable scriptline 1
#!/usr/bin/env bash
explainer/kits/v6-cinematic/grain.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
explainer/kits/v6-cinematic/kit.js
- Executable scriptline 1
Executable file - Network accessline 265
const el = mk("div", "kit-recap"); const scrim = mk("div", "kit-recap-scrim"); const ns = "http://www.w3.org/2000/svg"; - Network accessline 266
const scrim = mk("div", "kit-recap-scrim"); const ns = "http://www.w3.org/2000/svg"; const svg = document.createElementNS(ns, "svg"); - Network accessline 267
const ns = "http://www.w3.org/2000/svg";
explainer/kits/v6-cinematic/starter/beats.js
- Executable scriptline 1
Executable file
explainer/kits/v6-cinematic/starter/hyperframes.json
explainer/kits/v6-cinematic/starter/index.html
- Network accessline 8
{ "imports": { "three": "https://cdn.jsdelivr.net/npm/three@0.181.2/build/three.module.js", - Network accessline 9
"imports": { "three": "https://cdn.jsdelivr.net/npm/three@0.181.2/build/three.module.js", "three/addons/": "https://cdn.jsdelivr.net/npm/three@0.181.2/examples/jsm/" - Network accessline 10
"three": "https://cdn.jsdelivr.net/npm/three@0.181.2/build/three.module.js", - Network accessline 11
"three/addons/": "https://cdn.jsdelivr.net/npm/three@0.181.2/examples/jsm/"
explainer/kits/v6-cinematic/starter/package.json
- Executable scriptline 1
Executable file
explainer/kits/v6-cinematic/starter/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v6-cinematic/starter/tools/sfx.sh
- Executable scriptline 1
#!/usr/bin/env bash
explainer/kits/v7-drafting/grain.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
explainer/kits/v7-drafting/kit.js
- Executable scriptline 1
Executable file - Network accessline 14
if (!C) throw new Error("kit v7-drafting: load lib/core.js before lib/kit/kit.js"); const { clamp01, pr, lerp, E, hash, track } = C; const NS = "http://www.w3.org/2000/svg"; - Network accessline 15
const { clamp01, pr, lerp, E, hash, track } = C; const NS = "http://www.w3.org/2000/svg"; const T = { - Network accessline 16
const NS = "http://www.w3.org/2000/svg";
explainer/kits/v7-drafting/starter/beats.js
- Executable scriptline 1
Executable file
explainer/kits/v7-drafting/starter/hyperframes.json
explainer/kits/v7-drafting/starter/index.html
- Network accessline 6
<title>V7 图纸与注脚</title> <link rel="stylesheet" href="lib/kit/kit.css"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 7
<link rel="stylesheet" href="lib/kit/kit.css"> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <style> - Network accessline 8
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>
explainer/kits/v7-drafting/starter/package.json
- Executable scriptline 1
Executable file
explainer/kits/v7-drafting/starter/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v7-drafting/starter/tools/sfx.sh
- Executable scriptline 1
#!/usr/bin/env bash
explainer/kits/v8-chalkboard/chalklog.mjs
- Executable scriptline 1
#!/usr/bin/env node - Network accessline 62
await page.setRequestInterception(true); page.on("request", (r) => (/\.(wav|mp3|mp4)$/.test(r.url()) ? r.abort() : r.continue())); await page.goto(`http://127.0.0.1:${port}/index.html`, { waitUntil: "domcontentloaded", timeout: 60000 }) - Network accessline 63
page.on("request", (r) => (/\.(wav|mp3|mp4)$/.test(r.url()) ? r.abort() : r.continue())); await page.goto(`http://127.0.0.1:${port}/index.html`, { waitUntil: "domcontentloaded", timeout: 60000 }); await page.waitForFunction(() => window - Network accessline 64
await page.goto(`http://127.0.0.1:${port}/index.html`, { waitUntil: "domcontentloaded", timeout: 60000 });
explainer/kits/v8-chalkboard/grain.svg
- Network accessline 1
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512">
explainer/kits/v8-chalkboard/kit.js
- Executable scriptline 1
Executable file - Network accessline 13
if (!X) throw new Error("kit v8-chalkboard: load lib/core.js first"); const { clamp01, pr, lerp, E, hash, track } = X; const NS = "http://www.w3.org/2000/svg"; - Network accessline 15
const NS = "http://www.w3.org/2000/svg"; - Network accessline 676
function toneRuns(text, tone, baseTone) { const runs = [], isL = (ch) => /[A-Za-z0-9≈$%.–\/]/.test(ch); let cur = "", curL = null; - Network accessline 677
const runs = [], isL = (ch) => /[A-Za-z0-9≈$%.–\/]/.test(ch); let cur = "", curL = null; Array.from(text).forEach((ch) => { - Network accessline 678
let cur = "", curL = null; - Network accessline 679
Array.from(text).forEach((ch) => { const l = ch === " " || ch === "·" ? curL : isL(ch); if (curL !== null && l !== curL) { runs.push([cur, curL]); cur = ""; } - Network accessline 680
const l = ch === " " || ch === "·" ? curL : isL(ch); - Network accessline 681
if (curL !== null && l !== curL) { runs.push([cur, curL]); cur = ""; } - Network accessline 682
cur += ch; curL = l; }); - Network accessline 683
curL = l;
explainer/kits/v8-chalkboard/starter/beats.js
- Executable scriptline 1
Executable file
explainer/kits/v8-chalkboard/starter/hyperframes.json
explainer/kits/v8-chalkboard/starter/index.html
- Network accessline 5
<meta name="viewport" content="width=1920, height=1080"> <title>V8 黑板报 · starter</title> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 6
<title>V8 黑板报 · starter</title> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <link rel="stylesheet" href="lib/kit/kit.css"> - Network accessline 7
<script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> - Network accessline 386
// the lesson in one row under the closing line: a mini panel per chapter, in its board colour and border var tb0 = MAST.rows.length ? MAST.rows[MAST.rows.length - 1].y + MAST.rows[MAST.rows.length - 1].size * 1.25 : 600; - Network accessline 387
var tb0 = MAST.rows.length ? MAST.rows[MAST.rows.length - 1].y + MAST.rows[MAST.rows.length - 1].size * 1.25 : 600; var stripY = Math.round(Math.max(tb0 + 30, 790)), nC = STA.length; if (API.options.outline !== false && - Network accessline 388
var stripY = Math.round(Math.max(tb0 + 30, 790)), nC = STA.length; - Network accessline 389
if (API.options.outline !== false && stripY + 120 <= PH - 40) { var bw = Math.min(330, (PM.w - 180 - (nC - 1) * 24) / nC), Le2 = story.line(END), ts0 = story.end.start + 0.25, tsp = Math.min(0.3, (Le2.end - Le2.start) * 0.45 / n - Network accessline 390
var bw = Math.min(330, (PM.w - 180 - (nC - 1) * 24) / nC), Le2 = story.line(END), ts0 = story.end.start + 0.25, tsp = Math.min(0.3, (Le2.end - Le2.start) * 0.45 / nC);
explainer/kits/v8-chalkboard/starter/package.json
- Executable scriptline 1
Executable file
explainer/kits/v8-chalkboard/starter/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v8-chalkboard/starter/tools/sfx.sh
- Executable scriptline 1
#!/usr/bin/env bash
explainer/kits/v9-clay/kit.js
- Executable scriptline 1
Executable file
explainer/kits/v9-clay/starter/beats.js
- Executable scriptline 1
Executable file
explainer/kits/v9-clay/starter/hyperframes.json
explainer/kits/v9-clay/starter/index.html
- Network accessline 8
{ "imports": { "three": "https://cdn.jsdelivr.net/npm/three@0.181.2/build/three.module.js", - Network accessline 9
"imports": { "three": "https://cdn.jsdelivr.net/npm/three@0.181.2/build/three.module.js", "three/addons/": "https://cdn.jsdelivr.net/npm/three@0.181.2/examples/jsm/" - Network accessline 10
"three": "https://cdn.jsdelivr.net/npm/three@0.181.2/build/three.module.js", - Network accessline 11
"three/addons/": "https://cdn.jsdelivr.net/npm/three@0.181.2/examples/jsm/" - Network accessline 546
const chap = Kit.chapters($("chap"), story); const title = END ? Kit.title(story, { parent: $("stage") }) : null; const leaders = document.createElementNS("http://www.w3.org/2000/svg", "svg"); - Network accessline 547
const title = END ? Kit.title(story, { parent: $("stage") }) : null; const leaders = document.createElementNS("http://www.w3.org/2000/svg", "svg"); leaders.id = "leaders"; - Network accessline 548
const leaders = document.createElementNS("http://www.w3.org/2000/svg", "svg"); - Network accessline 554
const draft = story.data.draft ? Kit.sticker('<div class="ph-draft">草稿 · 无配音</div>', { x: W - 64, y: 52, ax: 1, ay: 0, clamp: false }) : null; const LEAD = RECAP ? RECAP.points.map(() => { const g = document.createElementNS("h - Network accessline 555
const LEAD = RECAP ? RECAP.points.map(() => { const g = document.createElementNS("http://www.w3.org/2000/svg", "g"); g.innerHTML = '<line x1="0" y1="0" x2="0" y2="0"></line><circle r="8" cx="0" cy="0"></circle>'; - Network accessline 556
const g = document.createElementNS("http://www.w3.org/2000/svg", "g");
explainer/kits/v9-clay/starter/package.json
- Executable scriptline 1
Executable file
explainer/kits/v9-clay/starter/tools/plan.mjs
- Executable scriptline 1
Executable file
explainer/kits/v9-clay/starter/tools/sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/kits/v9-clay/starter/tools/sfx.sh
- Executable scriptline 1
#!/usr/bin/env bash
explainer/tools/docs.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/tools/fonts.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 37
DYH_VERSION = "3.0.0" DYH_CDN = f"https://cdn.jsdelivr.net/npm/@chinese-fonts/dyh@{DYH_VERSION}/dist/SmileySans-Oblique/" - Network accessline 38
DYH_CDN = f"https://cdn.jsdelivr.net/npm/@chinese-fonts/dyh@{DYH_VERSION}/dist/SmileySans-Oblique/" - Access to secretsline 39
[Credential-related source omitted] - Network accessline 75
def fetch(url: str) -> bytes: - Network accessline 76
request = urllib.request.Request(url, headers={"User-Agent": UA}) - Network accessline 77
with urllib.request.urlopen(request, timeout=60) as response: - Network accessline 81
def google_face(key: str, spec: dict, chars: str) -> str: query = urllib.parse.quote(chars, safe="") css = fetch(f"https://fonts.googleapis.com/css2?family={spec['css']}&text={query}&display=block").decode() - Network accessline 82
query = urllib.parse.quote(chars, safe="") css = fetch(f"https://fonts.googleapis.com/css2?family={spec['css']}&text={query}&display=block").decode() urls = re.findall(r"url\((https://[^)]+)\)", css) - Network accessline 83
css = fetch(f"https://fonts.googleapis.com/css2?family={spec['css']}&text={query}&display=block").decode() - Network accessline 84
urls = re.findall(r"url\((https://[^)]+)\)", css) - Network accessline 86
raise SystemExit(f"{key}: expected one subset url, got {len(urls)}") target = OUT / f"{key}.woff2" target.write_bytes(fetch(urls[0])) - Network accessline 87
target = OUT / f"{key}.woff2" target.write_bytes(fetch(urls[0])) return face(spec, f"assets/fonts/{key}.woff2") - Network accessline 88
target.write_bytes(fetch(urls[0])) - Network accessline 111
def dyh_faces(spec: dict, chars: str) -> list[str]: base = DYH_DIR / "dist" / "SmileySans-Oblique" if DYH_DIR else None css = (base / "result.css").read_text(encoding="utf-8") if base else fetch(DYH_CDN + "result.css").decode() - Network accessline 112
base = DYH_DIR / "dist" / "SmileySans-Oblique" if DYH_DIR else None css = (base / "result.css").read_text(encoding="utf-8") if base else fetch(DYH_CDN + "result.css").decode() target_dir = OUT / "smiley-sans" - Network accessline 113
css = (base / "result.css").read_text(encoding="utf-8") if base else fetch(DYH_CDN + "result.css").decode() - Network accessline 126
shutil.copy2(base / src.group(1), target_dir / name) else: (target_dir / name).write_bytes(fetch(DYH_CDN + src.group(1))) - Network accessline 127
else: (target_dir / name).write_bytes(fetch(DYH_CDN + src.group(1))) rules.append(face(spec, f"assets/fonts/smiley-sans/{Path(src.group(1)).name}", ranges.group(1).strip())) - Network accessline 128
(target_dir / name).write_bytes(fetch(DYH_CDN + src.group(1)))
explainer/tools/grid.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/tools/new_film.sh
explainer/tools/new_topic.sh
- Executable scriptline 1
#!/usr/bin/env bash
explainer/tools/qa.py
explainer/tools/render.sh
explainer/tools/srt.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/tools/stamp.py
- Executable scriptline 1
#!/usr/bin/env python3
explainer/tools/still_grid.py
explainer/tools/story.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 37
[Credential-related source omitted] - Network accessline 150
[Credential-related source omitted] - Access to secretsline 150
[Credential-related source omitted] - Network accessline 151
[Credential-related source omitted] - Access to secretsline 151
[Credential-related source omitted] - Network accessline 155
if pronounce: body["pronunciation_dict"] = {"tone": list(pronounce)} req = urllib.request.Request(base + "/v1/t2a_v2", data=json.dumps(body).encode(), - Network accessline 156
[Credential-related source omitted] - Network accessline 157
req = urllib.request.Request(base + "/v1/t2a_v2", data=json.dumps(body).encode(), - Network accessline 158
[Credential-related source omitted] - Network accessline 159
with urllib.request.urlopen(req, timeout=120) as response: - Network accessline 164
if not url: sys.exit(f"MiniMax returned no word timestamps for 「{text}」 (subtitle_file missing)") with urllib.request.urlopen(url, timeout=60) as response: - Network accessline 165
sys.exit(f"MiniMax returned no word timestamps for 「{text}」 (subtitle_file missing)") with urllib.request.urlopen(url, timeout=60) as response: subs = json.load(response) - Network accessline 166
with urllib.request.urlopen(url, timeout=60) as response: - Access to secretsline 378
[Credential-related source omitted] - Access to secretsline 379
[Credential-related source omitted] - Access to secretsline 380
[Credential-related source omitted]
explainer/tools/sync.sh
- Executable scriptline 1
#!/usr/bin/env bash
references/styled-explainer.md
- Access to secretsline 18
[Credential-related source omitted] - Network accessline 25
The default voice is MiniMax `Chinese (Mandarin)_Reliable_Executive` (a steady male voice) at speed 1.1; set `voice:` and `speed:` in `script.md` to change it — the user picks a system voice ID from the voice library in their MiniMax consol - Network accessline 26
and `speed:` in `script.md` to change it — the user picks a system voice ID from the voice library in their MiniMax console. The international API is `https://api.minimax.io` (the default); mainland-China accounts use their console's endpoi - Network accessline 27
console. The international API is `https://api.minimax.io` (the default); mainland-China accounts use their console's - Network accessline 28
endpoint via `MINIMAX_BASE_URL` (typically `https://api.minimaxi.com`). Write names, numbers and acronyms in the
scripts/check_state.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/finalize_delivery.sh
scripts/init_job.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/plan_segments.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/preflight.py
- Executable scriptline 1
#!/usr/bin/env python3
tests/explainer_smoke.sh
tests/smoke.sh
tests/story_timing.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 53
with self.subTest(pronounce=pronounce), tempfile.TemporaryDirectory() as tmp: api_result = {"base_resp": {"status_code": 0}, "data": { "audio": "00ff", "subtitle_file": "https://example.invalid/subtitles" - Network accessline 54
api_result = {"base_resp": {"status_code": 0}, "data": { "audio": "00ff", "subtitle_file": "https://example.invalid/subtitles" }} - Network accessline 55
"audio": "00ff", "subtitle_file": "https://example.invalid/subtitles" - Access to secretsline 60
[Credential-related source omitted]
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Declared and executed: 14 facts
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionexplainer/kits/v1-editorial/kit.js:26High confidence
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionexplainer/kits/v10-reasoning/kit.js:17High confidence
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionexplainer/kits/v11-casefile/kit.js:22High confidence
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionexplainer/kits/v12-sitcom/kit.js:23High confidence
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionexplainer/kits/v2-signal/kit.js:11High confidence
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionexplainer/kits/v3-notebook/kit.js:19High confidence
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionexplainer/kits/v4-paper/kit.js:478High confidence
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionexplainer/kits/v5-comic/kit.js:16High confidence
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionexplainer/kits/v6-cinematic/kit.js:267High confidence
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionexplainer/kits/v7-drafting/kit.js:16High confidence
- Contacts www.w3.org, which SKILL.md, the README and the plugin manifest do not mentionexplainer/kits/v8-chalkboard/kit.js:15High confidence
- Contacts cdn.jsdelivr.net, which SKILL.md, the README and the plugin manifest do not mentionexplainer/tools/fonts.py:38High confidence
- Contacts fonts.googleapis.com, which SKILL.md, the README and the plugin manifest do not mentionexplainer/tools/fonts.py:83High confidence
- Contacts api.minimax.io, which SKILL.md, the README and the plugin manifest do not mentionexplainer/tools/story.py:151High confidence
Signal confidence: 274 facts
- Network access in prose of documentationCHANGELOG.md:16Low confidence
- Network access in prose of documentationCHANGELOG.md:17Low confidence
- Network access in prose of documentationCHANGELOG.md:28Low confidence
- Network access in prose of documentationREADME.md:5Low confidence
- Network access in prose of documentationREADME.md:6Low confidence
- Network access in prose of documentationREADME.md:7Low confidence
- Network access in prose of documentationREADME.md:8Low confidence
- Network access in prose of documentationREADME.md:9Low confidence
- Network access in prose of documentationREADME.md:10Low confidence
- Network access in prose of documentationREADME.md:11Low confidence
- Network access in prose of documentationREADME.md:12Low confidence
- Network access in prose of documentationREADME.md:13Low confidence
- Network access in prose of documentationREADME.md:14Low confidence
- Network access in prose of documentationREADME.md:15Low confidence
- Network access in prose of documentationREADME.md:16Low confidence
- Network access in prose of documentationREADME.md:17Low confidence
- Network access in prose of documentationREADME.md:18Low confidence
- Network access in prose of documentationREADME.md:19Low confidence
- Network access in prose of documentationREADME.md:20Low confidence
- Network access in prose of documentationREADME.md:21Low confidence
- Network access in prose of documentationREADME.md:25Low confidence
- Access to secrets in prose of documentation: a variable, placeholder or call, not a stored valueREADME.md:140Low confidence
- Network access in prose of documentationREADME.md:149Low confidence
- Network access in prose of documentationREADME.md:151Low confidence
- Network access in code of documentationREADME.md:156Low confidence
- Network access in prose of documentationREADME.md:162Low confidence
- Network access in prose of documentationREADME.md:335Low confidence
- Network access in prose of documentationREADME.zh-CN.md:5Low confidence
- Network access in prose of documentationREADME.zh-CN.md:6Low confidence
- Network access in prose of documentationREADME.zh-CN.md:7Low confidence
- Network access in prose of documentationREADME.zh-CN.md:8Low confidence
- Network access in prose of documentationREADME.zh-CN.md:9Low confidence
- Network access in prose of documentationREADME.zh-CN.md:10Low confidence
- Network access in prose of documentationREADME.zh-CN.md:11Low confidence
- Network access in prose of documentationREADME.zh-CN.md:12Low confidence
- Network access in prose of documentationREADME.zh-CN.md:13Low confidence
- Network access in prose of documentationREADME.zh-CN.md:14Low confidence
- Network access in prose of documentationREADME.zh-CN.md:15Low confidence
- Network access in prose of documentationREADME.zh-CN.md:16Low confidence
- Network access in prose of documentationREADME.zh-CN.md:17Low confidence
- Network access in prose of documentationREADME.zh-CN.md:18Low confidence
- Network access in prose of documentationREADME.zh-CN.md:19Low confidence
- Network access in prose of documentationREADME.zh-CN.md:20Low confidence
- Network access in prose of documentationREADME.zh-CN.md:21Low confidence
- Network access in prose of documentationREADME.zh-CN.md:25Low confidence
- Access to secrets in prose of documentationREADME.zh-CN.md:128Low confidence
- Network access in prose of documentationREADME.zh-CN.md:136Low confidence
- Network access in prose of documentationREADME.zh-CN.md:138Low confidence
- Network access in code of documentationREADME.zh-CN.md:143Low confidence
- Network access in prose of documentationREADME.zh-CN.md:149Low confidence
and 224 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest explainer/kits/v1-editorial/starter/AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Explore alternatives and comparisons
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/cclank-lanshu-create-ai-presenter-video/)