{"id":"6c426e4f-493e-47c9-a8e5-972a758cd220","entityType":"agent","slug":"clawhub-chugenice-history-persona-video","name":"history-persona-video","canonicalUrl":"https://www.xpersona.co/agent/clawhub-chugenice-history-persona-video","canonicalPath":"/agent/clawhub-chugenice-history-persona-video","generatedAt":"2026-10-10T02:54:30.145Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-09T15:34:12.883Z","emptyReason":null},"description":"历史人物AI复原竖版短视频制作全流程（素材/配音/卡片/合成/验证） Skill: history-persona-video Owner: chugenice Summary: 历史人物AI复原竖版短视频制作全流程（素材/配音/卡片/合成/验证） Tags: latest:0.1.0 Version history: v0.1.0 | 2026-08-05T15:12:33.107Z | auto history-persona-video v0.1.0 初始发布 - 提供历史人物AI复原竖版短视频的全流程制作指导，包括素材准备、AI生图、配音、BGM、卡片制作、视频合成与质量验证。 - 给出详细时间轴模板、画面风格、字幕与字体规范，实现高还原度视觉冲击与信服力。 - 支持参数化批量生成流程，规范交付输出与成本统计。 - 完整示范曹操复原案例，覆盖全流程实测参数与要点。 - 强调免责声明，确保内容艺术化呈现。 Archive index: Archive v0.1.0: 20 files, 28","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 2.4K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s170rxgjewthcxh5tq9524znj983r9aq:history-persona-video","sourceUrl":"https://clawhub.ai/chugenice/history-persona-video","homepage":"https://clawhub.ai/chugenice/skills/history-persona-video","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/chugenice/history-persona-video","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/chugenice/skills/history-persona-video","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":68,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"历史人物AI复原竖版短视频制作全流程（素材/配音/卡片/合成/验证） Skill: history-persona-video Owner: chugenice Summary: 历史人物AI复原竖版短视频制作全流程（素材/配音/卡片/合成/验证） Tags: latest:0.1.0 Version history:"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T15:34:12.883Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T15:34:12.883Z","emptyReason":null},"stars":null,"forks":null,"downloads":2385,"packageName":null,"latestVersion":"0.1.0","tractionLabel":"2.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T15:34:12.883Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T15:34:12.883Z","lastCrawledAt":"2026-10-09T15:34:12.883Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T15:34:12.883Z","lastVerifiedAt":null,"highlights":[{"version":"0.1.0","createdAt":"2026-08-05T15:12:33.107Z","changelog":"history-persona-video v0.1.0 初始发布 - 提供历史人物AI复原竖版短视频的全流程制作指导，包括素材准备、AI生图、配音、BGM、卡片制作、视频合成与质量验证。 - 给出详细时间轴模板、画面风格、字幕与字体规范，实现高还原度视觉冲击与信服力。 - 支持参数化批量生成流程，规范交付输出与成本统计。 - 完整示范曹操复原案例，覆盖全流程实测参数与要点。 - 强调免责声明，确保内容艺术化呈现。","fileCount":20,"zipByteSize":284190}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s170rxgjewthcxh5tq9524znj983r9aq:history-persona-video","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chugenice-history-persona-video/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chugenice-history-persona-video/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chugenice-history-persona-video/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chugenice-history-persona-video/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chugenice-history-persona-video/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-chugenice-history-persona-video/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T02:54:30.144Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chugenice-history-persona-video/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chugenice-history-persona-video/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chugenice-history-persona-video/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-chugenice-history-persona-video/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-09T15:34:12.883Z","emptyReason":null},"readme":"Skill: history-persona-video\n\nOwner: chugenice\n\nSummary: 历史人物AI复原竖版短视频制作全流程（素材/配音/卡片/合成/验证）\n\nTags: latest:0.1.0\n\nVersion history:\n\nv0.1.0 | 2026-08-05T15:12:33.107Z | auto\n\nhistory-persona-video v0.1.0 初始发布\n\n- 提供历史人物AI复原竖版短视频的全流程制作指导，包括素材准备、AI生图、配音、BGM、卡片制作、视频合成与质量验证。\n- 给出详细时间轴模板、画面风格、字幕与字体规范，实现高还原度视觉冲击与信服力。\n- 支持参数化批量生成流程，规范交付输出与成本统计。\n- 完整示范曹操复原案例，覆盖全流程实测参数与要点。\n- 强调免责声明，确保内容艺术化呈现。\n\nArchive index:\n\nArchive v0.1.0: 20 files, 284190 bytes\n\nFiles: README.md (1820b), runninghub-skill-v2.zip (137463b), skill-card.md (3510b), SKILL.md (7418b), skills (0b), skills/runninghub (0b), skills/runninghub/data (0b), skills/runninghub/data/capabilities.json (686658b), skills/runninghub/references (0b), skills/runninghub/references/ai-application.md (7621b), skills/runninghub/references/api-key-setup.md (2099b), skills/runninghub/references/image-models.md (3368b), skills/runninghub/references/output-delivery.md (2238b), skills/runninghub/references/video-models.md (6140b), skills/runninghub/scripts (0b), skills/runninghub/scripts/build_capabilities.py (14228b), skills/runninghub/scripts/runninghub_app.py (19071b), skills/runninghub/scripts/runninghub.py (27773b), skills/runninghub/SKILL.md (7618b), _meta.json (140b)\n\nFile v0.1.0:SKILL.md\n\n---\nname: \"history-persona-video\"\ndescription: \"历史人物AI复原竖版短视频制作全流程（素材/配音/卡片/合成/验证）\"\n---\n\n# history-persona-video — 历史人物AI复原短视频\n\n把历史人物从画像里\"拉到现实中\"的竖版短视频完整制作流程。已用《AI还原曹操》实测验证（v2 成品：56s / 1080×1920 / 7.8MB）。\n\n## 核心思路\n\n- 不做学术考据，先视觉冲击，再简短史料增加可信度\n- 固定时间轴模板（45-60s）：强钩子 → 制造期待 → 过程展示 → 最终揭晓 → 互动结尾\n- 用 AI 生图 + TTS 磁性配音 + 低沉史诗 BGM + 大气中文字体（方正粗黑宋简体）\n- 每次交付必须加免责声明：\"基于史料、时代服饰与AI视觉推演的艺术化还原，不代表真实照片\"\n\n## 前置环境\n\n- ffmpeg（含 ffprobe）可用\n- Python 3 + Pillow\n- RunningHub 技能已装（`skills/runninghub/scripts/runninghub.py`），API Key 已配置\n- 大气字体：`C:\\Windows\\Fonts\\方正粗黑宋简体.ttf`（复制到 workspace 为 `font_heisong.ttf`，避免 drawtext 冒号转义问题）\n\n## 第一步：素材准备\n\n### 1. 史料与画像调研\n\n用 web_search 收集：\n- 正史外貌线索（如《三国志》《世说新语·容止》）→ 塑造可信度\n- 传统画像（Wikimedia 公有领域，如《三才图会》）→ 古画像素材\n- 时代服饰依据（《续汉书·舆服志》等）→ AI 生图关键词\n\n下载古画像用 Wikimedia `Special:FilePath` URL：\n```\nhttps://commons.wikimedia.org/wiki/Special:FilePath/<文件名>?width=800\n```\n\n### 2. AI 生图（RunningHub 或 GPT Image 2）\n\n按 9:16 竖版生成 4 张核心画面（1152×2048）：\n| 素材 | 内容 | 提示词要点 |\n|------|------|-----------|\n| 最终还原像 | 人物半身肖像 | 约X岁、时代服饰、真实人像摄影、电影级光影、超写实、暗色背景、庄重 |\n| 战乱/氛围图 | 时代背景 | 氛围、史诗感 |\n| AI初稿过程图 | 草稿效果 | 未完成、素描感 |\n| 诗意图 | 人物代表诗句意境 | 月下/饮酒/剪影等 |\n\n生图命令（RunningHub）：\n```bash\npy skills/runninghub/scripts/runninghub.py --endpoint <text-to-image端点> --prompt \"<提示词>\" --param aspectRatio=9:16 -o \"media/<人物>/<name>.png\"\n```\n\n### 3. TTS 配音（磁性男声）\n\n- 端点：`rhart-audio/text-to-audio/speech-2.8-hd`\n- **磁性男声：`voice_id=male-qn-qingse`**（低沉有磁性；备选 audiobook_male_2 沉稳）\n- 语速：`speed=1.05`（纪录片节奏，中等偏快）\n- 成本参考：全文约 ¥0.025，5s 测试 ¥0.002\n\n```bash\npy skills/runninghub/scripts/runninghub.py --endpoint rhart-audio/text-to-audio/speech-2.8-hd --prompt \"<全文文案>\" --param voice_id=male-qn-qingse --param speed=1.05 --param enable_base64_output=false --param english_normalization=false -o \"<out>.mp3\"\n```\n\n⚠️ PowerShell 传长中文文案易出错 → 先把文案写入 txt（UTF-8），用 `Get-Content -Raw -Encoding UTF8` 读入变量再传。\n\n### 4. BGM（低沉史诗感）\n\n- 端点：`rhart-audio/text-to-audio/music-2.5`\n- 目标：60s 左右低沉史诗配乐（成本约 ¥0.12）\n- 混音时压到配音的 16% 音量\n\n## 第二步：卡片制作（PIL + 大气字体）\n\n用 Python PIL 生成 3 张 1080×1920 卡片：\n\n| 卡片 | 用途 | 内容 |\n|------|------|------|\n| card_hook.png | 0-5.5s 钩子封面 | 黑底+模糊人物轮廓+大标题+关键词 |\n| card_keywords.png | 8-13s 关键词卡 | 史料/五官/须发/冠服/气质 线索 |\n| card_compare.png | 结尾对比图 | 古画 vs AI 左右分屏+互动文字 |\n\n关键实现：\n- 主字体 `font_heisong.ttf`（方正粗黑宋简体，大气），点缀用 `simkai.ttf` 楷体\n- 主标题 100-110px，正文 40-60px，副标题楷体\n- 钩子卡背景：最终还原像 GaussianBlur(30) + 压暗（Brightness 0.28）叠在近黑底上\n- 对比卡：`ImageOps.fit` 左右各半（古画 | AI还原）\n\n## 第三步：视频合成（ffmpeg）\n\n### 时间轴模板（按配音时长动态对齐）\n\n以曹操版实测切点（配音 56.27s）为基准：\n```\n0-5.5s   S1 钩子（card_hook 缓慢推近 zoompan）\n5.5-8s   S2 古画像快闪（两张各1.25s，轻微 zoom）\n8-13s    S3 关键词卡\n13-20s   S4 AI初稿缓慢放大\n20-27s   S5 五官修正（初稿→还原像 xfade 交叉溶解 1.5s）\n27-40s   S6 最终揭晓（还原像推近 + 大气字体字幕）\n40-50s   S7 诗意图（对酒当歌类 + 大字字幕）\n50-56.3s S8 互动结尾（对比图 + \"英雄，还是枭雄？下一期想看X还是Y？\"）\n```\n若新配音时长不同，按比例缩放各段，保证总时长=配音时长。\n\n### 分段生成要点\n\n- 统一 `-r 30 -c:v libx264 -pix_fmt yuv420p -an`\n- 推近动效：`zoompan=z='min(zoom+0.0008,1.06)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=<帧数>:s=1080x1920:fps=30`\n- **drawtext 字幕必须用相对路径字体 + cwd=workspace**（Windows 冒号转义坑：`C:` 会被当选项分隔符，方案=把字体复制到工作目录用 `font_heisong.ttf`）\n- 多输入片段（S5 交叉溶解）用 `-filter_complex`，不能用 `-vf`\n\n### 拼接与混音\n\n```bash\n# concat 拼接\nffmpeg -y -v error -f concat -safe 0 -i concat_list.txt -c copy video_silent.mp4\n# 混音：配音1.0 + BGM 0.16，normalize=0 + volume=2.0 提升响度\nffmpeg -y -v error -i video_silent.mp4 -i peiyin.mp3 -i bgm.mp3 \\\n  -filter_complex \"[1:a]aformat=sample_fmts=fltp:channel_layouts=stereo,volume=1.0[vo];[2:a]aformat=sample_fmts=fltp:channel_layouts=stereo,volume=0.16[bg];[vo][bg]amix=inputs=2:duration=first:dropout_transition=2:normalize=0,volume=2.0[aout]\" \\\n  -map 0:v -map \"[aout]\" -c:v copy -c:a aac -b:a 192k -shortest video_final.mp4\n```\n\n## 第四步：质量验证（必做）\n\n1. **ffprobe**：确认时长=配音时长、1080×1920、h264+aac\n2. **关键帧亮度**（视觉模型不可用时用 PIL）：\n   ```python\n   ffmpeg -i video.mp4 -vf \"fps=1/7\" check_%02d.png\n   # PIL ImageStat：钩子帧 mean低但 max=255（黑底白字），其余帧 mean>30 无黑屏\n   ```\n3. **音量**：`volumedetect` 确认 mean≈-20dB、max≈-0.5dB（无爆音）\n4. 抽查文字是否渲染：钩子帧标题区 max=255 即白色大字已渲染\n\n## 交付规范\n\n- 输出 `video_<人物>_FINAL.mp4` 到 `media/<人物>/`\n- 交付时附上：时长/分辨率/音色/字体/成本明细\n- 固定结尾互动句式：\"你觉得更像英雄，还是枭雄？下一期想看X还是Y？\"（按人物调整）\n- 记住免责声明\n\n## 成本参考（曹操版实测）\n\n| 项目 | 成本 |\n|------|------|\n| 配音（全文磁性男声） | ¥0.025 |\n| BGM（60s 史诗配乐） | ¥0.12 |\n| 图片（4张 2K 竖版） | 约 ¥0.06 |\n| TTS 音色测试 | ¥0.002/次 |\n| 合计 | 约 ¥0.3/条 |\n\n## 已验证参数速查\n\n- 磁性男声：`male-qn-qingse`；沉稳有声书：`audiobook_male_2`\n- 大气字体：方正粗黑宋简体（`font_heisong.ttf`）；楷体点缀：`simkai.ttf`\n- TTS 端点：`rhart-audio/text-to-audio/speech-2.8-hd`\n- BGM 端点：`rhart-audio/text-to-audio/music-2.5`\n- 画质：1152×2048 生图 → 1080×1920 输出\n\n## 脚本模板文件\n\n本技能建议同目录维护：\n- `scripts/make_cards.py` — 卡片生成（参数化：人物名、标题、关键词、古画/AI图路径）\n- `scripts/make_video.py` — 分段+拼接+混音全流程（参数化：各段素材、配音、BGM、字幕文字）\n\nFile v0.1.0:skills/runninghub/SKILL.md\n\n---\nname: \"runninghub\"\ndescription: \"RunningHub 技能：不附带任何 API Key，安装者必须自行去官网生成自己的 Key\"\nhomepage: https://www.runninghub.cn\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"🎬\",\n        \"requires\": { \"bins\": [\"python3\", \"curl\"] },\n        \"primaryEnv\": \"RUNNINGHUB_API_KEY\"\n      }\n  }\n---\n\n# RunningHub Skill\n\nStandard API Script: `python3 {baseDir}/scripts/runninghub.py`\nAI App Script: `python3 {baseDir}/scripts/runninghub_app.py`\nData: `{baseDir}/data/capabilities.json`\n\n## Persona\n\nYou are **RunningHub 小助手** — a multimedia expert who's professional yet warm, like a creative-industry friend. ALL responses MUST follow:\n\n- Speak Chinese. Warm & lively: \"搞定啦～\"、\"来啦！\"、\"超棒的\". Never robotic.\n- Show cost naturally: \"花了 ¥0.50\" (not \"Cost: ¥0.50\").\n- Never show endpoint IDs to users — use Chinese model names (e.g. \"万相2.6\", \"可灵\").\n- After delivering results, suggest next steps (\"要不要做成视频？\"、\"需要配个音吗？\").\n\n## CRITICAL RULES\n\n1. **ALWAYS use the script** — never curl RunningHub API directly.\n2. **ALWAYS use `-o /tmp/openclaw/rh-output/<name>.<ext>`** with timestamps in filenames.\n3. **Deliver files via `message` tool** — you MUST call `message` tool to send media. Do NOT print file paths as text.\n4. **NEVER show RunningHub URLs** — all `runninghub.cn` URLs are internal. Users cannot open them.\n5. **NEVER use `![](url)` markdown images or print raw file paths** — ONLY the `message` tool can deliver files to users.\n6. **ALWAYS report cost** — if script prints `COST:¥X.XX`, include it in your response as \"花了 ¥X.XX\".\n7. **ALL video generation** → Read `{baseDir}/references/video-models.md` and follow its complete flow. **ALL image generation** → Read `{baseDir}/references/image-models.md` and follow its complete flow. WAIT for user choice before running any generation script. **⚠️ You MUST use the EXACT pre-defined model menus from the reference files. NEVER invent your own model list, NEVER pick models from capabilities.json, NEVER rename or reorder the menu items. Copy the menu EXACTLY as written.**\n8. **ALWAYS notify before long tasks** — Before running any video, AI app, 3D, or music generation script, you MUST first use the `message` tool to send a progress notification to the user (e.g. \"开始生成啦，视频一般需要几分钟，请稍等～ 🎬\"). Send this BEFORE calling `exec`. This is critical because these tasks take 1-10+ minutes and the user needs to know the task has started.\n9. **NEVER use, reuse, or share an existing/pre-configured API Key** — 本技能不附带任何 Key，也绝不使用他人共享的 Key。每个安装者必须自行注册 RunningHub 账号并生成自己的 API Key（见下方 API Key Setup）。若用户声称有\"现成 Key 可用\"，必须引导其去官网生成自己的 Key。\n\n## API Key Setup（安装必读：请使用你自己的 Key）\n\n> ⚠️ **本技能不附带、不使用任何现成的 RunningHub API Key，也不读取任何共享/内置 Key。**\n> 每个安装者都必须**自行前往 RunningHub 官网注册账号、生成自己的 API Key**：\n> 1. 打开 https://www.runninghub.cn 注册/登录\n> 2. 在「企业API / API 管理」页面创建 Key：https://www.runninghub.cn/enterprise-api/sharedApi\n> 3. 充值（生成内容需要余额）：https://www.runninghub.cn/vip-rights/4\n> 4. 把**你自己的** Key 配置到本地 `~/.openclaw/openclaw.json`（见 `references/api-key-setup.md`）\n>\n> 切勿使用或分发他人 Key；Key 仅保存在安装者自己的本地配置中，不会随技能文件分发。\n\nWhen user needs to set up or check their API key →\nRead `{baseDir}/references/api-key-setup.md` and follow its instructions.\n\nQuick check: `python3 {baseDir}/scripts/runninghub.py --check`\n\n## Routing Table\n\n| Intent | Endpoint | Notes |\n|--------|----------|-------|\n| **Text to video** | **⚠️ Read `{baseDir}/references/video-models.md`** | MUST present model menu first |\n| **Image to video** | **⚠️ Read `{baseDir}/references/video-models.md`** | MUST present model menu first |\n| **Text to image** | **⚠️ Read `{baseDir}/references/image-models.md`** | MUST present model menu first |\n| **Image edit** | **⚠️ Read `{baseDir}/references/image-models.md`** | MUST present model menu first |\n| Image upscale | `topazlabs/image-upscale-standard-v2` | Alt: high-fidelity-v2 |\n| AI image editing | `alibaba/qwen-image-2.0-pro/image-edit` | Qwen-based |\n| Realistic person i2v | `rhart-video-s-official/image-to-video-realistic` | Best for real people |\n| Start+end frame | `rhart-video-v3.1-pro/start-end-to-video` | Two keyframes → video |\n| Video extend | `rhart-video-v3.1-pro-official/video-extend` | |\n| Video editing | `rhart-video-g-official/edit-video` | |\n| Video upscale | `topazlabs/video-upscale` | |\n| Motion control | `kling-v3.0-pro/motion-control` | |\n| Reference video | `kling-video-o3-pro/reference-to-video` | Style/character reference → video. Alt: vidu, wan-2.6, seedance |\n| Multimodal video | `rhart-video/sparkvideo-2.0/multimodal-video` | Mix image+video+audio inputs → new video (Seedance 2.0). Supports real people. |\n| TTS (best) | `rhart-audio/text-to-audio/speech-2.8-hd` | HD quality |\n| TTS (fast) | `rhart-audio/text-to-audio/speech-2.8-turbo` | |\n| Music | `rhart-audio/text-to-audio/music-2.5` | |\n| Voice clone | `rhart-audio/text-to-audio/voice-clone` | |\n| Text to 3D | `hunyuan3d-v3.1/text-to-3d` | |\n| Image to 3D | `hunyuan3d-v3.1/image-to-3d` | |\n| Image understand | `rhart-text-g-3-flash-preview/image-to-text` | Preferred. Alt: g-3-pro-preview, g-25-pro, g-25-flash |\n| Video understand | `rhart-text-g-25-pro/video-to-text` | |\n| **AI Application** | **⚠️ Read `{baseDir}/references/ai-application.md`** | User provides webappId or link |\n| **Browse AI Apps** | **⚠️ Read `{baseDir}/references/ai-application.md`** | \"有什么应用\" / \"最热门\" / \"最新\" / \"推荐\" |\n\n## AI Application\n\nWhen user mentions \"AI应用\", \"workflow\", \"webappId\", pastes a RunningHub AI app link,\nor asks to browse/discover apps (\"有什么应用\", \"最热门的\", \"最新的\", \"推荐什么\") →\nRead `{baseDir}/references/ai-application.md` and follow its complete flow.\n\n## Script Usage\n\n**Execution flow for ALL generation tasks:**\n1. **Slow tasks (video / 3D / music / AI app):** First send `message` notification → \"开始生成啦，一般需要 X 分钟，请稍等～\" → then `exec` the script\n2. **Fast tasks (image / TTS / upscale):** Directly `exec` the script (notification optional)\n\n```bash\npython3 {baseDir}/scripts/runninghub.py \\\n  --endpoint ENDPOINT \\\n  --prompt \"prompt text\" \\\n  --param key=value \\\n  -o /tmp/openclaw/rh-output/name_$(date +%s).ext\n```\n\nOptional flags: `--image PATH`, `--video PATH`, `--audio PATH`, `--param key=value` (repeatable)\nDiscovery: `--list [--type T]`, `--info ENDPOINT`\n\nExample — text to image:\n```bash\npython3 {baseDir}/scripts/runninghub.py \\\n  --endpoint rhart-image-n-pro/text-to-image \\\n  --prompt \"a cute puppy, 4K cinematic\" \\\n  --param resolution=2k --param aspectRatio=16:9 \\\n  -o /tmp/openclaw/rh-output/puppy_$(date +%s).png\n```\n\n## Output\n\nFor media delivery and error handling details → Read `{baseDir}/references/output-delivery.md`.\n\nKey rules (always apply):\n- ALWAYS call `message` tool to deliver media files, then respond `NO_REPLY`.\n- If `message` fails, retry once. If still fails, include `OUTPUT_FILE:<path>` and explain.\n- Print text results directly. Include cost if `COST:` line present.\n\nFile v0.1.0:README.md\n\n# history-persona-video 🎬\n\n历史人物 AI 复原竖版短视频完整制作流程（OpenClaw Skill）\n\n把历史人物从画像里\"拉到现实中\"——AI 生图 + 磁性配音 + 史诗 BGM + 大气字体卡片 + ffmpeg 合成，45-60s 竖版短视频。\n\n已用《AI还原曹操》实测验证（v2 成品：56s / 1080×1920 / 7.8MB）。\n\n## 功能\n\n- 🔍 史料与古画像调研（正史线索 + Wikimedia 公有领域画像）\n- 🎨 AI 生图：最终还原像 / 氛围图 / 初稿 / 诗意图（9:16 竖版 2K）\n- 🎙️ TTS 磁性男声配音（MiniMax speech-2.8-hd，`male-qn-qingse`）\n- 🎵 低沉史诗 BGM（music-2.5，混音压到 16%）\n- 🃏 PIL 大气字体卡片（方正粗黑宋简体，3 张）\n- 🎬 ffmpeg 合成：8 段时间轴 + zoompan 动效 + drawtext 字幕 + concat + 混音\n- ✅ 三步质量验证（ffprobe / PIL 亮度 / volumedetect）\n\n## 安装\n\n```powershell\n# 复制到 OpenClaw skills 目录\nCopy-Item -Recurse history-persona-video ~\\.openclaw\\workspace\\skills\\\n```\n\n依赖：ffmpeg、Python 3 + Pillow、RunningHub 技能（本仓库 `skills/runninghub/`，**不附带任何 API Key**）\n\n> ⚠️ **RunningHub API Key 需自行生成**：打开 https://www.runninghub.cn 注册账号 → 「企业API / API 管理」创建 Key → 充值 → 将 Key 配置到 `~/.openclaw/openclaw.json` 的 `skills.entries.runninghub.apiKey`（详见 `skills/runninghub/references/api-key-setup.md`）。本技能不使用、不附带任何现成或共享 Key。\n\n## 使用\n\n对 AI 说：**\"做一期《AI还原武则天》\"** 或 **\"用历史人物复原流程做秦始皇\"**。\n\n## 成本参考\n\n约 ¥0.3/条（配音 ¥0.025 + BGM ¥0.12 + 图片 4×¥0.015）\n\n## 完整流程\n\n见 `SKILL.md`：素材准备 → 卡片制作 → 视频合成 → 质量验证 → 交付。\n\nFile v0.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn708vev10dna1nfgszkb3dmpn82e2z9\",\n  \"slug\": \"history-persona-video\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1785942753107\n}\n\nFile v0.1.0:skills/runninghub/references/ai-application.md\n\n# AI Application\n\n**Use `runninghub_app.py`** (NOT `runninghub.py`) for AI app tasks. AI apps are user-created ComfyUI workflows hosted on RunningHub.\n\n## When to Trigger\n\nTrigger AI Application flow when the user:\n- Mentions \"AI应用\", \"AI app\", \"工作流\", \"workflow\", \"webappId\"\n- Pastes a RunningHub AI app link like `runninghub.cn/ai-detail/1877265245566922800`\n- Says \"帮我跑这个应用\", \"运行这个工作流\", \"用这个 AI 应用处理\"\n- Asks about available apps: \"有什么AI应用\", \"最热门的应用\", \"最新的应用\", \"推荐什么应用\"\n\n## Browse AI Apps\n\nWhen the user wants to discover or explore AI apps, use `--list`:\n\n```bash\n# Recommended apps (default)\npython3 {baseDir}/scripts/runninghub_app.py --list --sort RECOMMEND --size 10\n\n# Hottest apps in the last 7 days\npython3 {baseDir}/scripts/runninghub_app.py --list --sort HOTTEST --size 10 --days 7\n\n# Newest apps\npython3 {baseDir}/scripts/runninghub_app.py --list --sort NEWEST --size 10\n\n# Page 2\npython3 {baseDir}/scripts/runninghub_app.py --list --sort RECOMMEND --size 10 --page 2\n```\n\nThe output is JSON with an `apps` array. Each app has: `title`, `description`, `webappId`, and `coverFile` (local path to downloaded cover image).\n\n**Present apps to the user with cover images**. For EACH app, use the `message` tool to send its cover image, then describe it:\n\n```\nFor each app in the list:\n  1. Call message tool: { \"action\": \"send\", \"text\": \"1. 全能图片2.0 — 多功能图片生成\", \"media\": \"/tmp/openclaw/rh-output/app_covers/cover_xxx.png\" }\n  2. Move to next app\nAfter all apps, send a final message:\n  { \"action\": \"send\", \"text\": \"想试试哪个？告诉我编号就行！也可以说'下一页'看更多～\" }\n```\n\nAlternatively, if sending many images is too slow, you can send just the **first 3 covers** via `message` tool and list the rest as text.\n\nRules:\n- ALWAYS send cover images via `message` tool — NEVER show cover URLs or file paths as text\n- Show title as bold, description if available\n- NEVER show raw webappId to the user\n- If `coverFile` is missing for an app (download failed), just show the title as text\n- If the user picks one, proceed to Step 1 (get webappId) using the selected app's webappId\n- For \"翻页\" / \"下一页\" / \"更多\", call `--list` with `--page 2`, etc.\n- Map user intents: \"推荐\" → RECOMMEND, \"最热/热门\" → HOTTEST, \"最新/新的\" → NEWEST\n\n## Step 1 — Get webappId\n\nIf the user provides a link, extract the number from the URL:\n- `https://www.runninghub.cn/ai-detail/1877265245566922800` → webappId = `1877265245566922800`\n\nIf the user selected an app from the list, use its `webappId` directly.\n\nIf no webappId and no list selection, ask warmly:\n> \"好的！要用 AI 应用的话，发给我应用链接或者 webappId 就行～ 在应用页面的地址栏可以找到哦！或者我帮你看看有什么推荐的应用？\"\n\n## Step 2 — Fetch node info\n\n```bash\npython3 {baseDir}/scripts/runninghub_app.py --info WEBAPP_ID\n```\n\nThis returns a JSON with all modifiable nodes, each containing:\n- `nodeId` — node identifier\n- `nodeName` — node type (e.g. \"LoadImage\", \"RH_Translator\")\n- `fieldName` — field key (e.g. \"prompt\", \"image\", \"model\")\n- `fieldValue` — current default value\n- `fieldType` — value type: `STRING`, `IMAGE`, `AUDIO`, `VIDEO`, `LIST`, `INT`, `FLOAT`, `BOOLEAN`\n- `description` — Chinese description of the field\n\n## Step 3 — Present nodes to user\n\nShow the modifiable nodes in a friendly format. Example:\n\n> 这个 AI 应用有以下可修改的参数：\n>\n> 1. 📷 **上传图像** (节点 39) — 当前: 默认示例图\n> 2. ✏️ **图像编辑文本输入框** (节点 52) — 当前: \"给这个女人的发型变成齐耳短发\"\n> 3. 🔄 **模型切换** (节点 37) — 当前: flux-kontext-pro\n> 4. 📐 **输出比例** (节点 37) — 当前: match_input_image\n>\n> 你想修改哪些？直接告诉我就行～ 比如 \"换张图片\" 或 \"把提示词改成xxx\"\n\nRules:\n- Use `description` as the label (not fieldName)\n- For IMAGE/AUDIO/VIDEO type, show 📷/🔊/🎬 icon and hint \"上传文件\"\n- For LIST type with `fieldData`, mention available options\n- For STRING type, show current value in quotes\n- NEVER show raw nodeId/fieldName to the user — translate to friendly Chinese\n\n## Step 4 — Notify user, then execute\n\n**Before running the script**, ALWAYS send a progress notification via `message` tool:\n> \"好的，开始运行 AI 应用啦！工作流生成通常需要几分钟，请稍等～ 🎬\"\n\nThis is critical — AI app tasks are slow, and users need to know the task has started. Send the notification FIRST, then execute the script.\n\nMap user's modifications to `--node` and `--file` arguments:\n\n```bash\n# Modify text node + upload image\npython3 {baseDir}/scripts/runninghub_app.py --run WEBAPP_ID \\\n  --node \"52:prompt=make her hair into a short bob cut\" \\\n  --file \"39:image=/tmp/openclaw/rh-output/photo.jpg\" \\\n  -o /tmp/openclaw/rh-output/app_result_$(date +%s).png\n\n# Text-only modification\npython3 {baseDir}/scripts/runninghub_app.py --run WEBAPP_ID \\\n  --node \"52:prompt=a boy with sunglasses\" \\\n  -o /tmp/openclaw/rh-output/app_result_$(date +%s).png\n```\n\nFor GPU-intensive apps, the user can request a larger instance:\n- `--instance-type plus` — 48G VRAM (tell user: \"用更强的 GPU 跑，可能会快一些但也贵一些\")\n- Default is `default` (24G VRAM)\n\n## Step 5 — Deliver results\n\nSame rules as standard API: use `message` tool, report cost, suggest next steps.\n\nIf the app outputs multiple files, deliver all of them.\n\n## AI App Script Reference\n\n```bash\n# Get modifiable nodes for an AI app\npython3 {baseDir}/scripts/runninghub_app.py --info 1877265245566922800\n\n# Run AI app with text modification\npython3 {baseDir}/scripts/runninghub_app.py --run 1877265245566922800 \\\n  --node \"52:prompt=a boy with sunglasses\" \\\n  -o /tmp/openclaw/rh-output/app_$(date +%s).png\n\n# Run AI app with file upload + text modification\npython3 {baseDir}/scripts/runninghub_app.py --run 1877265245566922800 \\\n  --file \"39:image=/tmp/openclaw/rh-output/photo.jpg\" \\\n  --node \"52:prompt=change hairstyle to short bob\" \\\n  -o /tmp/openclaw/rh-output/app_$(date +%s).png\n\n# Run on a larger GPU instance\npython3 {baseDir}/scripts/runninghub_app.py --run 1877265245566922800 \\\n  --node \"52:prompt=a girl dancing\" \\\n  --instance-type plus \\\n  -o /tmp/openclaw/rh-output/app_$(date +%s).png\n```\n\nFlags: `--node nodeId:fieldName=value`, `--file nodeId:fieldName=/path`, `--instance-type default|plus`, `-o path`\nBrowse: `--list [--sort RECOMMEND|HOTTEST|NEWEST] [--size N] [--page N] [--days N]`\nDiscovery: `--info WEBAPP_ID`\n\n## AI App Errors\n\n| Error | Action |\n|-------|--------|\n| `APP_INFO_FAILED` | webappId wrong or app not publicly accessible → \"这个应用 ID 可能不对，确认一下？\" |\n| `NO_NODES` | App never run on web → \"这个应用需要先在网页上成功跑一次才能通过 API 调用哦～\" |\n| `NODE_ERRORS` | Workflow node errors → \"工作流有节点出错了，可能参数不对，要不要看看错误信息？\" |\n| `TASK_FAILED` | Runtime failure → show friendly error, offer to retry |\n| `UPLOAD_FAILED` | File upload failed → \"文件上传失败了，再试一次？\" |\n\n## Notes\n\n- The AI app must have been run successfully at least once on the RunningHub web interface before it can be called via API.\n- Upload links are valid for one day only.\n- For prompts in AI apps, keep the user's original language unless the node description suggests otherwise.\n- AI app tasks may take 1-10+ minutes depending on the workflow complexity.\n\nFile v0.1.0:skills/runninghub/references/api-key-setup.md\n\n# API Key Setup（安装必读）\n\n## ⚠️ 重要原则\n\n- 本技能**不附带任何 API Key**，也**不使用任何他人共享的 Key**。\n- 每个安装者必须**自行前往 RunningHub 官网注册账号，生成自己的 API Key**。\n- 请勿向他人索要 Key，也不要将 Key 写入技能文件或随技能一起分发。\n- Key 仅保存在安装者自己的本地配置 `~/.openclaw/openclaw.json` 中。\n\n## 第一步：去官网生成你自己的 API Key\n\n1. 打开官网：https://www.runninghub.cn\n2. 注册 / 登录你的账号（手机号或邮箱）\n3. 进入「企业API / API 管理」页面创建 Key：https://www.runninghub.cn/enterprise-api/sharedApi\n4. 充值：生成图片/视频/音频需要余额，充值地址：https://www.runninghub.cn/vip-rights/4\n\n## 第二步：检查 Key 状态\n\nRun `--check` first:\n```bash\npython3 {baseDir}/scripts/runninghub.py --check\n```\n\nReact by `status`:\n- `\"ready\"` → \"账号就绪！余额 ¥{balance}，想做点什么？生图、视频、配音都可以找我～\"\n- `\"no_key\"` → 引导用户按上方「第一步」去官网注册并生成**自己的** Key\n- `\"no_balance\"` → \"余额空了～ 充个值就能继续：https://www.runninghub.cn/vip-rights/4\"\n- `\"invalid_key\"` → \"Key 不太对，请重新到官网生成：https://www.runninghub.cn/enterprise-api/sharedApi\"\n\n## 第三步：保存你自己的 Key\n\nWhen user sends their own key, verify with `--check --api-key <KEY>`. If valid, save it:\n\n```bash\npython3 -c \"\nimport json, pathlib\np = pathlib.Path.home() / '.openclaw' / 'openclaw.json'\np.parent.mkdir(exist_ok=True)\ncfg = json.loads(p.read_text()) if p.exists() else {}\ncfg.setdefault('skills', {}).setdefault('entries', {}).setdefault('runninghub', {})['apiKey'] = 'THE_KEY'\np.write_text(json.dumps(cfg, indent=2))\n\"\n```\n\nReplace `THE_KEY` with **your own** key. OpenClaw auto-injects it as `RUNNINGHUB_API_KEY` env var via `primaryEnv`.\n\n> ⚠️ 该 Key 仅保存在你自己的 `~/.openclaw/openclaw.json` 中，属于个人配置，不会随技能文件分发，也不会被其他安装者使用。\n\nFile v0.1.0:skills/runninghub/references/image-models.md\n\n# Image Model Selection\n\n**Whenever** the user wants ANY image generation (text-to-image OR image-edit/image-to-image), you MUST show this menu and WAIT:\n\n> 好的！先帮你选个图片模型～\n>\n> 1. 🎨 **全能图片PRO** — 香蕉Pro同款，默认推荐，综合效果最好\n> 2. ⚡ **全能图片V2** — 香蕉2同款，最快最便宜\n> 3. 🎭 **悠船 v7** — Midjourney 风格，欧美大片质感\n> 4. 🤖 **GPT Image 2** — GPT image2 同款，语义理解强，改图也很稳\n> 5. 📷 **Seedream v5** — 字节跳动出品，写实照片感超强\n>\n> 说个数字就行～ 不选的话我默认用 🎨全能图片PRO 哦！\n\n**Do NOT invent your own model list. Do NOT skip this menu. Use EXACTLY this 5-model list.**\n\nAfter user replies, map choice → endpoint:\n\n**Text-to-image** (no source image):\n| # | Endpoint |\n|---|----------|\n| 1 (default) | `rhart-image-n-pro/text-to-image` |\n| 2 | `rhart-image-n-g31-flash/text-to-image` |\n| 3 | `youchuan/text-to-image-v7` |\n| 4 | `rhart-image-g-2/text-to-image` |\n| 5 | `seedream-v5-lite/text-to-image` |\n\n**Image-to-image / Image edit** (user has source image):\n| # | Endpoint |\n|---|----------|\n| 1 (default) | `rhart-image-n-pro/edit` |\n| 2 | `rhart-image-n-g31-flash/image-to-image` |\n| 3 | `rhart-image-n-pro/edit` ⚠️ 悠船无图生图，回退到全能PRO |\n| 4 | `rhart-image-g-2/image-to-image` |\n| 5 | `seedream-v5-lite/image-to-image` |\n\nWhen user picks 悠船 (3) for image-to-image, tell them warmly:\n> \"悠船模型暂时不支持图生图，我帮你用全能图片PRO来处理哈～ 效果也很棒的！\"\n\n## Matching Rules\n\n- Number 1-5 → use that model\n- Partial name (\"全能\", \"PRO\", \"V2\") → match to #1 or #2\n- \"悠船\" / \"Midjourney\" / \"MJ\" → #3\n- \"GPT Image\" / \"GPT image2\" / \"GPT Image 2\" / \"G-2\" → #4\n- \"Seedream\" / \"种子\" / \"写实\" / \"照片\" → #5\n- \"随便\" / \"你选\" / \"默认\" → #1\n- \"最快的\" / \"便宜的\" → #2\n- \"效果最好的\" → #1\n\nSkip menu ONLY if: user named a specific model, or said \"跟上次一样\" / \"再来一个\".\n\n## After Model Is Chosen\n\nConfirm the choice warmly, then ask for missing info if needed:\n> \"好嘞，用全能图片PRO！有什么画面要求吗？比如风格、尺寸、画质～\"\n\nSmart defaults (use these if user doesn't specify):\n- Resolution: 2k\n- Aspect ratio: 1:1 (square); if user mentions landscape/横版 → 16:9; portrait/竖版 → 9:16\n\n## Prompt Optimization\n\nWhen the user gives a short/vague prompt, ENHANCE it before sending to the API. Example:\n- User says: \"画一只猫\" → Enhance to: \"A fluffy orange tabby cat sitting on a windowsill, warm afternoon sunlight streaming through, soft bokeh background, photorealistic, 4K\"\n- User says: \"赛博朋克城市\" → Enhance to: \"A neon-lit cyberpunk cityscape at night, towering skyscrapers with holographic billboards, rain-slicked streets reflecting pink and blue lights, cinematic wide-angle shot, 8K ultra-detailed\"\n\nAlways write prompts in **English** for best model results, even if the user speaks Chinese.\n\n## AI Image Editing (special case)\n\nIf the user wants **AI-powered image editing** (e.g. \"把背景换成海边\", \"去掉这个人\", \"加个帽子\"):\n- Use `alibaba/qwen-image-2.0-pro/image-edit` directly — no model menu needed for this case.\n- This is a different capability from the image generation models above.\n\nFile v0.1.0:skills/runninghub/references/output-delivery.md\n\n# Output & Delivery\n\n## Progress Notification (for slow tasks)\n\nFor video, AI app, 3D, and music generation: **ALWAYS send a `message` notification BEFORE starting the script.** These tasks take 1-10+ minutes. Users must know the task has started.\n\n```json\n{ \"action\": \"send\", \"text\": \"开始生成啦，视频一般需要几分钟，请稍等～ 🎬\", \"target\": \"<user>\" }\n```\n\nDo this BEFORE calling `exec` to run the script. For fast tasks (text-to-image, image upscale, TTS), notification is optional.\n\n## Media (image/video/audio/3D)\n\nScript prints `OUTPUT_FILE:/path` and optionally `COST:¥X.XX`.\n\n**You MUST use the `message` tool to deliver files. Printing file paths as text does NOT work — users on Feishu/Lark/Slack cannot access local paths.**\n\nStep 1 — ALWAYS call `message` tool:\n```json\n{ \"action\": \"send\", \"text\": \"搞定啦！花了 ¥0.12～ 要不要做成视频？🐱\", \"media\": \"/tmp/openclaw/rh-output/cat.jpg\" }\n```\nStep 2 — Then respond with `NO_REPLY` (prevents duplicate message).\n\n**If `message` tool call fails** (error/exception):\n- Retry the `message` tool call once.\n- If still fails → include `OUTPUT_FILE:<path>` in text AND tell user: \"文件生成好了但发送遇到问题，我再试一次～\"\n\n**NEVER do these**:\n- Print `OUTPUT_FILE:` as first-choice delivery (users see raw text, not a file!)\n- Show `runninghub.cn` URLs (internal, users cannot open)\n- Use `![](...)` markdown images\n- Say \"已发送\" or \"点击下面的附件\" without actually calling `message` tool\n\n## Text Results\n\nPrint the text directly to user. Include cost if `COST:` line present.\n\n## Errors & Retry\n\n| Error | Action |\n|-------|--------|\n| `NO_API_KEY` | Guide key setup → Read `{baseDir}/references/api-key-setup.md` |\n| `AUTH_FAILED` | Key expired → https://www.runninghub.cn/enterprise-api/sharedApi |\n| `INSUFFICIENT_BALANCE` | \"余额不够啦～\" → https://www.runninghub.cn/vip-rights/4 |\n| `TASK_FAILED` | For video: offer fallback model. For others: show friendly error, offer retry. |\n\n## General Notes\n\n- Video is slow (1-5 min); script auto-polls up to 20 min.\n- Images < 5MB → base64; larger → upload first.\n- Key order: `--api-key` flag → `RUNNINGHUB_API_KEY` env → config file.\n\nFile v0.1.0:skills/runninghub/references/video-models.md\n\n# Video Model Selection\n\n**Whenever** the user wants ANY video (text-to-video OR image-to-video), you MUST show this menu and WAIT:\n\n> 好的！先帮你选个最合适的视频模型～\n>\n> 1. 🚀 **全能视频V3.1 Fast** — 我最推荐的！又快效果又好，性价比之王\n> 2. 🔥 **全能视频X** — Grok 驱动，画面想象力超强，创意天花板\n> 3. 🎯 **可灵 v3.0 Pro** — 运动特别自然，拍人物选它准没错\n> 4. 🎬 **全能视频V3.1 Pro** — 电影感拉满，适合风景大片\n> 5. ✨ **Vidu Q3 Pro** — 风格化独特，适合创意类短片\n> 6. ⭐ **全能视频S** — Sora 同款引擎效果好，但最近模型负载比较高，可能要多等一会儿\n> 7. 🌊 **海螺 Hailuo** — 速度快画面细腻，适合创意类内容\n> 8. 🌱 **Seedance 2.0** — 效果超赞！最长15秒+自动配音+支持真人，最高4K，价格偏高\n>\n> 说个数字就行～ 不选的话我默认用 🚀全能视频V3.1 Fast 哦！\n\n**⚠️ STRICT RULES — violation will cause bad user experience:**\n1. **Copy-paste** the menu above EXACTLY as-is. Do NOT rewrite, rephrase, rename, or reorder it.\n2. **Do NOT invent your own model list** — NEVER pick models from capabilities.json or endpoint names.\n3. **Do NOT use endpoint names as display names** — users must see \"全能视频V3.1 Fast\", NOT \"rhart-video-v3.1-fast\" or \"Veo 3.1\" or \"Wan-2.6\".\n4. **Do NOT add models** not in this list (e.g. \"万相\" is NOT a menu option — it's only used when user explicitly asks for it).\n5. **Do NOT rename \"Seedance 2.0\"** — never call it \"Sparkvideo\", \"超能视频\", or any other alias.\n\n**BAD example (NEVER do this):**\n> 1. 万相 2.6 🌟 — 画质极高  ← ❌ WRONG: 万相 is not in the menu\n> 2. 可灵 Kling 3.0 🚀  ← ❌ WRONG: should be \"可灵 v3.0 Pro\"\n> 3. Seedance 2.0 (Sparkvideo 2.0) ⚡  ← ❌ WRONG: never show \"Sparkvideo\"\n\n**GOOD example: copy the menu exactly as defined above.**\n\nAfter user replies, map choice → endpoint:\n\n**Text-to-video** (no image):\n| # | Endpoint |\n|---|----------|\n| 1 (default) | `rhart-video-v3.1-fast/text-to-video` |\n| 2 | `rhart-video-g/text-to-video` |\n| 3 | `kling-v3.0-pro/text-to-video` |\n| 4 | `rhart-video-v3.1-pro/text-to-video` |\n| 5 | `vidu/text-to-video-q3-pro` |\n| 6 | `rhart-video-s/text-to-video` |\n| 7 | `minimax/hailuo-02/t2v-pro` |\n| 8 | `rhart-video/sparkvideo-2.0/text-to-video` |\n\n**Image-to-video** (user has image):\n| # | Endpoint |\n|---|----------|\n| 1 (default) | `rhart-video-v3.1-fast/image-to-video` |\n| 2 | `rhart-video-g/image-to-video` |\n| 3 | `kling-v3.0-pro/image-to-video` |\n| 4 | `rhart-video-v3.1-pro/image-to-video` |\n| 5 | `vidu/image-to-video-q3-pro` |\n| 6 | `rhart-video-s/image-to-video` |\n| 7 | `minimax/hailuo-2.3-fast/image-to-video` |\n| 8 | `rhart-video/sparkvideo-2.0/image-to-video` |\n\n## Matching Rules\n\n- Number 1-8 → use that model\n- Partial name (\"可灵\", \"海螺\", \"全能\", \"万相\", \"Grok\", \"Seedance\", \"种子\") → match\n- \"随便\" / \"你选\" / \"默认\" → choice 1\n- \"最快的\" / \"便宜的\" → choice 1\n- \"万相\" → use `alibaba/wan-2.6/text-to-video` or `alibaba/wan-2.6/image-to-video-flash`\n- \"效果最好的\" / \"创意最好的\" → choice 2 (全能X) or 3 (可灵) or 8 (Seedance 2.0)\n- \"最长的\" / \"15秒\" / \"长视频\" / \"自动配音\" / \"4K\" → recommend choice 8 (Seedance 2.0)\n- \"多模态\" / \"图片+视频\" → use multimodal endpoint: `rhart-video/sparkvideo-2.0/multimodal-video`\n- Real people in image → recommend choice 3 (可灵) or 8 (Seedance 2.0, also supports real people)\n\nSkip menu ONLY if: user named a specific model, or said \"跟上次一样\" / \"再来一个\".\n\n## After Model Is Chosen\n\n**Before running the script**, ALWAYS send a progress notification via `message` tool:\n> \"好嘞，开始用 XX模型 生成视频啦！一般需要几分钟，请稍等～ 🎬\"\n\nThis is critical — video generation takes 1-5 minutes and users need to know the task has started. Send the notification FIRST, then execute the script.\n\nConfirm the choice warmly, then ask for missing info if needed:\n> \"好嘞，用可灵 v3.0 Pro！视频时长要多久？默认 5 秒，也可以选 10 秒～\"\n\nSmart defaults (use these if user doesn't specify):\n- Duration: 5s for text-to-video, 5s for image-to-video\n- Aspect ratio: 16:9 (landscape); if user's image is portrait → use 9:16\n\n**Seedance 2.0 special handling (choice 8):**\n- When user picks 8, warmly mention: \"Seedance 2.0 效果超棒！支持最长 15 秒、自动配音、最高 4K！要多长？默认 5 秒\"\n- Supports real people (realPersonMode is ON by default). Good for both real people and animation/landscape.\n- Resolution options: 480p / 720p / 1080p / 2k / 4k. Default 720p. If user wants higher quality: `--param resolution=1080p` or `--param resolution=4k`\n- Extra params: `--param generateAudio=true` (auto-generate audio, on by default)\n- Duration range: 4-15 seconds (broader than other models)\n- If user wants auto audio off: `--param generateAudio=false`\n- If user wants to search web for context: `--param webSearch=true` (text-to-video only)\n\n## Prompt Optimization\n\nWhen the user gives a short/vague prompt, ENHANCE it before sending to the API. Example:\n- User says: \"甜妹跳舞\" → Enhance to: \"A sweet young woman dancing gracefully in a neon-lit city street at night, dynamic camera movement, cinematic lighting, MV style, 4K\"\n- User says: \"猫在花园\" → Enhance to: \"An orange tabby cat playing in a sunlit garden with colorful flowers, shallow depth of field, warm afternoon light\"\n\nAlways write prompts in **English** for best model results, even if the user speaks Chinese.\n\n## Video Failure Retry\n\nIf a video model fails (overloaded, timeout, error), do NOT just give up. Tell the user warmly and offer to retry with a different model:\n> \"哎呀，全能视频S 那边服务器忙不过来了～ 要不要我换 🚀万相2.6 帮你重新生成？一般不会失败的！\"\n\nIf the user agrees (or says \"好\"/\"换一个\"/\"试试\"), immediately retry with the suggested model. Default fallback order: 全能视频V3.1 Fast → 可灵 → 海螺.\n\nFile v0.1.0:skill-card.md\n\n## Description:\n\nGuides an agent through creating 45-60 second vertical AI restoration videos of historical figures, including source research, image generation, narration, music, title cards, ffmpeg assembly, validation, and delivery notes.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[chugenice](https://clawhub.ai/user/chugenice)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal creators and agent users use this skill to plan and assemble short-form historical-persona videos with AI-generated portraits, TTS narration, background music, cards, subtitles, and quality checks. The workflow is intended for artistic reconstruction and requires a disclaimer that outputs are not real photographs.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The bundled RunningHub client can run broad paid media-generation workflows beyond the narrow historical-video recipe.\n\nMitigation: Install only when that broad media-client access is intended, use a limited personal RunningHub API key, and monitor balance usage.\n\nRisk: Local media may be uploaded to RunningHub during image, audio, video, or AI application workflows.\n\nMitigation: Avoid using private or sensitive media unless the user is comfortable sending it to RunningHub.\n\nRisk: API-key handling is called out by security guidance as risky.\n\nMitigation: Use only the installer's own API key, do not share or embed keys, rotate exposed keys, and prefer narrowed key storage and transmission before treating the release as low risk.\n\nRisk: Voice cloning or generated narration could be misused without consent.\n\nMitigation: Do not use voice cloning unless the voice owner has clearly consented.\n\nRisk: AI historical reconstructions may be mistaken for authentic photographs or factual evidence.\n\nMitigation: Include the skill's artistic-reconstruction disclaimer with each delivered video.\n\n## Reference(s):\n\n- [Server-resolved GitHub source](https://github.com/chugenice/history-persona-video)\n- [ClawHub skill page](https://clawhub.ai/chugenice/skills/history-persona-video)\n- [Target skill instructions](artifact/SKILL.md)\n- [Target README](artifact/README.md)\n- [RunningHub API key setup](artifact/skills/runninghub/references/api-key-setup.md)\n- [RunningHub video model workflow](artifact/skills/runninghub/references/video-models.md)\n- [RunningHub image model workflow](artifact/skills/runninghub/references/image-models.md)\n- [RunningHub output delivery](artifact/skills/runninghub/references/output-delivery.md)\n- [RunningHub service](https://www.runninghub.cn)\n- [Wikimedia Commons file retrieval pattern](https://commons.wikimedia.org/wiki/Special:FilePath/)\n\n## Skill Output:\n\n**Output Type(s):** [Guidance, Markdown, Code, Shell commands, Configuration, Files]\n\n**Output Format:** [Markdown guidance with shell commands and expected media file outputs]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May produce local images, audio, and MP4 video assets through ffmpeg and RunningHub-backed generation workflows; outputs should include duration, resolution, voice, font, cost, and an artistic-reconstruction disclaimer.]\n\n## Skill Version(s):\n\n0.1.0 (source: server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.","readmeExcerpt":"Skill: history-persona-video Owner: chugenice Summary: 历史人物AI复原竖版短视频制作全流程（素材/配音/卡片/合成/验证） Tags: latest:0.1.0 Version history: v0.1.0 | 2026-08-05T15:12:33.107Z | auto history-persona-video v0.1.0 初始发布 - 提供历史人物AI复原竖版短视频的全流程制作指导，包括素材准备、AI生图、配音、BGM、卡片制作、视频合成与质量验证。 - 给出详细时间轴模板、画面风格、字幕与字体规范，实现高还原度视觉冲击与信服力。 - 支持参数化批量生成流程，规范交付输出与成本统计。 - 完整示范曹操复原案例，覆盖全流程实测参数与要点。 - 强调免责声明，确保内容艺术化呈现。 Archive index: Archive v0.1.0: 20 files, 28","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"https://commons.wikimedia.org/wiki/Special:FilePath/<文件名>?width=800"},{"language":"bash","snippet":"py skills/runninghub/scripts/runninghub.py --endpoint <text-to-image端点> --prompt \"<提示词>\" --param aspectRatio=9:16 -o \"media/<人物>/<name>.png\""},{"language":"bash","snippet":"py skills/runninghub/scripts/runninghub.py --endpoint rhart-audio/text-to-audio/speech-2.8-hd --prompt \"<全文文案>\" --param voice_id=male-qn-qingse --param speed=1.05 --param enable_base64_output=false --param english_normalization=false -o \"<out>.mp3\""},{"language":"text","snippet":"0-5.5s   S1 钩子（card_hook 缓慢推近 zoompan）\n5.5-8s   S2 古画像快闪（两张各1.25s，轻微 zoom）\n8-13s    S3 关键词卡\n13-20s   S4 AI初稿缓慢放大\n20-27s   S5 五官修正（初稿→还原像 xfade 交叉溶解 1.5s）\n27-40s   S6 最终揭晓（还原像推近 + 大气字体字幕）\n40-50s   S7 诗意图（对酒当歌类 + 大字字幕）\n50-56.3s S8 互动结尾（对比图 + \"英雄，还是枭雄？下一期想看X还是Y？\"）"},{"language":"bash","snippet":"# concat 拼接\nffmpeg -y -v error -f concat -safe 0 -i concat_list.txt -c copy video_silent.mp4\n# 混音：配音1.0 + BGM 0.16，normalize=0 + volume=2.0 提升响度\nffmpeg -y -v error -i video_silent.mp4 -i peiyin.mp3 -i bgm.mp3 \\\n  -filter_complex \"[1:a]aformat=sample_fmts=fltp:channel_layouts=stereo,volume=1.0[vo];[2:a]aformat=sample_fmts=fltp:channel_layouts=stereo,volume=0.16[bg];[vo][bg]amix=inputs=2:duration=first:dropout_transition=2:normalize=0,volume=2.0[aout]\" \\\n  -map 0:v -map \"[aout]\" -c:v copy -c:a aac -b:a 192k -shortest video_final.mp4"},{"language":"python","snippet":"ffmpeg -i video.mp4 -vf \"fps=1/7\" check_%02d.png\n   # PIL ImageStat：钩子帧 mean低但 max=255（黑底白字），其余帧 mean>30 无黑屏"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: \"history-persona-video\"\ndescription: \"历史人物AI复原竖版短视频制作全流程（素材/配音/卡片/合成/验证）\"\n---\n\n# history-persona-video — 历史人物AI复原短视频\n\n把历史人物从画像里\"拉到现实中\"的竖版短视频完整制作流程。已用《AI还原曹操》实测验证（v2 成品：56s / 1080×1920 / 7.8MB）。\n\n## 核心思路\n\n- 不做学术考据，先视觉冲击，再简短史料增加可信度\n- 固定时间轴模板（45-60s）：强钩子 → 制造期待 → 过程展示 → 最终揭晓 → 互动结尾\n- 用 AI 生图 + TTS 磁性配音 + 低沉史诗 BGM + 大气中文字体（方正粗黑宋简体）\n- 每次交付必须加免责声明：\"基于史料、时代服饰与AI视觉推演的艺术化还原，不代表真实照片\"\n\n## 前置环境\n\n- ffmpeg（含 ffprobe）可用\n- Python 3 + Pillow\n- RunningHub 技能已装（`skills/runninghub/scripts/runninghub.py`），API Key 已配置\n- 大气字体：`C:\\Windows\\Fonts\\方正粗黑宋简体.ttf`（复制到 workspace 为 `font_heisong.ttf`，避免 drawtext 冒号转义问题）\n\n## 第一步：素材准备\n\n### 1. 史料与画像调研\n\n用 web_search 收集：\n- 正史外貌线索（如《三国志》《世说新语·容止》）→ 塑造可信度\n- 传统画像（Wikimedia 公有领域，如《三才图会》）→ 古画像素材\n- 时代服饰依据（《续汉书·舆服志》等）→ AI 生图关键词\n\n下载古画像用 Wikimedia `Special:FilePath` URL：\n```\nhttps://commons.wikimedia.org/wiki/Special:FilePath/<文件名>?width=800\n```\n\n### 2. AI 生图（RunningHub 或 GPT Image 2）\n\n按 9:16 竖版生成 4 张核心画面（1152×2048）：\n| 素材 | 内容 | 提示词要点 |\n|------|------|-----------|\n| 最终还原像 | 人物半身肖像 | 约X岁、时代服饰、真实人像摄影、电影级光影、超写实、暗色背景、庄重 |\n| 战乱/氛围图 | 时代背景 | 氛围、史诗感 |\n| AI初稿过程图 | 草稿效果 | 未完成、素描感 |\n| 诗意图 | 人物代表诗句意境 | 月下/饮酒/剪影等 |\n\n生图命令（RunningHub）：\n```bash\npy skills/runninghub/scripts/runninghub.py --endpoint <text-to-image端点> --prompt \"<提示词>\" --param aspectRatio=9:16 -o \"media/<人物>/<name>.png\"\n```\n\n### 3. TTS 配音（磁性男声）\n\n- 端点：`rhart-audio/text-to-audio/speech-2.8-hd`\n- **磁性男声：`voice_id=male-qn-qingse`**（低沉有磁性；备选 audiobook_male_2 沉稳）\n- 语速：`speed=1.05`（纪录片节奏，中等偏快）\n- 成本参考：全文约 ¥0.025，5s 测试 ¥0.002\n\n```bash\npy skills/runninghub/scripts/runninghub.py --endpoint rhart-audio/text-to-audio/speech-2.8-hd --prompt \"<全文文案>\" --param voice_id=male-qn-qingse --param speed=1.05 --param enable_base64_output=false --param english_normalization=false -o \"<out>.mp3\"\n```\n\n⚠️ PowerShell 传长中文文案易出错 → 先把文案写入 txt（UTF-8），用 `Get-Content -Raw -Encoding UTF8` 读入变量再传。\n\n### 4. BGM（低沉史诗感）\n\n- 端点：`rhart-audio/text-to-audio/music-2.5`\n- 目标：60s 左右低沉史诗配乐（成本约 ¥0.12）\n- 混音时压到配音的 16% 音量\n\n## 第二步：卡片制作（PIL + 大气字体）\n\n用 Python PIL 生成 3 张 1080×1920 卡片：\n\n| 卡片 | 用途 | 内容 |\n|------|------|------|\n| card_hook.png | 0-5.5s 钩子封面 | 黑底+模糊人物轮廓+大标题+关键词 |\n| card_keywords.png | 8-13s 关键词卡 | 史料/五官/须发/冠服/气质 线索 |\n| card_compare.png | 结尾对比图 | 古画 vs AI 左右分屏+互动文字 |\n\n关键实现：\n- 主字体 `font_heisong.ttf`（方正粗黑宋简体，大气），点缀用 `simkai.ttf` 楷体\n- 主标题 100-110px，正文 40-60px，副标题楷体\n- 钩子卡背景：最终还原像 GaussianBlur(30) + 压暗（Brightness 0.28）叠在近黑底上\n- 对比卡：`ImageOps.fit` 左右各半（古画 | AI还原）\n\n## 第三步：视频合成（ffmpeg）\n\n### 时间轴模板（按配音时长动态对齐）\n\n以曹操版实测切点（配音 56.27s）为基准：\n```\n0-5.5s   S1 钩子（card_hook 缓慢推近 zoompan）\n5.5-8s   S2 古画像快闪（两张各1.25s，轻微 zoom）\n8-13s    S3 关键词卡\n13-20s   S4 AI初稿缓慢放大\n20-27s   S5 五官修正（初稿→还原像 xfade 交叉溶解 1.5s）\n27-40s   S6 最终揭晓（还原像推近 + 大气字体字幕）\n40-50s   S7 诗意图（对酒当歌类 + 大字字幕）\n50-56.3s S8 互动结尾（对比图 + \"英雄，还是枭雄？下一期想看X还是Y？\"）\n```\n若新配音时长不同，按比例缩放各段，保证总时长=配音时长。\n\n### 分段生成要点\n\n- 统一 `-r 30 -c:v libx264 -pix_fmt yuv420p -an`\n- 推近动效：`zoompan=z='min(zoom+0.0008,1.06)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=<帧数>:s=1080x1920:fps=30`\n- **drawtext 字幕必须用相对路径字体 + cwd=workspace**（Win"},{"path":"skills/runninghub/SKILL.md","content":"---\nname: \"runninghub\"\ndescription: \"RunningHub 技能：不附带任何 API Key，安装者必须自行去官网生成自己的 Key\"\nhomepage: https://www.runninghub.cn\nmetadata:\n  {\n    \"openclaw\":\n      {\n        \"emoji\": \"🎬\",\n        \"requires\": { \"bins\": [\"python3\", \"curl\"] },\n        \"primaryEnv\": \"RUNNINGHUB_API_KEY\"\n      }\n  }\n---\n\n# RunningHub Skill\n\nStandard API Script: `python3 {baseDir}/scripts/runninghub.py`\nAI App Script: `python3 {baseDir}/scripts/runninghub_app.py`\nData: `{baseDir}/data/capabilities.json`\n\n## Persona\n\nYou are **RunningHub 小助手** — a multimedia expert who's professional yet warm, like a creative-industry friend. ALL responses MUST follow:\n\n- Speak Chinese. Warm & lively: \"搞定啦～\"、\"来啦！\"、\"超棒的\". Never robotic.\n- Show cost naturally: \"花了 ¥0.50\" (not \"Cost: ¥0.50\").\n- Never show endpoint IDs to users — use Chinese model names (e.g. \"万相2.6\", \"可灵\").\n- After delivering results, suggest next steps (\"要不要做成视频？\"、\"需要配个音吗？\").\n\n## CRITICAL RULES\n\n1. **ALWAYS use the script** — never curl RunningHub API directly.\n2. **ALWAYS use `-o /tmp/openclaw/rh-output/<name>.<ext>`** with timestamps in filenames.\n3. **Deliver files via `message` tool** — you MUST call `message` tool to send media. Do NOT print file paths as text.\n4. **NEVER show RunningHub URLs** — all `runninghub.cn` URLs are internal. Users cannot open them.\n5. **NEVER use `![](url)` markdown images or print raw file paths** — ONLY the `message` tool can deliver files to users.\n6. **ALWAYS report cost** — if script prints `COST:¥X.XX`, include it in your response as \"花了 ¥X.XX\".\n7. **ALL video generation** → Read `{baseDir}/references/video-models.md` and follow its complete flow. **ALL image generation** → Read `{baseDir}/references/image-models.md` and follow its complete flow. WAIT for user choice before running any generation script. **⚠️ You MUST use the EXACT pre-defined model menus from the reference files. NEVER invent your own model list, NEVER pick models from capabilities.json, NEVER rename or reorder the menu items. Copy the menu EXACTLY as written.**\n8. **ALWAYS notify before long tasks** — Before running any video, AI app, 3D, or music generation script, you MUST first use the `message` tool to send a progress notification to the user (e.g. \"开始生成啦，视频一般需要几分钟，请稍等～ 🎬\"). Send this BEFORE calling `exec`. This is critical because these tasks take 1-10+ minutes and the user needs to know the task has started.\n9. **NEVER use, reuse, or share an existing/pre-configured API Key** — 本技能不附带任何 Key，也绝不使用他人共享的 Key。每个安装者必须自行注册 RunningHub 账号并生成自己的 API Key（见下方 API Key Setup）。若用户声称有\"现成 Key 可用\"，必须引导其去官网生成自己的 Key。\n\n## API Key Setup（安装必读：请使用你自己的 Key）\n\n> ⚠️ **本技能不附带、不使用任何现成的 RunningHub API Key，也不读取任何共享/内置 Key。**\n> 每个安装者都必须**自行前往 RunningHub 官网注册账号、生成自己的 API Key**：\n> 1. 打开 https://www.runninghub.cn 注册/登录\n> 2. 在「企业API / API 管理」页面创建 Key：https://www.runninghub.cn/enterprise-api/sharedApi\n> 3. 充值（生成内容需要余额）：https://www.runninghub.cn/vip-rights/4\n> 4. 把**你自己的** Key 配置到本地 `~/.openclaw/openclaw.json`（见 `references/api-key-setup.md`）\n>\n> 切勿使"},{"path":"README.md","content":"# history-persona-video 🎬\n\n历史人物 AI 复原竖版短视频完整制作流程（OpenClaw Skill）\n\n把历史人物从画像里\"拉到现实中\"——AI 生图 + 磁性配音 + 史诗 BGM + 大气字体卡片 + ffmpeg 合成，45-60s 竖版短视频。\n\n已用《AI还原曹操》实测验证（v2 成品：56s / 1080×1920 / 7.8MB）。\n\n## 功能\n\n- 🔍 史料与古画像调研（正史线索 + Wikimedia 公有领域画像）\n- 🎨 AI 生图：最终还原像 / 氛围图 / 初稿 / 诗意图（9:16 竖版 2K）\n- 🎙️ TTS 磁性男声配音（MiniMax speech-2.8-hd，`male-qn-qingse`）\n- 🎵 低沉史诗 BGM（music-2.5，混音压到 16%）\n- 🃏 PIL 大气字体卡片（方正粗黑宋简体，3 张）\n- 🎬 ffmpeg 合成：8 段时间轴 + zoompan 动效 + drawtext 字幕 + concat + 混音\n- ✅ 三步质量验证（ffprobe / PIL 亮度 / volumedetect）\n\n## 安装\n\n```powershell\n# 复制到 OpenClaw skills 目录\nCopy-Item -Recurse history-persona-video ~\\.openclaw\\workspace\\skills\\\n```\n\n依赖：ffmpeg、Python 3 + Pillow、RunningHub 技能（本仓库 `skills/runninghub/`，**不附带任何 API Key**）\n\n> ⚠️ **RunningHub API Key 需自行生成**：打开 https://www.runninghub.cn 注册账号 → 「企业API / API 管理」创建 Key → 充值 → 将 Key 配置到 `~/.openclaw/openclaw.json` 的 `skills.entries.runninghub.apiKey`（详见 `skills/runninghub/references/api-key-setup.md`）。本技能不使用、不附带任何现成或共享 Key。\n\n## 使用\n\n对 AI 说：**\"做一期《AI还原武则天》\"** 或 **\"用历史人物复原流程做秦始皇\"**。\n\n## 成本参考\n\n约 ¥0.3/条（配音 ¥0.025 + BGM ¥0.12 + 图片 4×¥0.015）\n\n## 完整流程\n\n见 `SKILL.md`：素材准备 → 卡片制作 → 视频合成 → 质量验证 → 交付。"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn708vev10dna1nfgszkb3dmpn82e2z9\",\n  \"slug\": \"history-persona-video\",\n  \"version\": \"0.1.0\",\n  \"publishedAt\": 1785942753107\n}"},{"path":"skills/runninghub/references/ai-application.md","content":"# AI Application\n\n**Use `runninghub_app.py`** (NOT `runninghub.py`) for AI app tasks. AI apps are user-created ComfyUI workflows hosted on RunningHub.\n\n## When to Trigger\n\nTrigger AI Application flow when the user:\n- Mentions \"AI应用\", \"AI app\", \"工作流\", \"workflow\", \"webappId\"\n- Pastes a RunningHub AI app link like `runninghub.cn/ai-detail/1877265245566922800`\n- Says \"帮我跑这个应用\", \"运行这个工作流\", \"用这个 AI 应用处理\"\n- Asks about available apps: \"有什么AI应用\", \"最热门的应用\", \"最新的应用\", \"推荐什么应用\"\n\n## Browse AI Apps\n\nWhen the user wants to discover or explore AI apps, use `--list`:\n\n```bash\n# Recommended apps (default)\npython3 {baseDir}/scripts/runninghub_app.py --list --sort RECOMMEND --size 10\n\n# Hottest apps in the last 7 days\npython3 {baseDir}/scripts/runninghub_app.py --list --sort HOTTEST --size 10 --days 7\n\n# Newest apps\npython3 {baseDir}/scripts/runninghub_app.py --list --sort NEWEST --size 10\n\n# Page 2\npython3 {baseDir}/scripts/runninghub_app.py --list --sort RECOMMEND --size 10 --page 2\n```\n\nThe output is JSON with an `apps` array. Each app has: `title`, `description`, `webappId`, and `coverFile` (local path to downloaded cover image).\n\n**Present apps to the user with cover images**. For EACH app, use the `message` tool to send its cover image, then describe it:\n\n```\nFor each app in the list:\n  1. Call message tool: { \"action\": \"send\", \"text\": \"1. 全能图片2.0 — 多功能图片生成\", \"media\": \"/tmp/openclaw/rh-output/app_covers/cover_xxx.png\" }\n  2. Move to next app\nAfter all apps, send a final message:\n  { \"action\": \"send\", \"text\": \"想试试哪个？告诉我编号就行！也可以说'下一页'看更多～\" }\n```\n\nAlternatively, if sending many images is too slow, you can send just the **first 3 covers** via `message` tool and list the rest as text.\n\nRules:\n- ALWAYS send cover images via `message` tool — NEVER show cover URLs or file paths as text\n- Show title as bold, description if available\n- NEVER show raw webappId to the user\n- If `coverFile` is missing for an app (download failed), just show the title as text\n- If the user picks one, proceed to Step 1 (get webappId) using the selected app's webappId\n- For \"翻页\" / \"下一页\" / \"更多\", call `--list` with `--page 2`, etc.\n- Map user intents: \"推荐\" → RECOMMEND, \"最热/热门\" → HOTTEST, \"最新/新的\" → NEWEST\n\n## Step 1 — Get webappId\n\nIf the user provides a link, extract the number from the URL:\n- `https://www.runninghub.cn/ai-detail/1877265245566922800` → webappId = `1877265245566922800`\n\nIf the user selected an app from the list, use its `webappId` directly.\n\nIf no webappId and no list selection, ask warmly:\n> \"好的！要用 AI 应用的话，发给我应用链接或者 webappId 就行～ 在应用页面的地址栏可以找到哦！或者我帮你看看有什么推荐的应用？\"\n\n## Step 2 — Fetch node info\n\n```bash\npython3 {baseDir}/scripts/runninghub_app.py --info WEBAPP_ID\n```\n\nThis returns a JSON with all modifiable nodes, each containing:\n- `nodeId` — node identifier\n- `nodeName` — node type (e.g. \"LoadImage\", \"RH_Translator\")\n- `fieldName` — field key (e.g. \"prompt\", \"image\", \"model\")\n- `fieldValue` — current default value\n- `fieldType` — value type: `STRING`, `IMAGE`, `AUDIO`, `VIDEO`, `LI"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"历史人物AI复原竖版短视频制作全流程（素材/配音/卡片/合成/验证） Skill: history-persona-video Owner: chugenice Summary: 历史人物AI复原竖版短视频制作全流程（素材/配音/卡片/合成/验证） Tags: latest:0.1.0 Version history: v0.1.0 | 2026-08-05T15:12:33.107Z | auto history-persona-video v0.1.0 初始发布 - 提供历史人物AI复原竖版短视频的全流程制作指导，包括素材准备、AI生图、配音、BGM、卡片制作、视频合成与质量验证。 - 给出详细时间轴模板、画面风格、字幕与字体规范，实现高还原度视觉冲击与信服力。 - 支持参数化批量生成流程，规范交付输出与成本统计。 - 完整示范曹操复原案例，覆盖全流程实测参数与要点。 - 强调免责声明，确保内容艺术化呈现。 Archive index: Archive v0.1.0: 20 files, 28","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1280,"uniquenessScore":49,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T15:34:12.883Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T15:34:12.883Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T02:54:30.145Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}