#963 by GitHub stars
op7418/guizang-product-video-skill
制作代码驱动的软件产品宣传片和版本更新片(product promo、release notes video、changelog promo)。从真实功能和产品设计出发定方向,用真实组件、GSAP/Three.js 动效、原创配乐和动作音效完成影片,每支片子的视觉手法都从产品本身推导,不套模板。
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
18842e0f49a9 → 18842e0f49a9
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 18842e0f49a9
No earlier version was observed for comparison.
Heat
6.5- Star growth, last 7 daysAhead of 90% of tracked repositories
- Star growth, last 24 hoursAhead of 75% of tracked repositories
- Rank movement, last 7 daysAhead of 51% of tracked repositories
- Commits, last 30 daysAhead of 59% 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
guizang-product-video-skill
When your agent uses it
制作代码驱动的软件产品宣传片和版本更新片(product promo、release notes video、changelog promo)。从真实功能和产品设计出发定方向,用真实组件、GSAP/Three.js 动效、原创配乐和动作音效完成影片,每支片子的视觉手法都从产品本身推导,不套模板。
What it loads into context
Frontmatter
112 tokensAlways available to the agent
SKILL.md
2,430 tokensWhen the skill is activated
Reference documents
33,071 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 流程
- 硬约束
- 工具入口
Scripts executed separately
assets/audio/score-example-cinematic.pyassets/audio/score-example-keys.pyassets/fallback/primitives.jsxassets/fx-lab/glyph-field.jsassets/fx-lab/horizon.jsxassets/fx-lab/orbit.jsassets/fx-lab/settle.jsassets/fx-lab/slices.jsxassets/fx-lab/warp.jsassets/starter/build.mjsassets/starter/cover.mjsassets/starter/integration.config.mjsassets/starter/package.jsonassets/starter/preview.mjsassets/starter/render.mjsassets/starter/server.mjsassets/starter/src/adapters/next-dynamic.jsxassets/starter/src/adapters/next-image.jsxassets/starter/src/adapters/next-link.jsxassets/starter/src/adapters/next-navigation.jsassets/starter/src/client.jsxassets/starter/src/engine.jsassets/starter/src/fake-api.jsassets/starter/src/film-store.jsassets/starter/src/film.jsxassets/starter/src/fixtures/api.jsassets/starter/src/kit/cursor.jsxassets/starter/src/kit/interact.jsassets/starter/src/kit/measure.jsassets/starter/src/kit/text.jsxassets/starter/src/presentations.jsxassets/starter/src/product-context.jsxassets/starter/src/shots/index.jsassets/starter/src/shots/sample.jsxassets/starter/stills.mjsextras/news-video/overlay/poster.mjsextras/news-video/overlay/render.mjsextras/news-video/overlay/src/film.jsxextras/news-video/overlay/src/kit/text.jsxextras/news-video/overlay/src/shots/index.jsextras/news-video/overlay/src/shots/news.jsxextras/news-video/tools/apply_overlay.pyextras/news-video/tools/make_timeline.pyextras/news-video/tools/mix_voice.pyextras/news-video/tools/music.pyextras/news-video/tools/tts.pyscripts/check_delivery.pyscripts/check_environment.pyscripts/init_project.pyscripts/make_sfx.pyscripts/mix_audio.pyscripts/sfx_landmarks.pytests/integration.mjstests/test_regressions.py
Files
.gitignoreasset64 bytesCOMMERCIAL_LICENSING.mddoc1,767 bytesLICENSEasset34,524 bytesREADME.mddoc16,480 bytesSKILL.mdcore8,748 bytesSKILL.mdcore8,748 bytesagents/openai.yamlasset349 bytesassets/audio/SOURCE.mddoc1,693 bytesassets/audio/manifest.jsonasset3,623 bytesassets/audio/score-example-cinematic.pyruns11,824 bytesassets/audio/score-example-keys.pyruns4,231 bytesassets/audio/sfx/SOURCE.txtdoc191 bytesassets/audio/sfx/click-alt.wavasset11,564 bytesassets/audio/sfx/click.wavasset15,404 bytesassets/audio/sfx/ding-dong.wavasset110,444 bytesassets/audio/sfx/error.wavasset67,244 bytesassets/audio/sfx/pop.wavasset21,164 bytesassets/audio/sfx/resolve.wavasset148,844 bytesassets/audio/sfx/success.wavasset81,644 bytesassets/audio/sfx/sweep.wavasset62,444 bytesassets/audio/sfx/toggle.wavasset24,044 bytesassets/audio/sfx/typing.wavasset62,444 bytesassets/audio/sfx/whoosh.wavasset36,524 bytesassets/fallback/LICENSE.CodePilotasset3,681 bytesassets/fallback/SOURCE.mddoc1,495 bytesassets/fallback/preview.pngasset97,776 bytesassets/fallback/primitives.jsxruns863 bytesassets/fallback/provenance.jsonasset848 bytesassets/fallback/title-preview.pngasset69,437 bytesassets/fallback/tokens.cssasset1,882 bytesassets/fx-lab/README.mddoc2,314 bytesassets/fx-lab/glyph-field.jsruns1,832 bytesassets/fx-lab/horizon.jsxruns1,809 bytesassets/fx-lab/orbit.jsruns1,025 bytesassets/fx-lab/settle.jsruns3,667 bytesassets/fx-lab/slices.jsxruns1,090 bytesassets/fx-lab/warp.jsruns2,251 bytesassets/readme/SOURCE.mddoc471 bytesassets/readme/audio.jpgasset106,965 bytesassets/readme/components.jpgasset98,175 bytesassets/readme/hero.jpgasset99,489 bytesassets/starter/LICENSEasset34,524 bytesassets/starter/NOTICE.mddoc817 bytesassets/starter/build.mjsruns3,162 bytesassets/starter/cover.mjsruns2,099 bytesassets/starter/integration.config.mjsruns813 bytesassets/starter/package.jsonruns382 bytesassets/starter/preview.mjsruns200 bytesassets/starter/render.mjsruns4,462 bytesassets/starter/server.mjsruns1,257 bytesassets/starter/src/adapters/README.mddoc339 bytesassets/starter/src/adapters/next-dynamic.jsxruns149 bytesassets/starter/src/adapters/next-image.jsxruns503 bytesassets/starter/src/adapters/next-link.jsxruns180 bytesassets/starter/src/adapters/next-navigation.jsruns391 bytesassets/starter/src/client.jsxruns1,484 bytesassets/starter/src/engine.jsruns1,945 bytesassets/starter/src/fake-api.jsruns1,699 bytesassets/starter/src/film-store.jsruns907 bytesassets/starter/src/film.cssasset1,939 bytesassets/starter/src/film.jsxruns603 bytesassets/starter/src/fixtures/api.jsruns306 bytesassets/starter/src/kit/cursor.jsxruns1,734 bytesassets/starter/src/kit/interact.jsruns1,261 bytesassets/starter/src/kit/measure.jsruns765 bytesassets/starter/src/kit/text.jsxruns1,037 bytesassets/starter/src/presentations.jsxruns499 bytesassets/starter/src/product-context.jsxruns496 bytesassets/starter/src/shots/index.jsruns394 bytesassets/starter/src/shots/sample.jsxruns1,453 bytesassets/starter/stills.mjsruns1,302 bytesextras/news-video/README.mddoc8,909 bytesextras/news-video/content.example.jsonasset3,393 bytesextras/news-video/overlay/poster.mjsruns899 bytesextras/news-video/overlay/render.mjsruns4,759 bytesextras/news-video/overlay/src/film.cssasset17,472 bytesextras/news-video/overlay/src/film.jsxruns2,501 bytesextras/news-video/overlay/src/kit/text.jsxruns1,412 bytesextras/news-video/overlay/src/shots/index.jsruns391 bytesextras/news-video/overlay/src/shots/news.jsxruns16,759 bytesextras/news-video/tools/apply_overlay.pyruns3,761 bytesextras/news-video/tools/make_timeline.pyruns9,998 bytesextras/news-video/tools/mix_voice.pyruns4,410 bytesextras/news-video/tools/music.pyruns5,324 bytesextras/news-video/tools/tts.pyruns3,291 bytesreferences/audio-and-qa.mddoc10,500 bytesreferences/audio-sourcing.mddoc5,784 bytesreferences/case-study.mddoc6,160 bytesreferences/component-pipeline.mddoc8,906 bytesreferences/cover.mddoc3,662 bytesreferences/direction.mddoc6,370 bytesreferences/onboarding.mddoc5,925 bytesreferences/repo-and-style.mddoc3,046 bytesreferences/review.mddoc4,055 bytesreferences/starter.mddoc12,774 bytesreferences/story-and-copy.mddoc7,004 bytesreferences/visual-vocabulary.mddoc7,283 bytesscripts/check_delivery.pyruns20,709 bytesscripts/check_environment.pyruns7,455 bytesscripts/init_project.pyruns6,967 bytesscripts/make_sfx.pyruns3,540 bytesscripts/mix_audio.pyruns10,729 bytesscripts/sfx_landmarks.pyruns2,146 bytestests/integration.mjsruns8,032 bytestests/test_regressions.pyruns12,501 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubSkills included
- guizang-product-video-skill
Repository facts
- License
- AGPL-3.0
- Created
- Sep 18, 2026
- Last pushed
- Oct 9, 2026
- Forks
- 75
- Open issues
- 2
- Project activity
- Active
Rank over the last 12 weeks
Now #963 · best #788 · down 74 in 30 days
- #964 on Nov 2
- #967 on Nov 3
- #965 on Nov 4
- #959 on Nov 5
- #960 on Nov 6
- #963 since Nov 7
43 earlier periods
- #914 on Sep 13
- #942 on Sep 17
- #923 on Sep 18
- #892 on Sep 19
- #913 on Sep 20
- #932 on Sep 21
- #949 on Sep 22
- #942 on Sep 23
- #902 on Sep 24
- #845 on Sep 25
- #868 on Sep 26
- #883 on Sep 27
- #916 on Sep 28
- #921 on Sep 29
- #881 on Sep 30
- #819 on Oct 1
- #824 on Oct 2
- #799 on Oct 3
- #839 on Oct 4
- #853 on Oct 5
- #839 on Oct 6
- #865 on Oct 7
- #889 on Oct 8
- #848 on Oct 9
- #818 on Oct 10
- #815 on Oct 11
- #835 from Oct 12 to Oct 13
- #841 on Oct 14
- #818 on Oct 15
- #828 on Oct 16
- #801 on Oct 17
- #788 on Oct 18
- #830 on Oct 19
- #836 on Oct 20
- #847 on Oct 21
- #826 on Oct 22
- #827 on Oct 23
- #788 on Oct 24
- #957 on Oct 25
- #953 on Oct 28
- #955 on Oct 29
- #953 on Oct 30
- #955 from Oct 31 to Nov 1
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 4, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 1 note
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- 2 dangerous shell commandsin 1 file: references/onboarding.md:37
- 67 network referencesin 16 files: README.md:5 assets/starter/server.mjs:7 references/onboarding.md:30 and 13 more
- 1 obfuscation signalin 1 file: extras/news-video/tools/apply_overlay.py:62
- No instruction overrides
- 54 executable scriptsin 54 files: assets/audio/score-example-cinematic.py:1 assets/audio/score-example-keys.py:1 assets/fallback/primitives.jsx:1 and 51 more
- 2 references to secretsin 2 files: .gitignore:6 scripts/check_environment.py:82
- No requests to vote in Hot
Show all 126 signals by file
.gitignore
- Access to secretsline 6
[Credential-related source omitted]
COMMERCIAL_LICENSING.md
LICENSE
- Network accessline 4
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> - Network accessline 645
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. - Network accessline 646
along with this program. If not, see <https://www.gnu.org/licenses/>. - Network accessline 659
if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see <https://www.gnu.org/licenses/>. - Network accessline 661
<https://www.gnu.org/licenses/>.
README.md
- Network accessline 5
[](https://github.com/op7418/guizang-product-video-skill/stargazers) - Network accessline 6
[](LICENSE) - Network accessline 7
 - Network accessline 8
 - Network accessline 9
 - Network accessline 24
npx skills add https://github.com/op7418/guizang-product-video-skill --skill guizang-product-video-skill - Network accessline 33
> 帮我安装这个 skill:https://github.com/op7418/guizang-product-video-skill ,然后用它给当前项目做一支版本更新宣传片。 - Network accessline 138
npx skills add https://github.com/op7418/guizang-product-video-skill --skill guizang-product-video-skill - Network accessline 148
mkdir -p ~/.agents/skills git clone https://github.com/op7418/guizang-product-video-skill.git \ - Network accessline 149
git clone https://github.com/op7418/guizang-product-video-skill.git \ - Network accessline 156
mkdir -p ~/.claude/skills git clone https://github.com/op7418/guizang-product-video-skill.git \ - Network accessline 157
git clone https://github.com/op7418/guizang-product-video-skill.git \ - Network accessline 161
安装目录可参照 [Codex 官方说明](https://learn.chatgpt.com/docs/customization/overview#skills) 和 [Claude Code 官方说明](https://code.claude.com/docs/en/skills#choose-where-skills-load)。上面的通用安装命令使用 [skills CLI](https://github.com/vercel-labs/skills)。 - Network accessline 234
欢迎在 [Issues](https://github.com/op7418/guizang-product-video-skill/issues) 分享作品、问题和改进建议。反馈时最好带上使用的 AI 工具、产品技术栈、失败阶段,以及脱敏后的日志或画面。 - Network accessline 236
如果你也想让 AI 帮你做图文,可以看看 [归藏社交媒体卡片 skill](https://github.com/op7418/guizang-social-card-skill)。 - Network accessline 240
GNU AGPL-3.0 © 2026 [op7418](https://github.com/op7418)
assets/audio/score-example-cinematic.py
- Executable scriptline 1
Executable file
assets/audio/score-example-keys.py
- Executable scriptline 1
Executable file
assets/fallback/LICENSE.CodePilot
assets/fallback/primitives.jsx
- Executable scriptline 1
Executable file
assets/fx-lab/glyph-field.js
- Executable scriptline 1
Executable file
assets/fx-lab/horizon.jsx
- Executable scriptline 1
Executable file
assets/fx-lab/orbit.js
- Executable scriptline 1
Executable file
assets/fx-lab/settle.js
- Executable scriptline 1
Executable file
assets/fx-lab/slices.jsx
- Executable scriptline 1
Executable file
assets/fx-lab/warp.js
- Executable scriptline 1
Executable file
assets/starter/LICENSE
- Network accessline 4
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> - Network accessline 645
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <https://www.gnu.org/licenses/>. - Network accessline 646
along with this program. If not, see <https://www.gnu.org/licenses/>. - Network accessline 659
if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see <https://www.gnu.org/licenses/>. - Network accessline 661
<https://www.gnu.org/licenses/>.
assets/starter/NOTICE.md
- Network accessline 5
本目录随 [归藏 product video skill](https://github.com/op7418/guizang-product-video-skill) 提供的起步工程代码采用 GNU AGPL-3.0,完整条款见 [LICENSE](LICENSE)。复制或分发这些代码时保留适用的版权、许可和来源声明;修改和分发时遵守对应源码等适用要求。
assets/starter/build.mjs
- Executable scriptline 1
Executable file
assets/starter/cover.mjs
- Executable scriptline 1
Executable file
assets/starter/integration.config.mjs
- Executable scriptline 1
Executable file
assets/starter/package.json
- Executable scriptline 1
Executable file
assets/starter/preview.mjs
- Executable scriptline 1
Executable file
assets/starter/render.mjs
- Executable scriptline 1
Executable file
assets/starter/server.mjs
- Executable scriptline 1
Executable file - Network accessline 7
const server = http.createServer(async (req, res) => { try { const name = decodeURIComponent(new URL(req.url, 'http://localhost').pathname); - Network accessline 8
try { const name = decodeURIComponent(new URL(req.url, 'http://localhost').pathname); const file = await realpath(path.join(base, name === '/' ? 'index.html' : name)); - Network accessline 9
const name = decodeURIComponent(new URL(req.url, 'http://localhost').pathname); - Network accessline 14
}); await new Promise((resolve, reject) => { server.once('error', reject); server.listen(port, '127.0.0.1', resolve); }); return {server, url: `http://127.0.0.1:${server.address().port}`}; - Network accessline 15
await new Promise((resolve, reject) => { server.once('error', reject); server.listen(port, '127.0.0.1', resolve); }); return {server, url: `http://127.0.0.1:${server.address().port}`}; } - Network accessline 16
return {server, url: `http://127.0.0.1:${server.address().port}`};
assets/starter/src/adapters/next-dynamic.jsx
- Executable scriptline 1
Executable file
assets/starter/src/adapters/next-image.jsx
- Executable scriptline 1
Executable file
assets/starter/src/adapters/next-link.jsx
- Executable scriptline 1
Executable file
assets/starter/src/adapters/next-navigation.js
- Executable scriptline 1
Executable file
assets/starter/src/client.jsx
- Executable scriptline 1
Executable file
assets/starter/src/engine.js
- Executable scriptline 1
Executable file
assets/starter/src/fake-api.js
- Executable scriptline 1
Executable file
assets/starter/src/film-store.js
- Executable scriptline 1
Executable file
assets/starter/src/film.jsx
- Executable scriptline 1
Executable file
assets/starter/src/fixtures/api.js
- Executable scriptline 1
Executable file
assets/starter/src/kit/cursor.jsx
- Executable scriptline 1
Executable file
assets/starter/src/kit/interact.js
- Executable scriptline 1
Executable file
assets/starter/src/kit/measure.js
- Executable scriptline 1
Executable file
assets/starter/src/kit/text.jsx
- Executable scriptline 1
Executable file
assets/starter/src/presentations.jsx
- Executable scriptline 1
Executable file
assets/starter/src/product-context.jsx
- Executable scriptline 1
Executable file
assets/starter/src/shots/index.js
- Executable scriptline 1
Executable file
assets/starter/src/shots/sample.jsx
- Executable scriptline 1
Executable file
assets/starter/stills.mjs
- Executable scriptline 1
Executable file
extras/news-video/content.example.json
- Network accessline 36
"handles": ["@example", "示例定价页"], "quote": {"handle": "@example", "time": "01/01 09:00", "text": "Introducing Example Model 2: our fastest small model."}, "claim": true, "source": ["https://example.com/pricing"], - Network accessline 37
"quote": {"handle": "@example", "time": "01/01 09:00", "text": "Introducing Example Model 2: our fastest small model."}, "claim": true, "source": ["https://example.com/pricing"], "narration": [ - Network accessline 38
"claim": true, "source": ["https://example.com/pricing"],
extras/news-video/overlay/poster.mjs
- Executable scriptline 1
Executable file
extras/news-video/overlay/render.mjs
- Executable scriptline 1
Executable file
extras/news-video/overlay/src/film.jsx
- Executable scriptline 1
Executable file
extras/news-video/overlay/src/kit/text.jsx
- Executable scriptline 1
Executable file
extras/news-video/overlay/src/shots/index.js
- Executable scriptline 1
Executable file
extras/news-video/overlay/src/shots/news.jsx
- Executable scriptline 1
Executable file
extras/news-video/tools/apply_overlay.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 52
if dst.exists(): continue if a.fonts_dir and (a.fonts_dir/name).exists(): shutil.copy2(a.fonts_dir/name, dst); continue url = 'https://github.com/google/fonts/raw/main/' + rel - Network accessline 53
if a.fonts_dir and (a.fonts_dir/name).exists(): shutil.copy2(a.fonts_dir/name, dst); continue url = 'https://github.com/google/fonts/raw/main/' + rel try: - Network accessline 54
url = 'https://github.com/google/fonts/raw/main/' + rel try: with urllib.request.urlopen(url, timeout=120) as r: dst.write_bytes(r.read()) - Network accessline 55
try: with urllib.request.urlopen(url, timeout=120) as r: dst.write_bytes(r.read()) print('font', name) - Network accessline 56
with urllib.request.urlopen(url, timeout=120) as r: dst.write_bytes(r.read()) - Possible obfuscationline 62
(P/'public/poster.png').write_bytes(base64.b64decode(
extras/news-video/tools/make_timeline.py
- Executable scriptline 1
#!/usr/bin/env python3
extras/news-video/tools/mix_voice.py
- Executable scriptline 1
#!/usr/bin/env python3
extras/news-video/tools/music.py
- Executable scriptline 1
#!/usr/bin/env python3
extras/news-video/tools/tts.py
- Executable scriptline 1
#!/usr/bin/env python3
references/audio-and-qa.md
- Network accessline 66
若改用实时侧链,FFmpeg `sidechaincompress` 用第二路信号控制第一路的压缩,需调 threshold/ratio/attack/release;本工具选择已知 cue 的音量自动化,更容易预先让位和重复验证。滤镜语法依据 [FFmpeg volume](https://ffmpeg.org/ffmpeg-filters.html#volume) 与 [sidechaincompress](https://ffmpeg.org/ffmpeg-filter
references/audio-sourcing.md
- Network accessline 44
1. **用户已有、来源清楚的素材库。** 2. **本机已装的录音素材库**:例如 media-use skill 自带的 Pixabay 音效(点击、按键、打字、弹出、通知、叮、嗖、故障、低频冲击等)。许可说明读它自带的 `CREDITS.md`,并记录进工程。 3. **素材站搜索**:例如 [Pixabay 音效库](https://pixabay.com/sound-effects/)。下载链接必须来自真实的下载操作,不要编造 CDN 地址。素材站需要交互式下载、当 - Network accessline 45
2. **本机已装的录音素材库**:例如 media-use skill 自带的 Pixabay 音效(点击、按键、打字、弹出、通知、叮、嗖、故障、低频冲击等)。许可说明读它自带的 `CREDITS.md`,并记录进工程。 3. **素材站搜索**:例如 [Pixabay 音效库](https://pixabay.com/sound-effects/)。下载链接必须来自真实的下载操作,不要编造 CDN 地址。素材站需要交互式下载、当前工具拿不到文件时,如实记录,改用下一项。 - Network accessline 46
3. **素材站搜索**:例如 [Pixabay 音效库](https://pixabay.com/sound-effects/)。下载链接必须来自真实的下载操作,不要编造 CDN 地址。素材站需要交互式下载、当前工具拿不到文件时,如实记录,改用下一项。
references/component-pipeline.md
- Network accessline 21
- **provider**:读产品的 App 外壳,把组件依赖的上下文(i18n、tooltip、面板/分屏状态、图标默认值)用静态值补在 `product-context.jsx`。报错 `must be used within ...` 指明了缺哪个。 - **数据**:组件在 effect 里 `fetch('/api/...')` 的,由 `fake-api.js` 按路径返回 fixture。fixture 从产品自己的常量或目录派生(例如用产品内置的服务商预设生 - Network accessline 22
- **数据**:组件在 effect 里 `fetch('/api/...')` 的,由 `fake-api.js` 按路径返回 fixture。fixture 从产品自己的常量或目录派生(例如用产品内置的服务商预设生成模型列表),名字和图标就是真的。
references/onboarding.md
- Network accessline 30
来源:[FFmpeg](https://formulae.brew.sh/formula/ffmpeg)、[Node](https://formulae.brew.sh/formula/node)、[Python](https://docs.brew.sh/Homebrew-and-Python)。若需要 Node LTS,按 [Node 下载页](https://nodejs.org/en/download) 与 Homebrew 当前 formula 选择受支持的 LTS - Network accessline 32
没有 Homebrew 时可使用已有工具或 [官方安装器](https://docs.brew.sh/Installation)。需要安装 Homebrew 时,从官方文档取当前命令,查看脚本后执行;不在此冻结安装脚本版本。 - Dangerous shell operationline 37
sudo apt-get update - Dangerous shell operationline 38
sudo apt-get install -y ffmpeg python3 - Network accessline 48
nvm 未安装时,按 [nvm 官方安装说明](https://github.com/nvm-sh/nvm#installing-and-updating) 获取当前版本化脚本 URL,下载查看后执行;可用 `PROFILE=/dev/null` 避免修改 shell 配置,再加载安装输出中的实际 `nvm.sh`。其他发行版按其包管理器及 [FFmpeg 下载页](https://ffmpeg.org/download.html) 处理。 - Network accessline 63
来源:[WinGet search](https://learn.microsoft.com/en-us/windows/package-manager/winget/search)、[WinGet install](https://learn.microsoft.com/en-us/windows/package-manager/winget/install)、[Python Windows 安装说明](https://docs.python.org/3/using/win - Network accessline 75
此命令适合起步工程默认 `headless:true`、未指定 channel 的导出。工程需要有头 Chromium 时去掉 `--only-shell`。Linux 缺系统库时可用 `npx playwright install --with-deps chromium`。依据 [Playwright 浏览器文档](https://playwright.dev/docs/browsers),headless shell 与完整 Chromium 是独立文件,**以真实 l - Network accessline 81
沿用已有版本。新工程需要 CLI 时,先核对 [官方 CLI 文档](https://github.com/heygen-com/hyperframes/blob/main/skills/hyperframes-cli/references/doctor-browser.md) 和当前 `--help`,再执行:
references/starter.md
- Network accessline 143
镜头代码里新写了 Tailwind 类,要重新编译。Tailwind v3 用对应版本的 CLI 和继承产品 theme/plugins 的配置,`content` 同时包含产品与视频源码。产品 CSS 里的 `url(...)` 字体/图片要能在 `dist/` 里找到。来源:[esbuild nodePaths](https://esbuild.github.io/api/#node-paths)、[Tailwind CLI](https://tailwindcss.co
scripts/check_delivery.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/check_environment.py
scripts/init_project.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/make_sfx.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/mix_audio.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/sfx_landmarks.py
- Executable scriptline 1
#!/usr/bin/env python3
tests/integration.mjs
- Executable scriptline 1
Executable file - Network accessline 34
export function Panel() { const [data, setData] = useState(null); useEffect(() => { fetch('/api/panel').then(r => r.json()).then(setData); }, []); - Network accessline 35
const [data, setData] = useState(null); useEffect(() => { fetch('/api/panel').then(r => r.json()).then(setData); }, []); return <div className="panel"><h2>{label}</h2><p className="fetched">{data ? data.title : 'loading'}</p></div>; - Network accessline 36
useEffect(() => { fetch('/api/panel').then(r => r.json()).then(setData); }, []); - Network accessline 38
}`); await writeFile(path.join(repo, 'src/components/panel.css'), `.panel{background-image:url('./mark.svg');padding:40px}.panel h2{font-size:31px}`); await writeFile(path.join(repo, 'src/components/mark.svg'), '<svg xmlns="http://www.w - Network accessline 39
await writeFile(path.join(repo, 'src/components/panel.css'), `.panel{background-image:url('./mark.svg');padding:40px}.panel h2{font-size:31px}`); await writeFile(path.join(repo, 'src/components/mark.svg'), '<svg xmlns="http://www.w3.org/2 - Network accessline 40
await writeFile(path.join(repo, 'src/components/mark.svg'), '<svg xmlns="http://www.w3.org/2000/svg" width="4" height="4"><rect width="4" height="4" fill="red"/></svg>');
tests/test_regressions.py
- Executable scriptline 1
Executable file - Network accessline 74
self.assertTrue(any('derive devices' in w for w in warnings)) def test_external_evidence_not_treated_as_file(self): self.plan['shots'][0]['source']=['https://example.org/release.md','tag:v1.0','commit:abc123'];self.assertEqual(s - Network accessline 75
def test_external_evidence_not_treated_as_file(self): self.plan['shots'][0]['source']=['https://example.org/release.md','tag:v1.0','commit:abc123'];self.assertEqual(self.errors(),[]) class Preflight(unittest.TestCase): - Network accessline 76
self.plan['shots'][0]['source']=['https://example.org/release.md','tag:v1.0','commit:abc123'];self.assertEqual(self.errors(),[])
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.
Signal confidence: 4 facts
- Network access in code of documentationREADME.md:24Low confidence
- Network access in code of documentationREADME.md:138Low confidence
- Network access in code of documentationREADME.md:149Low confidence
- Network access in code of documentationREADME.md:157Low confidence
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.
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/op7418-guizang-product-video-skill/)