--- 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 `GATEKEEPER_TOKEN_REDACTED` - 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 GATEKEEPER_TOKEN_REDACTED" \ -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 GATEKEEPER_TOKEN_REDACTED" \ -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)