From eab4b47191010838ed3501a4dc0be29aefddbe51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=86=B0=E6=9C=94?= <565183519@qq.com> Date: Fri, 12 Jun 2026 22:22:32 +0800 Subject: [PATCH] =?UTF-8?q?D131:=20guanghuclip-video-generate=20=E6=8A=80?= =?UTF-8?q?=E8=83=BD=E5=8C=85=20=C2=B7=20Seedance=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E7=94=9F=E6=88=90=E2=86=92gatekeeper=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E2=86=92guanghuclip=E6=9B=B4=E6=96=B0=E5=85=A8=E9=93=BE?= =?UTF-8?q?=E8=B7=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../guanghuclip-video-generate/SKILL.md | 186 ++++++++++++++++++ 1 file changed, 186 insertions(+) create mode 100644 .workbuddy/skills/guanghuclip-video-generate/SKILL.md diff --git a/.workbuddy/skills/guanghuclip-video-generate/SKILL.md b/.workbuddy/skills/guanghuclip-video-generate/SKILL.md new file mode 100644 index 0000000..5ff31fc --- /dev/null +++ b/.workbuddy/skills/guanghuclip-video-generate/SKILL.md @@ -0,0 +1,186 @@ +--- +name: guanghuclip-video-generate +description: 光湖视频AI · Seedance视频生成→新加坡面孔服务器部署→guanghuclip.cn 预览更新全链路。当需要从分镜脚本生成AI视频并部署到 guanghuclip.cn 时加载此技能。 +trigger_keywords: 生成视频, 跑镜, 生成分镜, Seedance, guanghuclip, 视频部署, 视频预览, AI视频, shot +agent_created: true +created: D131 · 2026-06-12 +tcs: ICE-GL-ZY001 +--- + +# 光湖视频AI · 生成+部署技能包 + +全链路:读取分镜 → 调用 Seedance 2.0 API → 下载视频 → 部署到新加坡面孔服务器 → 更新 guanghuclip.cn 预览 + +## 前置条件 + +### 本地文件 +- `~/guanghulab/video-ai-system/.env` — API Key 配置(JIMENG_API_KEY + ALIYUN_API_KEY) +- `~/guanghulab/video-ai-system/engines/video-api-adapter.js` — Seedance API 适配器 +- `~/guanghulab/video-ai-system/engines/hldp-prompt.js` — HLDP→提示词转换器 +- `~/guanghulab/video-ai-system/tools/run-shot1.js` — 单镜执行脚本(可复用模板) + +### API 密钥 +- `JIMENG_API_KEY=ark-xxx` — 火山方舟 API Key(在 video-ai-system/.env) +- 模型默认: `doubao-seedance-2-0-260128`(火山方舟控制台需开通) + +### 服务器 +- BS-SG-001 · 43.156.237.110 · Gatekeeper `zy_gtw_c38be341d65043eee0ba51a214a267832a9ae46dd73e423c` +- guanghuclip 前端根目录: `/root/guanghuclip/frontend/` +- 视频存放路径: `/root/guanghuclip/frontend/videos/` +- API 数据: `/root/guanghuclip/frontend/public/data/videos.json` + +### 工具链组合 +``` +腾讯文档(读分镜) → hldp-prompt.js → video-api-adapter.js → gatekeeper → videos.json + ↑MCP connector ↑本地引擎 ↑火山方舟API ↑直连3911 ↑sed修改 +``` + +## 工作流 + +### Step 1: 读取分镜脚本 + +从腾讯文档读分镜(MCP connector: `tencent-docs`): +``` +DeferExecuteTool → mcp__tencent-docs__get_content + file_id: "DTHhuWW5OQU9VbFVX" +``` + +提取镜号、提示词、时长信息。 + +### Step 2: 生成 Seedance 提示词 + +用 hldp-prompt.js 或直接从文档取提示词。提示词要求: +- 中文描述,100-200字 +- 包含:场景、人物、动作、氛围、风格 +- 后缀:`Seedance动态漫风格,电影级光影` + +### Step 3: 调用 Seedance API 生成视频 + +使用 video-api-adapter.js 或复制 run-shot1.js 模板: + +```javascript +const { generateVideo } = require('../engines/video-api-adapter'); + +const result = await generateVideo({ + prompt: '修仙世界,百宗会广场,白天阳光明媚...', + duration: '5', + resolution: '1080p', + outputPath: path.resolve(__dirname, '../outputs/shots/ep01-shot01.mp4'), +}); +``` + +**注意:** +- 模型名必须是 `doubao-seedance-2-0-260128`(不是 seedance-2-0) +- API 返回结构是 `{ content: { video_url: "..." } }`,不是 `output.video_url` +- 轮询最多120次×5秒=10分钟 +- 每次约消耗 108,900 tokens + +**常见错误:** +| 错误 | 原因 | 解决 | +|------|------|------| +| 404 model does not exist | 模型名错误 | 用 `doubao-seedance-2-0-260128` | +| 未开通模型服务 | 火山方舟未开通 | 去控制台开通 Seedance 2.0 | +| 安心体验已达上限 | 免费额度用完 | 关闭安心体验模式 | +| 任务完成但未返回视频地址 | 响应解析路径错误 | 检查 `data.content?.video_url` | + +运行命令(后台): +```bash +cd ~/guanghulab/video-ai-system && \ +/Users/bingshuolingdianyuanhe/.workbuddy/binaries/node/versions/22.22.2/bin/node tools/run-shot1.js +``` + +### Step 4: 下载视频到本地 + +```bash +curl -L -o outputs/ep01-shot01.mp4 "" +``` + +### Step 5: 部署到新加坡面孔服务器 + +#### 5a. 上传视频文件 + +新加坡服务器从 Seedance TOS 直拉(最快,约10秒): +```bash +curl -s -m 30 --noproxy '*' -X POST \ + -H "Authorization: Bearer zy_gtw_c38be341d65043eee0ba51a214a267832a9ae46dd73e423c" \ + -H "Content-Type: application/json" \ + http://43.156.237.110:3911/exec \ + -d '{"cmd":"mkdir -p /root/guanghuclip/frontend/videos && curl -L -o /root/guanghuclip/frontend/videos/ep01-shot01.mp4 \"\" && ls -la /root/guanghuclip/frontend/videos/ep01-shot01.mp4"}' +``` + +**关键:** 必须加 `--noproxy '*'` 否则新加坡 gatekeeper 超时。 + +如果 TOS URL 过期(24小时后),用本地文件 base64 分块上传(视频4MB≈480chunks×12000chars),或通过 COS 中转。 + +#### 5b. 更新 videos.json + +```bash +curl -s -m 15 --noproxy '*' -X POST \ + -H "Authorization: Bearer zy_gtw_c38be341d65043eee0ba51a214a267832a9ae46dd73e423c" \ + -H "Content-Type: application/json" \ + http://43.156.237.110:3911/exec \ + -d '{"cmd":"cd /root/guanghuclip/frontend/public/data && cp videos.json videos.json.bak && sed -i '\''s|\"镜1·建立镜头\", \"duration\": 5[^}]*\"videoUrl\": null|\"镜1·建立镜头\", \"duration\": 5, \"prompt\": \"...\", \"videoUrl\": \"/videos/ep01-shot01.mp4\"|'\'' videos.json && grep -A2 \"镜1\" videos.json"}' +``` + +### Step 6: 验证 + +```bash +# 验证视频文件可访问 +curl -s -o /dev/null -w '%{http_code} %{size_download}' --noproxy '*' http://guanghuclip.cn/videos/ep01-shot01.mp4 + +# 验证 JSON 更新 +curl -s --noproxy '*' http://guanghuclip.cn/data/videos.json | python3 -c "import sys,json;d=json.load(sys.stdin);print(d['episodes'][0]['scenes'][0]['shots'][0])" +``` + +### Step 7: 人类预览 + +浏览器打开 http://guanghuclip.cn → 点进项目 → 镜1 卡片显示 ✅ 已生成 + 视频播放器。 + +## 服务器地图(BS-SG-001 · 43.156.237.110) + +### guanghuclip.cn 请求路径 +``` +浏览器 → DNS(43.156.237.110) → Nginx(80) → guanghuclip.cn server块 + ├── / → /root/guanghuclip/frontend/index.html (静态SPA) + ├── /api/* → proxy_pass 127.0.0.1:3000 (光湖语言世界API) + ├── /videos/* → /root/guanghuclip/frontend/videos/ (静态视频文件) + ├── /data/* → /root/guanghuclip/frontend/public/data/ (JSON数据) + └── /socket.io/* → proxy_pass 127.0.0.1:3000 (WebSocket) +``` + +### guanghubingshuo.com 主要路由 +| 路径 | 服务 | 端口 | 用途 | +|------|------|------|------| +| / | 静态 | /var/www/html | 主页门户 | +| /code/ | Forgejo | :3001 | 代码仓库 | +| /console/ | console-server | :3920 | 管理控制台 | +| /desk/ | desk-system | :3921 | 桌面系统 | +| /brain-db/ | persona-brain-db | :3914 | 人设数据库 | +| /outline/ | Docker Outline | :3090 | Wiki | +| /juzi/aircraft/ | Python uvicorn | :8001 | 辰星飞行器 | + +### 关键端口 +- 3911: Gatekeeper引擎 (PM2 engine) +- 3000: guanghuclip后端 +- 3001: Forgejo Git +- 3905: Repo MCP SG +- 3906: HLDP Gate MCP + +## 注意事项 + +- 每次视频生成约消耗 108,900 tokens(¥0.28/万token → ≈¥3.05/镜) +- Seedance TOS URL 24小时后过期,需及时部署 +- guanghuclip 后端(端口3000)未通过PM2管理,是直接 `node server.js` 运行 +- guanghuclip.cn 有SSL证书但Nginx未启用HTTPS(仅80端口) +- videos.json 更新用sed时注意行内中文引号不变 +- 每次更新前备份 videos.json → videos.json.bak + +## 相关文件 + +- `~/guanghulab/video-ai-system/engines/video-api-adapter.js` — API适配器(已修复 content.video_url 解析) +- `~/guanghulab/video-ai-system/engines/hldp-prompt.js` — 提示词转换器 +- `~/guanghulab/video-ai-system/tools/run-shot1.js` — 单镜执行模板 +- `~/guanghulab/video-ai-system/.env` — API密钥(不推送仓库) +- `~/guanghulab/guanghuclip/frontend/index.html` — guanghuclip SPA +- `~/guanghulab/guanghuclip/frontend/public/data/videos.json` — 分镜数据 +- 腾讯文档: `docs.qq.com/aio/DTHhuWW5OQU9VbFVX` (file_id: DTHhuWW5OQU9VbFVX)