{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "web-video-presentation",
  "built": "2026-10-26",
  "control_level": 4,
  "control_level_label": "L4 高权限",
  "capabilities": [
    "execute_command",
    "install_deps",
    "network",
    "write_file"
  ],
  "required_controls": {
    "agent": [
      "sandbox_recommended",
      "graded_authorization"
    ],
    "admin": [
      "approval_process",
      "rollback_support",
      "full_audit"
    ]
  },
  "evidence": [
    {
      "file": "scripts/",
      "summary": "Executes local scripts or commands: bash scripts/scaffold.sh <target> [--theme=…] (npm create vite + npm install)"
    },
    {
      "file": "scripts/ 或 SKILL.md",
      "summary": "Declares dynamic installation of external language package dependencies"
    },
    {
      "file": "网络端点",
      "summary": "Declares outbound network access: https://openspeech.bytedance.com/api/v3/tts/unidirectional (default Volcengine/Doubao TTS, POST)"
    },
    {
      "file": "本地工作目录",
      "summary": "File read/write and artifact output: generated presentation/ project (complete Vite + React + TS source code, package.json, vite.config.ts, tsc)"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查：① 目录清单核对——本 skill 目录 = SKILL.md + scripts/2 个 sh + references/11 份（含 EXAMPLES/3 组章节示意）+ templates/（完整 Vite 项目 + 6 个脚本）+ themes/10 套 ×2 文件，与 SKILL.md 的「相关资源」表逐行对齐；② token 扫描（https?:// / API_KEY / TOKEN / Bearer / source / curl / process.env / execSync / spawn）逐条打开：网络点集中在 synthesize-audio.sh（openspeech.bytedance.com）、scaffold.sh（npm registry）、录屏与字幕脚本（本地回环/ffmpeg）、主题 CSS（Google Fonts）；凭证读取集中在 synthesize-audio.sh 的 env + $HOME/.config/doubao-tts/env；③ 反查「是否夸大」：文档明说 CDP/Playwright/人工录屏更可控并解释为何不用 screencli，未宣称自动化质量认证；④ 检查是否存在反自动化/安全降级迹象（grep AutomationControlled / remote-allow-origins / --no-verify / --sandbox）：零命中；⑤ 与姊妹 skill 的关系核对（另见 skills/hyperframes-teaching-video 的 SKILL.md：它明令除用户要求外不走本实现路径）。",
    "second_pass": [
      {
        "item": "TTS 凭证读取与外发是否真实（橙档关键证据）",
        "status": "ok",
        "detail": "synthesize-audio.sh 原文：'#   2. DOUBAO_TTS_API_KEY or VOLCENGINE_TTS_API_KEY for default Volcengine/Doubao TTS'；'DEFAULT_VOLCENGINE_ENV_FILE=\"$HOME/.config/doubao-tts/env\"'；缺失时 source 该文件；取到后作为鉴权头 curl 到 https://openspeech.bytedance.com/api/v3/tts/unidirectional。调用点与降级说明（AUDIO.md 的「缺少 API Key 时不要假装合成成功」）一致。"
      },
      {
        "item": "是否存在反自动化绕过或安全降级（红档排除）",
        "status": "ok",
        "detail": "record-cdp-screencast.mjs 的 puppeteer.launch 只有 headless: true 与 args=[--autoplay-policy=no-user-gesture-required, --hide-scrollbars, --window-size=…]，无 AutomationControlled、无 remote-allow-origins=*、无 webdriver 伪装；全目录 grep --no-verify / --sandbox / dangerouslyDisableSandbox 零命中。CDP 只连本机回环页面（默认 http://127.0.0.1:5175/?auto=1&record=1&autostart=1）。"
      },
      {
        "item": "「默认不停下问」会不会导致未经同意的付费合成",
        "status": "discrepancy",
        "detail": "［判定：设计取舍，非缺陷］SKILL.md 明写 '**默认不要停下来问是否合成音频**。Phase 2 全部 HTML 已完成且验证通过后，agent 直接进入本阶段。'，并列出四种收口例外（用户说不要/鉴权缺失/换本地 TTS）。即：默认路径会消耗 TTS 账号额度且不再二次确认——属有意的流程设计（音频是一镜到底前提），但使用者应在开始前知情并配好额度与凭证。"
      },
      {
        "item": "脚手架是否真的安装 puppeteer-core（录屏能力来源）",
        "status": "ok",
        "detail": "scripts/scaffold.sh 内含 `npm install >/dev/null 2>&1` 与 `npm install --save-dev tsx puppeteer-core >/dev/null 2>&1`，随后跑 `npx tsc --noEmit` 自检；即录屏/字幕脚本的依赖由脚手架负责安装，而非假定全局存在。"
      },
      {
        "item": "并行章节开发（模式 C）带来的风格与质量分散",
        "status": "unlocatable",
        "detail": "文档声称主题 token 兜底、章节 CSS 物理隔离、风格不一致等于「人手写视频的呼吸感」；但 pin 仓库内没有多章并行产出的成品或验收记录可用于验证该主张，本次只读侦查不运行生成，故仅作「文档声明」记录，不当作已核事实。"
      },
      {
        "item": "「?auto=1 一镜到底」的机制描述是否与代码一致",
        "status": "ok",
        "detail": "AUDIO.md 与 build-master-audio.mjs 的描述一致：分段合成后拼成 master.mp3 + timeline.json，运行时 Auto 模式优先播 master 音轨并按 timeline 驱动 HTML 节点；RECORDING.md 的 CDP 路径以 --audio=<normalized master> 复用同一条母版，避免分段交接造成尾字截断。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "f2c70b812b15674058cc109ffe62c85646dce141",
    "sha256": "6c6b9cedf01421146e54651b10b7e8ae3cc965213e38f34a92055f4e51852b2c",
    "reviewed_by": null,
    "reviewed_at": null
  },
  "assessed_at": "2026-10-25",
  "method_version": "2.0",
  "mirror": {
    "archive": "https://skillpub.pages.dev/r2/v/2026-09-28/web-video-presentation.tar.gz",
    "sha256": "6c6b9cedf01421146e54651b10b7e8ae3cc965213e38f34a92055f4e51852b2c",
    "commit": "f2c70b812b15674058cc109ffe62c85646dce141"
  },
  "original": {
    "github": "https://github.com/hideaway007/codex-video-skills/tree/main/skills/web-video-presentation",
    "path": "skills/web-video-presentation",
    "commit": "f2c70b812b15674058cc109ffe62c85646dce141"
  }
}