creating-explainer-videos-skill 2.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- creating_explainer_videos_skill/__init__.py +3 -0
- creating_explainer_videos_skill/__main__.py +4 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/SKILL.md +114 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/agents/openai.yaml +4 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/douyin-release/extension.json +15 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/douyin-release/profile.json +12 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/douyin-release/reference.md +6 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/ink-explainer/assets/style-tokens.css +11 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/ink-explainer/extension.json +15 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/ink-explainer/profile.json +12 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/ink-explainer/reference.md +5 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/neutral-technical-zh/extension.json +15 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/neutral-technical-zh/profile.json +14 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/neutral-technical-zh/reference.md +6 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/paper-theatre/assets/style-tokens.css +11 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/paper-theatre/extension.json +15 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/paper-theatre/profile.json +12 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/paper-theatre/reference.md +5 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/primary-source-research/extension.json +15 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/primary-source-research/profile.json +11 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/primary-source-research/reference.md +5 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/spatial-chamber/assets/style-tokens.css +10 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/spatial-chamber/extension.json +15 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/spatial-chamber/profile.json +16 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/spatial-chamber/reference.md +5 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/strict-release-qc/extension.json +15 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/strict-release-qc/profile.json +9 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/extensions/strict-release-qc/reference.md +6 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/presets/ai-principle-series/preset.json +21 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/presets/general-mechanism/preset.json +19 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/references/agent-forward-validation.md +17 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/references/content-and-script-contract.md +75 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/references/engineering-pipeline.md +75 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/references/extension-api.md +65 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/references/install-and-portability.md +68 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/references/release-qc-and-publishing.md +69 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/references/visual-systems-and-motion.md +34 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/references/visual-template-collection.md +186 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/cli.mjs +211 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/constants.mjs +27 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/extensions.mjs +106 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/gates.mjs +127 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/json.mjs +40 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/media.mjs +262 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/narration.mjs +75 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/process.mjs +41 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/project.mjs +186 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/renderer.mjs +107 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/state.mjs +196 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/templates.mjs +107 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/runtime/toolchain.mjs +127 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/scripts/.npmignore +2 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/scripts/explainer-video.mjs +11 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/scripts/extension_catalog.py +156 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/scripts/test_extensions.py +46 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/scripts/test_skill.py +70 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/templates/ink-explainer/cover.css +1 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/templates/ink-explainer/motion.mjs +32 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/templates/ink-explainer/scene.css +2 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/templates/ink-explainer/template.json +48 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/templates/paper-theatre/cover.css +1 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/templates/paper-theatre/motion.mjs +20 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/templates/paper-theatre/scene.css +2 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/templates/paper-theatre/template.json +45 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/templates/spatial-chamber/cover.css +1 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/templates/spatial-chamber/motion.mjs +39 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/templates/spatial-chamber/scene.css +2 -0
- creating_explainer_videos_skill/assets/creating-explainer-videos/templates/spatial-chamber/template.json +48 -0
- creating_explainer_videos_skill/assets/skill-manifest.json +333 -0
- creating_explainer_videos_skill/cli.py +177 -0
- creating_explainer_videos_skill/dist_audit.py +135 -0
- creating_explainer_videos_skill/installer.py +351 -0
- creating_explainer_videos_skill/integrity.py +77 -0
- creating_explainer_videos_skill/resources.py +26 -0
- creating_explainer_videos_skill-2.0.0.dist-info/METADATA +180 -0
- creating_explainer_videos_skill-2.0.0.dist-info/RECORD +79 -0
- creating_explainer_videos_skill-2.0.0.dist-info/WHEEL +4 -0
- creating_explainer_videos_skill-2.0.0.dist-info/entry_points.txt +3 -0
- creating_explainer_videos_skill-2.0.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: creating-explainer-videos
|
|
3
|
+
description: Use when researching, planning, scripting, animating, rendering, auditing, or packaging a mechanism, process, system, or scientific explainer video with executable project state, narration-identical captions, cue-synchronized motion, dedicated covers, and release evidence.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Creating Explainer Videos
|
|
7
|
+
|
|
8
|
+
Create a traceable teaching product, not just an MP4. The Agent must drive the executable state machine, call the required tools, inspect their evidence, and stop at unresolved gates.
|
|
9
|
+
|
|
10
|
+
## Start with the executable project
|
|
11
|
+
|
|
12
|
+
Use the installed CLI `explainer-video-skill`. From a copied Skill directory use `node <skill-dir>/scripts/explainer-video.mjs` instead. Run `doctor --json` before promising a render.
|
|
13
|
+
|
|
14
|
+
Create a project only after the exact question, audience, language, platform, and aspect ratio are known:
|
|
15
|
+
|
|
16
|
+
```powershell
|
|
17
|
+
explainer-video-skill new <project-dir> --title "标题" --topic "要解释的精确问题" --template spatial-chamber --preset general-mechanism --json
|
|
18
|
+
explainer-video-skill status --json <project-dir>
|
|
19
|
+
explainer-video-skill next --json <project-dir>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
For every stage, repeat this loop:
|
|
23
|
+
|
|
24
|
+
1. Run `status --json` and `next --json`.
|
|
25
|
+
2. Read the listed required inputs and gate.
|
|
26
|
+
3. Perform the real research, writing, generation, render, or review action.
|
|
27
|
+
4. Write the requested evidence file; do not invent success.
|
|
28
|
+
5. Run `validate <current-stage> <project-dir> --json`.
|
|
29
|
+
6. Continue only when validation moves the project forward.
|
|
30
|
+
|
|
31
|
+
The stages are `discovery -> brief -> evidence -> mechanism_map -> narration_and_cues -> real_audio_timing -> scene_spec -> runnable_renderer -> render -> automated_qc -> human_listen -> publishing_package -> human_release_decision`.
|
|
32
|
+
|
|
33
|
+
## Content contract
|
|
34
|
+
|
|
35
|
+
Read [content-and-script-contract.md](references/content-and-script-contract.md) when defining the promise, evidence, mechanism, narration, or cue map.
|
|
36
|
+
|
|
37
|
+
- Explain `input -> internal state changes -> output`, including why each step follows.
|
|
38
|
+
- Include one worked example and one relevant boundary, cost, control, or failure chain.
|
|
39
|
+
- Treat duration, scene count, and word count as depth alarms, never padding targets.
|
|
40
|
+
- Keep the public topic no broader than the mechanism actually taught.
|
|
41
|
+
- For a series, the opening sentence connects the previous output to this exact topic; the final sentence previews the next exact question. For a standalone video, open with the exact question and close with the reusable conclusion.
|
|
42
|
+
- Store one canonical spoken string. Captions and TTS must be character-identical after normalization.
|
|
43
|
+
- Remove `\_`, snake_case underscores, Markdown syntax, and other characters a TTS engine may pronounce literally. Keep technical spelling in a separate on-screen label.
|
|
44
|
+
- Bind every cue's narration, visible title, mechanism label, focus, action, and handoff to the same local claim.
|
|
45
|
+
|
|
46
|
+
Use primary evidence for mechanism facts. Keep source, source type, verification date, simplification, and planned visual expression in the evidence table. Community sources may expose confusion or edge cases but do not establish the mechanism by themselves.
|
|
47
|
+
|
|
48
|
+
## Select from the visual template collection
|
|
49
|
+
|
|
50
|
+
Read [visual-template-collection.md](references/visual-template-collection.md) before choosing or modifying a template. Inspect the executable manifests with:
|
|
51
|
+
|
|
52
|
+
```powershell
|
|
53
|
+
explainer-video-skill templates list --json
|
|
54
|
+
explainer-video-skill templates inspect paper-theatre --json
|
|
55
|
+
explainer-video-skill templates inspect spatial-chamber --json
|
|
56
|
+
explainer-video-skill templates inspect ink-explainer --json
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
- `paper-theatre`: object identity, physical processing, evidence, sorting, comparison, and editorial transformation.
|
|
60
|
+
- `spatial-chamber`: systems, routes, layers, pipelines, queues, transfer, and high-impact spatial state changes.
|
|
61
|
+
- `ink-explainer`: derivation, formulas, causal relations, dense annotations, comparisons, and correction.
|
|
62
|
+
|
|
63
|
+
Select by knowledge structure, not decoration. A project may combine primitives, but one grammar must remain dominant. Do not copy an old scene and swap text. Do not use full-frame scanning lines, narration-length sweeps, meaningless particles, or repeated cards as substitute motion.
|
|
64
|
+
|
|
65
|
+
Use DingTalk JinBuTi/DingTalk Sans for display roles when locally licensed and installed, and Noto Sans SC or a tested CJK fallback for captions. Never package font binaries or commercial GSAP plugins without redistribution rights. Every premium plugin needs the fallback declared by its template.
|
|
66
|
+
|
|
67
|
+
## Narration, timing, and render
|
|
68
|
+
|
|
69
|
+
Read [engineering-pipeline.md](references/engineering-pipeline.md) before implementation.
|
|
70
|
+
|
|
71
|
+
```powershell
|
|
72
|
+
explainer-video-skill narration prepare <project-dir> --json
|
|
73
|
+
# Produce narration with the selected provider only after any required cost/credential authorization.
|
|
74
|
+
explainer-video-skill narration import-timing <project-dir> --timing <measured-timing.json> --json
|
|
75
|
+
explainer-video-skill build <project-dir> --json
|
|
76
|
+
explainer-video-skill render <project-dir> --json
|
|
77
|
+
explainer-video-skill cover <project-dir> --json
|
|
78
|
+
explainer-video-skill mux <project-dir> --audio <narration.wav> --json
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Real measured narration timing is the only final animation clock. Use deterministic paused timelines, local assets, fixed viewBoxes, and explicit cue anchors. Never use runtime randomness, remote assets, wall-clock timers, or estimated timings in a release render.
|
|
82
|
+
|
|
83
|
+
Generate a dedicated cover, not a random frame. The cover must state the exact topic and remain readable in a phone-size preview. Series/season/episode labels are preset rules, not core-package branding.
|
|
84
|
+
|
|
85
|
+
## QC and release boundary
|
|
86
|
+
|
|
87
|
+
Read [release-qc-and-publishing.md](references/release-qc-and-publishing.md) before calling a candidate complete.
|
|
88
|
+
|
|
89
|
+
```powershell
|
|
90
|
+
explainer-video-skill audit <project-dir> --json
|
|
91
|
+
explainer-video-skill package <project-dir> --json
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Automated checks must include full decode, media specifications, black/freeze/silence diagnostics, representative frames, warning frames, overflow/layout inspection, cover preview, and artifact hashes. Automation may only write `release_candidate_pending_human_listen`.
|
|
95
|
+
|
|
96
|
+
Complete three human passes on the exact hashed candidate: muted visual, audio-only, and normal watch. Record title/narration/caption/focus mismatches, clipping, unreadable text, accidental symbol speech, timing drift, dead motion, repeated composition, dirty transitions, and mixing defects with timestamps.
|
|
97
|
+
|
|
98
|
+
Only after a named reviewer listened to the whole hashed candidate may the Agent run:
|
|
99
|
+
|
|
100
|
+
```powershell
|
|
101
|
+
explainer-video-skill release record-human-decision <project-dir> --decision passed --actor "<reviewer>" --complete-listen --listened-sha256 "<sha256>" --json
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Never infer `passed` from a render, a provider success, green tests, or file presence.
|
|
105
|
+
|
|
106
|
+
## Extensions, presets, and portability
|
|
107
|
+
|
|
108
|
+
Read [extension-api.md](references/extension-api.md) before adding a visual, voice, research, QC, or publishing profile. Extensions are declarative, permission-listed, hash-locked, and cannot run arbitrary hooks. `general-mechanism` is domain-neutral; topic-specific behavior belongs in an explicit preset such as the included `ai-principle-series` example.
|
|
109
|
+
|
|
110
|
+
Read [install-and-portability.md](references/install-and-portability.md) for npm, Codex, other Agent hosts, migration, update, rollback, and asset-license rules.
|
|
111
|
+
|
|
112
|
+
## Stop conditions
|
|
113
|
+
|
|
114
|
+
Stop and report the exact blocker when facts are unverified, the topic promise is broader than the explanation, canonical narration is not fixed, real audio timing is missing, title/card/narration/focus diverge, text clips or overflows, the selected template does not express the mechanism, media decode fails, licensed assets are unresolved, or human review is incomplete.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"apiVersion": 1,
|
|
3
|
+
"id": "douyin-release",
|
|
4
|
+
"type": "publishing",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"displayName": "抖音发布包",
|
|
7
|
+
"description": "Douyin title, independent cover hierarchy, copy, topics, and pinned-comment profile.",
|
|
8
|
+
"entrypoints": {
|
|
9
|
+
"reference": "reference.md",
|
|
10
|
+
"profile": "profile.json",
|
|
11
|
+
"assets": []
|
|
12
|
+
},
|
|
13
|
+
"capabilities": ["publishing.title", "publishing.cover", "publishing.copy", "publishing.pinned-comment"],
|
|
14
|
+
"permissions": ["filesystem:project-read", "filesystem:project-write"]
|
|
15
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"platform": "douyin",
|
|
3
|
+
"titlePattern": "主题:具体问题或核心结论",
|
|
4
|
+
"coverRules": [
|
|
5
|
+
"series-at-top-left",
|
|
6
|
+
"season-episode-immediately-after-series",
|
|
7
|
+
"exact-topic-visible",
|
|
8
|
+
"top-right-clean",
|
|
9
|
+
"phone-preview-required"
|
|
10
|
+
],
|
|
11
|
+
"deliverables": ["title", "description", "topics", "pinned-comment", "video-path", "cover-path", "phone-cover-preview"]
|
|
12
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# 抖音发布包
|
|
2
|
+
|
|
3
|
+
Use `主题:具体问题或核心结论` for the title. The independent cover shows the series label at top left, season/episode immediately after it, the exact topic, one concrete question, and one mechanism graphic; the top right remains clean.
|
|
4
|
+
|
|
5
|
+
Deliver the video path, cover path, phone preview, title, concise description, relevant topics, pinned comment, and next-episode teaser. Publishing copy cannot make claims or quote performance numbers absent from the reviewed episode.
|
|
6
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"apiVersion": 1,
|
|
3
|
+
"id": "ink-explainer",
|
|
4
|
+
"type": "visual",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"displayName": "Ink Explainer 手绘动态图解",
|
|
7
|
+
"description": "Ruled-paper, hand-drawn mechanism explanation for dense mechanisms and derivations.",
|
|
8
|
+
"entrypoints": {
|
|
9
|
+
"reference": "reference.md",
|
|
10
|
+
"profile": "profile.json",
|
|
11
|
+
"assets": ["assets/style-tokens.css"]
|
|
12
|
+
},
|
|
13
|
+
"capabilities": ["visual.tokens", "visual.semantic-motion", "visual.cover-grammar"],
|
|
14
|
+
"permissions": []
|
|
15
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"style": "ink",
|
|
3
|
+
"styleName": "Ink Explainer 手绘动态图解",
|
|
4
|
+
"tokenAsset": "assets/style-tokens.css",
|
|
5
|
+
"motionPlugins": ["DrawSVGPlugin", "SplitText", "CustomEase"],
|
|
6
|
+
"coverGrammar": "top-left-series-cluster-clean-top-right",
|
|
7
|
+
"fontRoles": {
|
|
8
|
+
"displayZh": "钉钉进步体 Regular",
|
|
9
|
+
"latinAndNumbers": "DingTalk Sans",
|
|
10
|
+
"caption": "Noto Sans SC"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Ink Explainer
|
|
2
|
+
|
|
3
|
+
Use for derivation, encoding, formulas, comparisons, relationships, and high-density mechanism teaching. Build on ruled paper with thick rounded SVG paths, blue structure, red action/error, yellow annotation, and green verified conclusions.
|
|
4
|
+
|
|
5
|
+
Each cue must visibly write, connect, split, calculate, compare, reject, or circle the current knowledge state. Redesign the scene DOM and core SVG for every episode. Never use a narration-length full-area scanning edge.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"apiVersion": 1,
|
|
3
|
+
"id": "neutral-technical-zh",
|
|
4
|
+
"type": "voice",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"displayName": "中文中性技术讲师",
|
|
7
|
+
"description": "Natural, clear Mandarin teaching voice profile for technical mechanisms.",
|
|
8
|
+
"entrypoints": {
|
|
9
|
+
"reference": "reference.md",
|
|
10
|
+
"profile": "profile.json",
|
|
11
|
+
"assets": []
|
|
12
|
+
},
|
|
13
|
+
"capabilities": ["voice.tts-profile", "voice.pronunciation", "voice.caption-identity"],
|
|
14
|
+
"permissions": ["provider:tts"]
|
|
15
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"providerClass": "configurable-tts",
|
|
3
|
+
"language": "zh-CN",
|
|
4
|
+
"voiceId": "configure-on-host",
|
|
5
|
+
"role": "neutral-technical-teacher",
|
|
6
|
+
"rate": "+10%",
|
|
7
|
+
"pitch": "+0Hz",
|
|
8
|
+
"captionSource": "same-as-tts",
|
|
9
|
+
"pronunciationPolicy": {
|
|
10
|
+
"codeIdentifiers": "keep-on-screen-speak-naturally",
|
|
11
|
+
"underscore": "forbidden-in-spoken-text",
|
|
12
|
+
"abbreviations": "record-and-listen-before-timing-lock"
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# 中文中性技术讲师
|
|
2
|
+
|
|
3
|
+
Use a natural Mandarin teaching delivery: clear logic, restrained emotion, short single-action sentences, and stable pace. The voice ID remains host-configurable so the package does not assume a paid provider or account entitlement.
|
|
4
|
+
|
|
5
|
+
Caption and TTS come from one string. Keep code spelling on screen but replace `_` and other symbol names with natural spoken wording. Listen to English terms, abbreviations, formulas, numbers, the first sentence, and the final preview before timing is locked.
|
|
6
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"apiVersion": 1,
|
|
3
|
+
"id": "paper-theatre",
|
|
4
|
+
"type": "visual",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"displayName": "Paper Theatre 纸艺编辑剧场",
|
|
7
|
+
"description": "Physical paper-object transformation for process, evidence, identity, and rules.",
|
|
8
|
+
"entrypoints": {
|
|
9
|
+
"reference": "reference.md",
|
|
10
|
+
"profile": "profile.json",
|
|
11
|
+
"assets": ["assets/style-tokens.css"]
|
|
12
|
+
},
|
|
13
|
+
"capabilities": ["visual.tokens", "visual.semantic-motion", "visual.cover-grammar"],
|
|
14
|
+
"permissions": []
|
|
15
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"style": "paper",
|
|
3
|
+
"styleName": "Paper Theatre 纸艺编辑剧场",
|
|
4
|
+
"tokenAsset": "assets/style-tokens.css",
|
|
5
|
+
"motionPlugins": ["DrawSVGPlugin", "MorphSVGPlugin", "Flip", "CustomEase"],
|
|
6
|
+
"coverGrammar": "top-left-series-cluster-clean-top-right",
|
|
7
|
+
"fontRoles": {
|
|
8
|
+
"displayZh": "钉钉进步体 Regular",
|
|
9
|
+
"latinAndNumbers": "DingTalk Sans",
|
|
10
|
+
"caption": "Noto Sans SC"
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Paper Theatre
|
|
2
|
+
|
|
3
|
+
Use when the mechanism is best understood as objects being cut, stamped, sorted, folded, compressed, or handed forward. Preserve identity while the object changes state.
|
|
4
|
+
|
|
5
|
+
Different mechanism roles require different silhouettes and operations. Do not turn every idea into the same paper card. Keep shadows, torn edges, tape, and rotation subordinate to readable knowledge actions.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"apiVersion": 1,
|
|
3
|
+
"id": "primary-source-research",
|
|
4
|
+
"type": "research",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"displayName": "一手资料研究",
|
|
7
|
+
"description": "Primary-source evidence profile for explaining mechanisms, systems, and scientific processes.",
|
|
8
|
+
"entrypoints": {
|
|
9
|
+
"reference": "reference.md",
|
|
10
|
+
"profile": "profile.json",
|
|
11
|
+
"assets": []
|
|
12
|
+
},
|
|
13
|
+
"capabilities": ["research.primary-sources", "research.fact-table", "research.current-verification"],
|
|
14
|
+
"permissions": ["network:read"]
|
|
15
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"sourcePriority": [
|
|
3
|
+
"original-research-or-primary-record",
|
|
4
|
+
"official-documentation-or-standard",
|
|
5
|
+
"official-repository-or-dataset"
|
|
6
|
+
],
|
|
7
|
+
"communityRole": "discovery-or-counterexample-only",
|
|
8
|
+
"evidenceFields": ["claim", "source", "sourceType", "verifiedAt", "teachingSimplification", "visualExpression"],
|
|
9
|
+
"currentVerification": "required-for-versioned-products-APIs-standards-benchmarks-and-prices",
|
|
10
|
+
"illustrativeNumbers": "label-as-teaching-example-not-measurement"
|
|
11
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Primary-source research
|
|
2
|
+
|
|
3
|
+
Use primary records, original research, official documentation, standards, repositories, and authoritative datasets for mechanism facts. Community material may reveal confusing cases or failure symptoms, but does not establish a mechanism by itself.
|
|
4
|
+
|
|
5
|
+
For every key claim record the source, source type, verification date, teaching simplification, and planned visual expression. Label invented numbers as teaching examples rather than measurements. Recheck time-sensitive APIs, products, standards, prices, and performance claims immediately before scripting.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"apiVersion": 1,
|
|
3
|
+
"id": "spatial-chamber",
|
|
4
|
+
"type": "visual",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"displayName": "Spatial Chamber 空间叙事舱",
|
|
7
|
+
"description": "Perspective, path, depth, and occlusion grammar for systems, routing, and multi-stage flows.",
|
|
8
|
+
"entrypoints": {
|
|
9
|
+
"reference": "reference.md",
|
|
10
|
+
"profile": "profile.json",
|
|
11
|
+
"assets": ["assets/style-tokens.css"]
|
|
12
|
+
},
|
|
13
|
+
"capabilities": ["visual.tokens", "visual.semantic-motion", "visual.spatial-depth", "visual.cover-grammar"],
|
|
14
|
+
"permissions": []
|
|
15
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"style": "spatial",
|
|
3
|
+
"styleName": "Spatial Chamber 空间叙事舱",
|
|
4
|
+
"tokenAsset": "assets/style-tokens.css",
|
|
5
|
+
"motionPlugins": ["MotionPathPlugin", "DrawSVGPlugin", "Flip", "CustomEase"],
|
|
6
|
+
"fallbacks": {
|
|
7
|
+
"MotionPathPlugin": "svg-path-sampling",
|
|
8
|
+
"DrawSVGPlugin": "stroke-dashoffset"
|
|
9
|
+
},
|
|
10
|
+
"coverGrammar": "top-left-identity-central-spatial-mechanism-clean-edge",
|
|
11
|
+
"fontRoles": {
|
|
12
|
+
"displayZh": "钉钉进步体 Regular",
|
|
13
|
+
"latinAndNumbers": "DingTalk Sans",
|
|
14
|
+
"caption": "Noto Sans SC"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Spatial Chamber
|
|
2
|
+
|
|
3
|
+
Use when the explanation depends on location, route, layers, transfer, queues, or several components acting in sequence. Put one state-changing object on an intentional path through a spatial system instead of stacking interchangeable cards.
|
|
4
|
+
|
|
5
|
+
Depth and camera movement must encode knowledge: foreground establishes the current state, the mid-ground shows transformation, and the background previews destination or consequence. Keep labels facing the viewer, protect caption and title safe areas, and use static SVG path sampling when premium motion plugins are unavailable.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"apiVersion": 1,
|
|
3
|
+
"id": "strict-release-qc",
|
|
4
|
+
"type": "qc",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"displayName": "严格发布质检",
|
|
7
|
+
"description": "Automated media evidence plus muted, audio-only, and normal-watch human gates.",
|
|
8
|
+
"entrypoints": {
|
|
9
|
+
"reference": "reference.md",
|
|
10
|
+
"profile": "profile.json",
|
|
11
|
+
"assets": []
|
|
12
|
+
},
|
|
13
|
+
"capabilities": ["qc.media", "qc.visual", "qc.audio", "qc.release-decision"],
|
|
14
|
+
"permissions": ["filesystem:project-read", "filesystem:project-write", "process:ffmpeg", "process:ffprobe"]
|
|
15
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
{
|
|
2
|
+
"blackDetectSeconds": 0.2,
|
|
3
|
+
"freezeDetectSeconds": 6.5,
|
|
4
|
+
"silenceDetectSeconds": 0.6,
|
|
5
|
+
"durationToleranceSeconds": 0.35,
|
|
6
|
+
"requiredHumanPasses": ["muted-visual", "audio-only", "normal-watch"],
|
|
7
|
+
"candidateState": "release_candidate_pending_human_listen",
|
|
8
|
+
"publishState": "passed"
|
|
9
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
# 严格发布质检
|
|
2
|
+
|
|
3
|
+
Run content/source checks, page/runtime/layout checks, full MP4 decode, media specification probing, black/freeze/silence detection, representative frames, warning-time frames, and a contact sheet.
|
|
4
|
+
|
|
5
|
+
Then complete muted visual, audio-only, and normal-watch reviews. Automation can only produce a release candidate. A named human must complete all passes before `release_decision: passed`.
|
|
6
|
+
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "ai-principle-series",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"displayName": "AI 底层原理图解系列示例",
|
|
6
|
+
"description": "Example preset preserving the production rules learned from the AI principle explainer series without branding the core package.",
|
|
7
|
+
"template": null,
|
|
8
|
+
"extensions": {
|
|
9
|
+
"voice": "neutral-technical-zh",
|
|
10
|
+
"research": "primary-source-research",
|
|
11
|
+
"qc": "strict-release-qc",
|
|
12
|
+
"publishing": "douyin-release"
|
|
13
|
+
},
|
|
14
|
+
"seriesRules": {
|
|
15
|
+
"opening": "one-sentence-recap-and-exact-topic",
|
|
16
|
+
"closing": "one-sentence-next-episode-preview",
|
|
17
|
+
"cover": "series-season-episode-topic-in-top-left-cluster",
|
|
18
|
+
"depth": "teach-input-state-change-output-boundary-and-failure",
|
|
19
|
+
"captionSource": "canonical-narration"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"id": "general-mechanism",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"displayName": "通用机制解释",
|
|
6
|
+
"description": "Domain-neutral starting point for explaining inputs, internal state changes, outputs, boundaries, and failures.",
|
|
7
|
+
"template": null,
|
|
8
|
+
"extensions": {
|
|
9
|
+
"voice": "neutral-technical-zh",
|
|
10
|
+
"research": "primary-source-research",
|
|
11
|
+
"qc": "strict-release-qc",
|
|
12
|
+
"publishing": "douyin-release"
|
|
13
|
+
},
|
|
14
|
+
"contentRules": {
|
|
15
|
+
"requiredMechanismFields": ["input", "internalChanges", "output", "boundaries", "failures"],
|
|
16
|
+
"opening": "state-the-exact-question",
|
|
17
|
+
"closing": "summarize-the-mechanism-and-preview-the-next-question"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Agent forward validation
|
|
2
|
+
|
|
3
|
+
Use fresh Agent sessions with one process topic, one science topic, and one domain-specific preset topic. The test passes only when the Agent performs the workflow, not when it merely repeats the documentation.
|
|
4
|
+
|
|
5
|
+
Record whether each run:
|
|
6
|
+
|
|
7
|
+
- calls `doctor`, `status`, `next`, and `validate`;
|
|
8
|
+
- chooses a template from the knowledge structure and explains the choice;
|
|
9
|
+
- completes the mechanism/evidence contract before implementing scenes;
|
|
10
|
+
- produces a runnable renderer and dedicated cover;
|
|
11
|
+
- normalizes canonical narration and imports measured timing;
|
|
12
|
+
- keeps captions identical to narration;
|
|
13
|
+
- runs media/visual evidence checks;
|
|
14
|
+
- reports missing tools and paid-provider boundaries honestly;
|
|
15
|
+
- stops at `human_listen` until a named reviewer assesses the exact artifact hash.
|
|
16
|
+
|
|
17
|
+
A generated file, successful provider response, or passing automated test is not forward-validation success if the Agent bypassed state, evidence, or human gates.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Content and script contract
|
|
2
|
+
|
|
3
|
+
## 1. Exact promise
|
|
4
|
+
|
|
5
|
+
Complete `brief.json` before scripting:
|
|
6
|
+
|
|
7
|
+
- one exact viewer question;
|
|
8
|
+
- one answer the viewer can repeat;
|
|
9
|
+
- audience and prior knowledge;
|
|
10
|
+
- evidence and uncertainty requirements;
|
|
11
|
+
- scope and exclusions;
|
|
12
|
+
- platform, aspect ratio, language, and depth profile;
|
|
13
|
+
- previous/next connection only when the project is part of a series.
|
|
14
|
+
|
|
15
|
+
The public topic must cover exactly what the video teaches. If the mechanism explains only one stage of a broader concept, name that stage in the title and cover.
|
|
16
|
+
|
|
17
|
+
## 2. Mechanism completeness
|
|
18
|
+
|
|
19
|
+
`mechanism-map.json` must include:
|
|
20
|
+
|
|
21
|
+
1. input objects and representations;
|
|
22
|
+
2. internal state changes in causal order;
|
|
23
|
+
3. output and why it follows;
|
|
24
|
+
4. one worked numerical, symbolic, sample, or system-state example;
|
|
25
|
+
5. one relevant failure, boundary, cost, or control;
|
|
26
|
+
6. a reconstruction that lets the viewer restate the chain.
|
|
27
|
+
|
|
28
|
+
Use `1700–2200` Chinese characters, `30–45` cues, `10–11` scenes, and `300–420` seconds as a deep-video baseline when the brief calls for a full lesson. They are depth alarms rather than mandatory padding. A shorter result needs a written completeness rationale; a longer result needs a pacing and platform rationale.
|
|
29
|
+
|
|
30
|
+
## 3. Evidence table
|
|
31
|
+
|
|
32
|
+
For every important claim record `claim`, `source`, `sourceType`, `verifiedAt`, `teachingSimplification`, and `visualExpression`. Prefer primary records, original research, standards, official documentation, repositories, or datasets. Mark invented numbers as teaching examples. Recheck anything versioned, priced, regulated, scheduled, benchmarked, or otherwise time-sensitive immediately before the script is frozen.
|
|
33
|
+
|
|
34
|
+
## 4. Scene and cue contracts
|
|
35
|
+
|
|
36
|
+
Every scene in `scene-spec.json` needs:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
id, title, knowledgePoint, input, transformation, output, compositionTask
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Every row in `script/narration.json` and `script/cues.json` needs:
|
|
43
|
+
|
|
44
|
+
```text
|
|
45
|
+
id, sceneId, text, focus, from, action, to, handoff
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
`text` is the canonical TTS and caption string. Cue start and duration are added only from measured audio. The visible scene title, active mechanism label, narration, caption, and animation focus must answer the same local question.
|
|
49
|
+
|
|
50
|
+
## 5. Writing rules
|
|
51
|
+
|
|
52
|
+
- One cue explains one action or judgment.
|
|
53
|
+
- Introduce the effect before its formal term.
|
|
54
|
+
- Split long thoughts in canonical narration; never shorten only the caption.
|
|
55
|
+
- Keep code/formula spelling in an on-screen field separate from spoken text.
|
|
56
|
+
- Normalize escaped underscores, snake_case, Markdown markers, raw URLs, and punctuation that TTS may pronounce literally.
|
|
57
|
+
- Record pronunciation decisions for English terms, abbreviations, formulas, numbers, and names.
|
|
58
|
+
- Generate speech at a natural rate. Never slow it to meet an arbitrary duration.
|
|
59
|
+
|
|
60
|
+
For a series, the first sentence joins the previous result to this exact question and the final sentence states the next exact topic plus its value. For standalone work, the first sentence states the exact question and the final sentence reconstructs the reusable answer.
|
|
61
|
+
|
|
62
|
+
## 6. Authoring order
|
|
63
|
+
|
|
64
|
+
1. Verify the question and facts.
|
|
65
|
+
2. Complete the mechanism and failure chain.
|
|
66
|
+
3. Write understanding beats.
|
|
67
|
+
4. Choose the dominant visual grammar.
|
|
68
|
+
5. Map beats to varied composition tasks.
|
|
69
|
+
6. Write single-action canonical cues.
|
|
70
|
+
7. Validate semantic alignment and depth.
|
|
71
|
+
8. Generate/listen to real narration.
|
|
72
|
+
9. Import measured timing.
|
|
73
|
+
10. Implement final animation anchors.
|
|
74
|
+
|
|
75
|
+
Never infer knowledge completeness from scene count and never begin final motion from estimated narration time.
|