SuperAPI AI 工具集

html-export

办公与效率

查看项目

更新于 11-04 20:59

技能介绍

html-export 是一个用于把本地 HTML 文件导出为多种交付格式的技能,入口为 Node.js 脚本,其他技能或用户都可按路径调用。它只负责渲染,不会代为安装依赖、提交代码或发布内容。

用途

面向需要把 HTML 页面、幻灯片、模型稿或动画导出为图片、PDF 或视频的工作流。可通过 --to 选择目标格式:png 生成截图并做页面错误与空白捕获检查;pdf 生成矢量 PDF,可用于打印或幻灯片;mp4 / gif 对动画做确定性录制。

主要能力

PNG:支持多输入文件、默认视口 1440x900 与 390x844,可选 --full-page 生成整页截图并单独做空白检查;--slides 可为每个幻灯片生成单独截图;输出 report.json 记录失败项、页面错误、被拦截请求等。

PDF:支持打印模式(使用页面打印 CSS,页面尺寸可由 --page 指定,否则取 CSS @page)与幻灯片模式(--slides,逐个导航项打印为视口大小的页);多个输入或幻灯片会合并为一个 PDF,并附带 report.json。

视频:mp4 / gif 为确定性动画录制,可设 --fps、--duration、--audio(仅 mp4)、--gif-width(仅 gif)、--keep-frames;录制前设置 window.__recording 并隐藏标记 data-export-hide 的元素;输出 frames.json,包含状态、退出码、页面错误、每帧 sha256 等。

通用选项:--out、--viewport、--scale、--timeout、--offline、--allow-errors、--self-check 等;先校验参数再执行,错误命令即使依赖未装也会以退出码 2 结束。

使用方式

需 Node.js 20 及以上,技能目录内 Playwright 1.55.1 及以上;视频导出还需 ffmpeg(含 libx264)。依赖需在用户要求时自行执行安装命令,导出器只会在退出码 3 时打印命令,不会代为安装。典型调用:

node .claude/skills/html-export/scripts/export.cjs --to=png page.html node .claude/skills/html-export/scripts/export.cjs --to=pdf deck.html --page=1920x1080 node .claude/skills/html-export/scripts/export.cjs --to=mp4 intro.html --duration=4

--to 为必填项,没有默认目标。退出码含义:0 成功且检查通过;1 工具故障且页面无过错;2 用法错误;3 依赖缺失;4 页面本身有问题(页面错误、空白截图或未接受的页面错误)。应优先看退出码,再看 report.json / frames.json,最后才看输出文件。

适用场景

适用于项目自产的幻灯片、模型稿、报告、草稿的截图与 PDF 交付,以及把 CSS/JS 动画录成 MP4 或 GIF。制作方选择器方面,presentation-builder 可用默认 --slides 与 --page=1920x1080;feature-presentation 可用 --slides=section.deck__slide;work-item 模型稿模式可用 --slides='[data-state]';其他页面可用 data-export-slide 标记。

限制与信任

仅应渲染项目或用户自产的 HTML;来自网络或不可信的页面必须加 --offline。Chromium 运行时没有操作系统沙箱,页面可把用户可读的本地文件嵌入截图、PDF 或视频;--offline 只阻断网络流量,不是沙箱,被嵌入的本地文件仍会进入输出。HTML 保持为唯一事实来源,不要为导出器改造 HTML;应修页面或换选择器。--duration 单位为秒,页面钩子 window.__duration 为毫秒,两者都没有时以退出码 2 结束且不写文件。视频只接受一个 HTML 输入,--slides、--page、--self-check 在视频目标下属用法错误。GIF 目标失败时若同名 MP4 可用则保留 MP4。安装应进入技能目录执行,不要用 npm install --prefix,以免把宿主项目写进技能依赖。删除技能目录会移除其 npm 依赖,Chromium 仍留在 Playwright 的按用户浏览器缓存中,需先在技能目录内运行 npx playwright uninstall 再删除。