Not in the top 1,000 by GitHub stars
aaronyi97/wedding-video-guided-wizard
真实故事婚礼视频的 14 步引导式 Skill:故事采集、Kimi 写作包、配音、外部 GPT 生图、视频打包、音乐与字幕剪辑。
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 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 4344397a5f98
No earlier version was observed for comparison.
Heat
6.5- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
30-day change not yet available: not enough history.
Individual skills in this repository
How it works
wedding-video-guided-wizard
When your agent uses it
Guide a creator through a real couple's custom wedding video, from a shareable story intake card and Kimi writing pack through narration, external GPT image prompts, image-to-video packs, music and subtitled editing. Use for a new wedding-video order or resuming its 14-step workflow, not a standalone script or generic editing request.
What it loads into context
Frontmatter
79 tokensAlways available to the agent
SKILL.md
2,130 tokensWhen the skill is activated
Reference documents
22,990 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Language / 语言
- 第一轮与续做
- 每轮固定引导
- 不可省略的约束
- 14 步与放行条件
- 按需读取
Scripts executed separately
scripts/media.pyscripts/wizard.pytests/browser-language.cjstests/browser-smoke.cjstests/integration_smoke.pytests/test_language.pytests/test_media.pytests/test_wizard.py
Files
.github/workflows/checks.ymlasset443 bytes.gitignoreasset117 bytesLICENSEasset1,177 bytesREADME.en.mddoc7,808 bytesREADME.mddoc6,159 bytesSKILL.en.mddoc8,115 bytesSKILL.mdcore8,047 bytesVALIDATION.en.mddoc2,887 bytesVALIDATION.mddoc3,245 bytesagents/openai.yamlasset367 bytesassets/story-intake.en.mddoc4,128 bytesassets/story-intake.htmlasset42,798 bytesassets/story-intake.mddoc5,875 bytesassets/writing-pack-guide.en.mddoc1,973 bytesassets/writing-pack-guide.mddoc1,197 bytesdocs/.nojekyllasset0 bytesdocs/index.htmlasset42,798 bytesreferences/audio.mddoc4,447 bytesreferences/en/audio.mddoc5,508 bytesreferences/en/execution.mddoc9,360 bytesreferences/en/visuals.mddoc4,624 bytesreferences/en/workflow.mddoc6,111 bytesreferences/en/writing.mddoc4,744 bytesreferences/execution.mddoc7,963 bytesreferences/visuals.mddoc3,788 bytesreferences/workflow.mddoc5,816 bytesreferences/writing.mddoc3,402 bytesscripts/media.pyruns19,886 bytesscripts/wizard.pyruns15,473 bytestests/browser-language.cjsruns4,282 bytestests/browser-smoke.cjsruns4,487 bytestests/integration_smoke.pyruns6,509 bytestests/test_language.pyruns2,686 bytestests/test_media.pyruns3,978 bytestests/test_wizard.pyruns6,794 bytes
Read SKILL.md
# 婚礼视频定制向导
主动带制作方完成一单真实故事视频。新人提供经历、照片并确认文案和成片;制作方使用本 Skill、审核材料、操作外部工具。本包独立工作,不依赖旧 Skill。
## Language / 语言
**中文为默认入口,英文是同一个 Skill 的另一种使用语言。** 优先遵循用户明确的语言选择,其次沿用其对话语言。英文请求先读取 [English instructions](SKILL.en.md),并使用其中的英文参考资料、阶段引导和文件包说明,无需安装第二份 Skill。
**For English requests, read [SKILL.en.md](SKILL.en.md) before proceeding.** Use English for guidance, intake labels and handoff materials. Default a new film to the conversation language unless the brief says otherwise. Interface language and film language are separate; do not translate names, facts or approved work merely because the interface changes. Both languages retain the same 14 steps and approval gates.
新英文单使用 `wizard.py init PROJECT --lang en`,中文单仍默认中文;制作方与影片语言不同时,初始化指定 `--content-language zh|en`。已有单用 `wizard.py language PROJECT --lang en|zh` 切换引导与打包语言,保留原内容语言与确认记录。把工具诊断解释为用户的对话语言。中文原稿与已确认素材不因界面切换重写。
英文采集卡链接为 [English story card](https://aaronyi97.github.io/wedding-video-guided-wizard/?lang=en),也可在同一张卡顶部切换语言。采集问题和选项不变,自由填写的原文不自动翻译。文字备用版为 `assets/story-intake.en.md`。英文文案用自然口播英语表达原写作方法,不照搬中文修辞或字数配额;先核对音色实际支持英语。英文字幕按单词和实际宽度换行,中文保留原规则。
View the complete source on GitHubSkills included
- wedding-video-guided-wizard
Repository facts
- License
- MIT
- Created
- Sep 10, 2026
- Last pushed
- Sep 10, 2026
- Forks
- 91
- Open issues
- 0
- Project activity
- Active
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 6, 2026
- No broad tool permissions
- No dangerous shell commands
- 33 network referencesin 9 files: scripts/media.py:85 tests/browser-smoke.cjs:8 README.en.md:7 and 6 more
- 1 obfuscation signalin 1 file: scripts/media.py:115
- No instruction overrides
- 8 executable scriptsin 8 files: scripts/media.py:1 scripts/wizard.py:1 tests/browser-language.cjs:1 and 5 more
- 19 references to secretsin 5 files: scripts/media.py:22 .gitignore:4 references/en/execution.md:59 and 2 more
- No requests to vote in Hot
Show all 61 signals by file
.gitignore
- Access to secretsline 4
[Credential-related source omitted]
README.en.md
- Network accessline 7
[English story card](https://aaronyi97.github.io/wedding-video-guided-wizard/?lang=en) · [Download the skill](https://github.com/aaronyi97/wedding-video-guided-wizard/releases/latest) · [English skill instructions](SKILL.en.md) · [Detailed - Network accessline 17
> Please use skill-installer to install https://github.com/aaronyi97/wedding-video-guided-wizard. The skill is at the repository root; use wedding-video-guided-wizard as the installation name. Tell me how to start it after installation. - Network accessline 90
This is an independent skill. Its proactive guidance draws on the author's [image-story-video-wizard](https://github.com/aaronyi97/image-story-video-wizard). The story card reuses the author's existing wedding-story-video-wizard questionnai
README.md
- Network accessline 7
[打开故事采集卡](https://aaronyi97.github.io/wedding-video-guided-wizard/) · [下载 Skill](https://github.com/aaronyi97/wedding-video-guided-wizard/releases/latest) · [完整操作说明](references/workflow.md) - Network accessline 17
> 请使用 skill-installer 从 https://github.com/aaronyi97/wedding-video-guided-wizard 安装 Skill。Skill 位于仓库根目录,安装名用 wedding-video-guided-wizard。安装后告诉我如何在下一轮启动。 - Network accessline 89
这是独立的新 Skill。主动引导方式参考作者的 [image-story-video-wizard](https://github.com/aaronyi97/image-story-video-wizard),采集卡复用作者已有 `wedding-story-video-wizard` 五幕问卷,按「填写 → 复制 → 聊天回传」调整交付方式与手机适配。没有附带真实客户故事、照片或音频。
SKILL.en.md
- Network accessline 13
New project: first provide the [English story card](https://aaronyi97.github.io/wedding-video-guided-wizard/?lang=en). Ask the creator to forward it to the couple, who fill it in, copy the completed card, and send the text back through thei
SKILL.md
- Network accessline 18
英文采集卡链接为 [English story card](https://aaronyi97.github.io/wedding-video-guided-wizard/?lang=en),也可在同一张卡顶部切换语言。采集问题和选项不变,自由填写的原文不自动翻译。文字备用版为 `assets/story-intake.en.md`。英文文案用自然口播英语表达原写作方法,不照搬中文修辞或字数配额;先核对音色实际支持英语。英文字幕按单词和实际宽度换行,中文保留原规则。 - Network accessline 22
沿用作者原有五幕问卷,保持原来的问题与选择;本包只改为填写后复制、聊天回传,不收手机号、不连接收件箱。新单直接给[电脑与手机故事采集卡](https://aaronyi97.github.io/wedding-video-guided-wizard/)。让制作方发给新人,填完点击「复制完整故事卡」,将文字和照片发回当前对话。推荐电脑,也可手机。链接不可用时提供本包 `assets/story-intake.html`;手机不方便开本地文件时发 `assets/story-in
references/audio.md
references/en/audio.md
- Network accessline 35
- [Kimi documentation](https://platform.kimi.ai/docs/overview): official Chat Completions; verify models available to the account. - Network accessline 36
- [Doubao HTTP streaming synthesis](https://www.volcengine.com/docs/6561/1598757) and [voice list](https://www.volcengine.com/docs/6561/1257544): select a verified speaker/resource and supported delivery controls.
references/en/execution.md
- Access to secretsline 59
[Credential-related source omitted]
references/execution.md
- Access to secretsline 57
[Credential-related source omitted]
scripts/media.py
- Executable scriptline 1
#!/usr/bin/env python3 - Access to secretsline 22
[Credential-related source omitted] - Access to secretsline 37
[Credential-related source omitted] - Access to secretsline 40
[Credential-related source omitted] - Access to secretsline 45
[Credential-related source omitted] - Access to secretsline 46
[Credential-related source omitted] - Access to secretsline 48
[Credential-related source omitted] - Access to secretsline 49
[Credential-related source omitted] - Network accessline 85
def request(url,headers,payload): data=json.dumps(payload,ensure_ascii=False).encode() req=urllib.request.Request(url,data=data,headers={**headers,'Content-Type':'application/json'},method='POST') - Network accessline 86
data=json.dumps(payload,ensure_ascii=False).encode() req=urllib.request.Request(url,data=data,headers={**headers,'Content-Type':'application/json'},method='POST') try: return urllib.request.build_opener(NoRedirect).open(req,timeout= - Network accessline 87
req=urllib.request.Request(url,data=data,headers={**headers,'Content-Type':'application/json'},method='POST') - Network accessline 97
[Credential-related source omitted] - Access to secretsline 97
[Credential-related source omitted] - Network accessline 98
[Credential-related source omitted] - Access to secretsline 98
[Credential-related source omitted] - Network accessline 99
[Credential-related source omitted] - Access to secretsline 99
[Credential-related source omitted] - Network accessline 100
if base not in ('https://api.moonshot.ai/v1','https://api.moonshot.cn/v1'): - Access to secretsline 102
[Credential-related source omitted] - Possible obfuscationline 115
if e.get('data'): chunks.append(base64.b64decode(e['data'],validate=True)) - Access to secretsline 130
[Credential-related source omitted] - Access to secretsline 131
[Credential-related source omitted] - Access to secretsline 132
[Credential-related source omitted] - Access to secretsline 133
[Credential-related source omitted] - Network accessline 136
'audio_params':{'format':'mp3','sample_rate':48000,'speech_rate':rate}, 'additions':json.dumps({'context_texts':[context],'enable_timestamp':True},ensure_ascii=False)}} with request('https://openspeech.bytedance.com/api/v3/tts/uni - Network accessline 137
'additions':json.dumps({'context_texts':[context],'enable_timestamp':True},ensure_ascii=False)}} with request('https://openspeech.bytedance.com/api/v3/tts/unidirectional',headers,payload) as r: events=[json.loads(line) for line - Network accessline 138
with request('https://openspeech.bytedance.com/api/v3/tts/unidirectional',headers,payload) as r:
scripts/wizard.py
- Executable scriptline 1
#!/usr/bin/env python3
tests/browser-language.cjs
- Executable scriptline 1
Executable file - Network accessline 7
const context=await browser.newContext({viewport:{width:390,height:844}}),page=await context.newPage(),errors=[]; page.on('pageerror',e=>errors.push(e.message)); await page.goto((process.env.CARD_URL||'http://127.0.0.1:8734/')+'?lang=en') - Network accessline 8
page.on('pageerror',e=>errors.push(e.message)); await page.goto((process.env.CARD_URL||'http://127.0.0.1:8734/')+'?lang=en'); assert.equal(await page.locator('html').getAttribute('lang'),'en'); - Network accessline 9
await page.goto((process.env.CARD_URL||'http://127.0.0.1:8734/')+'?lang=en');
tests/browser-smoke.cjs
- Executable scriptline 1
Executable file - Network accessline 8
const page = await context.newPage(); const errors = [], requests=[]; page.on('pageerror',e=>errors.push(e.message));page.on('request',r=>requests.push(r.url())); - Network accessline 9
const errors = [], requests=[]; page.on('pageerror',e=>errors.push(e.message));page.on('request',r=>requests.push(r.url())); await page.goto(process.env.CARD_URL||'http://127.0.0.1:8734'); - Network accessline 10
page.on('pageerror',e=>errors.push(e.message));page.on('request',r=>requests.push(r.url())); - Network accessline 11
await page.goto(process.env.CARD_URL||'http://127.0.0.1:8734'); - Network accessline 32
assert.ok((await page.locator('#submitTip').innerText()).includes('不能保存草稿')); assert.deepEqual(errors,[]); assert.ok(requests.every(u=>u.startsWith(process.env.CARD_URL||'http://127.0.0.1:8734'))); - Network accessline 33
assert.deepEqual(errors,[]); assert.ok(requests.every(u=>u.startsWith(process.env.CARD_URL||'http://127.0.0.1:8734'))); await browser.close();console.log(JSON.stringify({passed:true,checks:['mobile and desktop','no contact/upload/backen - Network accessline 34
assert.ok(requests.every(u=>u.startsWith(process.env.CARD_URL||'http://127.0.0.1:8734')));
tests/integration_smoke.py
- Executable scriptline 1
#!/usr/bin/env python3
tests/test_language.py
- Executable scriptline 1
Executable file
tests/test_media.py
tests/test_wizard.py
- Executable scriptline 1
Executable file
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: 3 facts
- Contacts api.moonshot.ai, which SKILL.md, the README and the plugin manifest do not mentionscripts/media.py:99High confidence
- Contacts api.moonshot.cn, which SKILL.md, the README and the plugin manifest do not mentionscripts/media.py:100High confidence
- Contacts openspeech.bytedance.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/media.py:138High confidence
Signal confidence: 60 facts
- Network access in prose of documentationREADME.en.md:7Low confidence
- Network access in prose of documentationREADME.en.md:17Low confidence
- Network access in prose of documentationREADME.en.md:90Low confidence
- Network access in prose of documentationREADME.md:7Low confidence
- Network access in prose of documentationREADME.md:17Low confidence
- Network access in prose of documentationREADME.md:89Low confidence
- Network access in prose of documentationSKILL.en.md:13Low confidence
- Network access in prose of the SKILL.mdSKILL.md:18Low confidence
- Network access in prose of the SKILL.mdSKILL.md:22Low confidence
- Network access in prose of documentationreferences/audio.md:31Low confidence
- Network access in prose of documentationreferences/audio.md:32Low confidence
- Network access in prose of documentationreferences/en/audio.md:35Low confidence
- Network access in prose of documentationreferences/en/audio.md:36Low confidence
- Access to secrets in prose of documentationreferences/en/execution.md:59Low confidence
- Access to secrets in prose of documentationreferences/execution.md:57Low confidence
- Executable script in code of a file that runsscripts/media.py:1High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/media.py:22Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/media.py:37Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/media.py:40Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/media.py:45Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/media.py:46Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/media.py:48Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/media.py:49Low confidence
- Network access in code of a file that runsscripts/media.py:85High confidence
- Network access in code of a file that runsscripts/media.py:86High confidence
- Network access in code of a file that runsscripts/media.py:87High confidence
- Network access in code of a file that runsscripts/media.py:97High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/media.py:97Low confidence
- Network access in code of a file that runsscripts/media.py:98High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/media.py:98Low confidence
- Network access in code of a file that runsscripts/media.py:99High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/media.py:99Low confidence
- Network access in code of a file that runsscripts/media.py:100High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/media.py:102Low confidence
- Possible obfuscation in code of a file that runsscripts/media.py:115High confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/media.py:130Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/media.py:131Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/media.py:132Low confidence
- Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuescripts/media.py:133Low confidence
- Network access in code of a file that runsscripts/media.py:136High confidence
- Network access in code of a file that runsscripts/media.py:137High confidence
- Network access in code of a file that runsscripts/media.py:138High confidence
- Executable script in code of a file that runsscripts/wizard.py:1High confidence
- Executable script in code of a testtests/browser-language.cjs:1Low confidence
- Network access in code of a testtests/browser-language.cjs:7Low confidence
- Network access in code of a testtests/browser-language.cjs:8Low confidence
- Network access in code of a testtests/browser-language.cjs:9Low confidence
- Executable script in a comment of a testtests/browser-smoke.cjs:1Low confidence
- Network access in code of a testtests/browser-smoke.cjs:8Low confidence
- Network access in code of a testtests/browser-smoke.cjs:9Low confidence
and 10 more
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.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.