Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
4104572
Add Plugin: html2video-for-mcode
Wzdhehe Sep 17, 2026
9684d4b
Add Plugin: html2video-for-mcode
Wzdhehe Sep 17, 2026
756ffb6
fix: place plugin files under plugins/Wzdhehe/ (previous commit wrote…
Wzdhehe Sep 17, 2026
11bd0c7
chore: restore repo-root file to upstream content (my earlier commit …
Wzdhehe Sep 17, 2026
96f0458
chore: restore repo-root file to upstream content (my earlier commit …
Wzdhehe Sep 17, 2026
701a14a
chore: restore repo-root file to upstream content (my earlier commit …
Wzdhehe Sep 17, 2026
737ee96
v1.0.1: 领域与合规(受监管题材)——免责声明/数字口径/涨跌色 + 整片级领域自查
Wzdhehe Sep 17, 2026
f015a8b
v1.1.0: 评审修复(路径收监/覆盖拒绝/ASR 端点白名单/抓图 SSRF 收紧)+ 72 例 node:test 可执行测试
Wzdhehe Sep 18, 2026
0f9dd3c
ci: 为 html2video-for-mcode 加 scoped smoke workflow(装 ffmpeg+playwrigh…
Wzdhehe Sep 18, 2026
4fa74ea
ci: 修正 workflow 路径(上一条前缀重复, 落到 .github/workflows/.github/workflows/)
Wzdhehe Sep 18, 2026
e8b98ce
feat: 放映页(preview-page)可先放映一遍再渲染; init-project --upgrade-css; 修 fx-sp…
Wzdhehe Sep 18, 2026
acdfefd
ci: smoke workflow 覆盖新增 2 个测试文件(共 7 个)
Wzdhehe Sep 18, 2026
7455181
refine: 放映页只做放映(去计时器/进度条/跟读高亮) + 响应式布局; 口播 UI 按数据自动开关
Wzdhehe Sep 18, 2026
7ee2cb4
docs: 文档与功能对齐(11 脚本+3 模块、99 例测试、放宽后的层规则、Gate 4 口径、合规/图表/no-fx 覆盖)
Wzdhehe Sep 18, 2026
62816b1
docs: 英文 README 的示例需求补英文对译
Wzdhehe Sep 18, 2026
97ad020
feat: fetch-official-images --url(内置浏览器取图有落盘入口)+ 内置浏览器纪律写进配图/调研 SOP
Wzdhehe Sep 18, 2026
4701daa
fix: --url 下载查重前置 + 0 字节/绕圈护栏(含文档)
Wzdhehe Sep 18, 2026
eec9f0d
feat: 图表工具箱 v2 + 数据可视化纪律(轴线/字幕安全区/数值列)
Wzdhehe Sep 18, 2026
472ebdf
ci: smoke 清单加 chart-kit
Wzdhehe Sep 18, 2026
52278f2
feat: 表格工具箱 + 可读性硬指标(正文号/行高 72)
Wzdhehe Sep 18, 2026
4089ba5
ci: smoke 清单加 table-kit
Wzdhehe Sep 18, 2026
8648e40
docs: 模块数修正(11 CLI + 5 内部模块)
Wzdhehe Sep 18, 2026
b66404d
html2video-for-mcode 1.2.0: CSS 工具箱受管块(rev 原地替换 + --check-css), 修 .ma…
Wzdhehe Sep 18, 2026
b4fc434
CI: smoke 清单加 css-kit.test.mjs
Wzdhehe Sep 18, 2026
6e2fcae
html2video-for-mcode 1.3.0: SSRF mapped-IPv6 拦截、竖版放映页、still 复截警告、受管块 …
Wzdhehe Sep 18, 2026
0fe6a11
html2video-for-mcode 1.3.1: 调研行补内置浏览器/无头浏览器归属, 工具开放纪律不变
Wzdhehe Sep 18, 2026
3f1a0c2
html2video-for-mcode 1.3.2: 开工对齐新增'数据与图表'必问项
Wzdhehe Sep 18, 2026
17385f3
html2video-for-mcode 1.3.3: Gate 1 呈现格式补'表格与动效'必填列
Wzdhehe Sep 18, 2026
105f797
html2video-for-mcode 1.3.4: 配图 SOP 路径 D(公告与报道截图, 主流门户合格)
Wzdhehe Sep 18, 2026
619f860
html2video-for-mcode 1.3.5: 开工对齐必须问并等答(附实测反例为禁例)
Wzdhehe Sep 18, 2026
d49b876
html2video-for-mcode 1.3.6: 素材边界加问负面事件的公告/新闻截图
Wzdhehe Sep 18, 2026
33f6a1e
html2video-for-mcode 1.3.7: 开工对齐 11 项重排 + Gate 3 选素材与补充素材
Wzdhehe Sep 18, 2026
fcf3630
feat(preview): manual level stepping, double-buffered frame swap, bil…
Wzdhehe Sep 18, 2026
733d7a8
fix(security): contain output paths, validate every network request, …
Wzdhehe Sep 18, 2026
349b14b
feat(video): cover image, non-black first frame, slide transitions, s…
Wzdhehe Sep 18, 2026
114b628
fix(html2video): one managed tokens region + stale-CSS blocking, thir…
Wzdhehe Sep 18, 2026
9ab1dfb
html2video-for-mcode 1.7.1: framesCover 清单校验 + 宿主 CI 兼容(ASR 用例带因跳过) +…
Wzdhehe Sep 18, 2026
b945b51
ci: 补推 1.7.0 就该上的 smoke workflow 修正(shell glob/permissions/SHA pin ——…
Wzdhehe Sep 18, 2026
3a2f188
html2video-for-mcode 1.7.2: --json 布尔读取修复(末位静默退化) + canary 用例补 playwr…
Wzdhehe Sep 18, 2026
d482a84
html2video-for-mcode 1.7.3: 五处收监用例在无链接平台空过 → 带因跳过(其中一处补 junction 回退真跑…
Wzdhehe Sep 19, 2026
50987c1
html2video-for-mcode 1.7.4: capture 补 width/height 整数闸门(playwright 之前…
Wzdhehe Sep 19, 2026
154eb79
html2video-for-mcode 1.7.5: 第三份 review 四条全修 —— safeRel 祖先链接回退收紧(实弹复现过…
Wzdhehe Sep 19, 2026
b18546a
html2video-for-mcode 1.7.6: 九轮 review 收尾 —— grab-frames 叶子收监(同类最后一处)+…
Wzdhehe Sep 19, 2026
a9841af
html2video-for-mcode 1.7.6: 九轮 review 收尾 —— grab-frames 叶子收监(同类最后一处)+…
Wzdhehe Sep 19, 2026
5200b5b
html2video-for-mcode 1.7.6: 九轮 review 收尾 —— grab-frames 叶子收监(同类最后一处)+…
Wzdhehe Sep 19, 2026
e2ae2a4
html2video-for-mcode 1.7.7: 十轮审计 —— asr 转码临时文件移入 os.tmpdir()(1.7.6 的"…
Wzdhehe Sep 19, 2026
9b62df6
html2video-for-mcode 1.7.8: 十一轮审计 —— 写点穷举清点收敛(58 站点无可利用残留) + 修正 1.7.7…
Wzdhehe Sep 19, 2026
51b127f
html2video-for-mcode 1.7.9: docs-only —— 更正 1.7.8 条目的类目算术(类间重叠), 结论不变
Wzdhehe Sep 19, 2026
e845cbd
html2video-for-mcode 1.8.0: 十三轮 review —— 第二仓库不再作为安装渠道(homepage→宿主目录/…
Wzdhehe Sep 19, 2026
443ca01
html2video-for-mcode 1.8.1: docs-only —— SKILL.md 安装段收口到宿主插件(第 13 轮评审…
Wzdhehe Sep 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .github/workflows/html2video-for-mcode-smoke.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# html2video-for-mcode · scoped smoke CI
# 官方主 CI(ci.yml)只跑 validate + node --test(无 ffmpeg/playwright, 渲染冒烟会 skip)。
# 本 workflow 按 CONTRIBUTING/ci.yml 注释给出的"单插件 scoped workflow"模式,
# 装齐依赖后真实执行全部测试 —— 这是 PR #41 评审要求的可执行测试证据。
# 触发条件: 仅本插件目录(.github/workflows/ 本文件除外)或本文件自身变更。
#
# 第三轮 review 修正(2026-09-18, 1.7.1 才真正推上来 —— 1.7.0 时这份修正只改了本地没推送,
# PR 分支上一直是旧枚举版, 漏跑 cover-transition / review-round2 / review-round3 / subtitles-invalidate):
# ① 测试文件不再逐个枚举, 改用 shell glob `tests/*.test.mjs` —— 枚举写法每加一个测试文件就要
# 手工记得改这里, 历史上已经漏过 css-kit / tokens-fx / chart-kit / table-kit 与上述四个文件。
# ② 补 permissions: contents: read(与本仓库其余 scoped workflow 一致, 只读仓库)。
# ③ actions 按仓库主 ci.yml 的同一批版本做**完整 SHA pin**(附版本注释), 不用浮动 tag;
# SHA 由 gh api repos/<owner>/<repo>/commits/<tag> 解析得到, 40 位整(主 ci.yml 的 checkout
# 那行多了一位字符, 那是宿主仓库自己的笔误, 不去动它 —— 见 PR comment)。
name: html2video-for-mcode smoke

on:
pull_request:
paths:
- 'plugins/Wzdhehe/html2video-for-mcode/**'
- '.github/workflows/html2video-for-mcode-smoke.yml'
push:
branches: [main]
paths:
- 'plugins/Wzdhehe/html2video-for-mcode/**'
- '.github/workflows/html2video-for-mcode-smoke.yml'
workflow_dispatch:

permissions:
contents: read

jobs:
smoke:
name: smoke (ubuntu-latest · ffmpeg + chromium)
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Set up Node
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: 22

- name: Install ffmpeg
run: sudo apt-get update && sudo apt-get install -y --no-install-recommends ffmpeg

- name: Install playwright (no package.json / lockfile changes)
run: |
npm install --no-save --no-package-lock playwright
npx playwright install --with-deps chromium

# 一条命令跑完 tests/ 下的**全部** *.test.mjs(安全 / 策略 / 模板 / 受管块 / 渲染冒烟)。
# glob 交给 shell 展开: 以后新增测试文件自动进 CI, 不需要改这里(旧枚举写法漏过 8 个文件)。
# 单测超时 300s: 渲染冒烟里的 capture / build-video 在 CI 上要几十秒。
- name: All tests (security · policy · templates · css blocks · render smoke)
run: |
node --test --test-timeout=300000 \
plugins/Wzdhehe/html2video-for-mcode/skills/html2video-for-mcode/tests/*.test.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"name": "html2video-for-mcode",
"version": "1.8.1",
"description": "Turn a topic, outline, or script into a narrated MP4: HTML slides with staged entrance animations, TTS voiceover, ffmpeg assembly, and ASR verification.",
"skills": [
"./skills/html2video-for-mcode/SKILL.md"
]
}
370 changes: 370 additions & 0 deletions plugins/Wzdhehe/html2video-for-mcode/CHANGELOG.md

Large diffs are not rendered by default.

21 changes: 21 additions & 0 deletions plugins/Wzdhehe/html2video-for-mcode/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 Wzdhehe

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
276 changes: 276 additions & 0 deletions plugins/Wzdhehe/html2video-for-mcode/README.md

Large diffs are not rendered by default.

158 changes: 158 additions & 0 deletions plugins/Wzdhehe/html2video-for-mcode/README.zh-CN.md

Large diffs are not rendered by default.

65 changes: 65 additions & 0 deletions plugins/Wzdhehe/html2video-for-mcode/THIRD-PARTY-NOTICES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Third-party components and license notices

This skill contains material adapted from third-party open-source projects. As the MIT license requires, the original copyright notices and the license text are reproduced below.

---

## html-ppt-skill

- **Source**: https://github.com/lewislulu/html-ppt-skill
- **Copyright**: Copyright (c) 2026 lewis <sudolewis@gmail.com>
- **License**: MIT
- **Date introduced**: 2026-09-17
- **Scope of adaptation** (all rewritten to fit this skill's single-page static rendering and audio-visual sync system):
- `slides/tokens.css` generated by `scripts/init-project.mjs`:
- the color tokens of 10 named themes (`minimal-white` / `swiss-grid` / `corporate-clean` / `editorial-serif` /
`magazine-bold` / `tokyo-night` / `catppuccin-mocha` / `nord` / `xiaohongshu-white` / `soft-pastel`)
— the variable names are mapped to this skill's naming (`--surface`→`--panel`, `--text-1/2/3`→`--fg/--muted/--fg-3`,
`--border`→`--line`, and so on), and the external fonts (Playfair Display / Space Grotesk and others) were replaced with local font stacks
- the image-frame primitives `.img-frame` / `.contain` / `.fill` / `.img-scrim` / `.img-cap` / `.img-tag` and their
`--img-ratio` / `--img-pos` variables
- the keyframes of some entrance animations (`fx-blur` `fx-rise` `fx-pop` `fx-spotlight` `fx-ripple` `fx-glitch`
`fx-shimmer` `fx-kenburns` `fx-stagger`) — the trigger mechanism was changed from "JS re-triggering on slide change" to
"`animation-delay: var(--tN)` absolute time" so it works with frame-stepping rendering
- the typographic roles and container classes `.kicker` / `.eyebrow` / `.lede` / `.card` (with three variants) / `.pill` / `.divider-accent`
- Some layout skeletons in `references/authoring.md` were rewritten from the versions of the same name under its `templates/single-page/`
- The image-frame usage rules in `references/image-sources.md` follow the design intent of its `.img-frame`

**Not adopted** (incompatible with its design or carrying extra dependencies): `runtime.js` (keyboard navigation / presenter mode / overview),
the 20 canvas effects under `assets/animations/fx/` (rAF-driven, cannot be frame-seeked),
`fonts.css` and every external Google Fonts link, the Chart.js / highlight.js CDN dependencies, and the `@media print` pagination logic.

The "page through it once" need is served by this skill's own `scripts/preview-page.mjs` (which generates `preview/play/index.html`),
and that code has nothing to do with upstream: the upstream runtime.js is built for a live human presentation (presenter window, teleprompter script, timer, BroadcastChannel two-window sync),
whereas this skill produces a video and has no live speaking step; the play page only replays slide by slide + compares the motion switch + shows the voiceover panel.

### The MIT license text

```
MIT License

Copyright (c) 2026 lewis <sudolewis@gmail.com>

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```

---

**Commercial use**: the MIT license permits commercial use, modification, redistribution and sublicensing; the only obligation is to retain the copyright and license notices above.
The final artefacts this skill produces (video, subtitles, cover, and so on) are the user's own creations and do not inherit the license obligations above.
23 changes: 23 additions & 0 deletions plugins/Wzdhehe/html2video-for-mcode/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "html2video-for-mcode",
"version": "1.8.1",
"description": "Turn a topic, outline, or script into a narrated MP4: HTML slides with staged entrance animations, TTS voiceover, ffmpeg assembly, and ASR verification.",
"author": {
"name": "Wzdhehe",
"url": "https://github.com/Wzdhehe"
},
"homepage": "https://github.com/MiniMax-AI/MiniMax-Code-Plugins/tree/main/plugins/Wzdhehe/html2video-for-mcode",
"repository": "https://github.com/MiniMax-AI/MiniMax-Code-Plugins",
"license": "MIT",
"keywords": [
"video",
"html-to-video",
"slides",
"tts",
"voiceover",
"subtitles",
"ffmpeg",
"playwright"
]
}
Loading