Guanghu Domestic Migration d1e47f4565
Some checks are pending
自动更新代码和重启 / update-and-restart (push) Waiting to run
CI检查 + 自动部署 / check (push) Waiting to run
CI检查 + 自动部署 / deploy (push) Blocked by required conditions
重启聊天服务 / restart (push) Waiting to run
chore: import sanitized domestic snapshot for REPO-002
Source snapshot: ca48d3ddf926d79aa138306164169baf764bb829
2026-07-17 15:54:41 +08:00

7.4 KiB
Raw Blame History

name, description, trigger_keywords, agent_created, created, tcs
name description trigger_keywords agent_created created tcs
guanghuclip-video-generate 光湖视频AI · Seedance视频生成→新加坡面孔服务器部署→guanghuclip.cn 预览更新全链路。当需要从分镜脚本生成AI视频并部署到 guanghuclip.cn 时加载此技能。 生成视频, 跑镜, 生成分镜, Seedance, guanghuclip, 视频部署, 视频预览, AI视频, shot true D131 · 2026-06-12 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 模板:

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

运行命令(后台):

cd ~/guanghulab/video-ai-system && \
/Users/bingshuolingdianyuanhe/.workbuddy/binaries/node/versions/22.22.2/bin/node tools/run-shot1.js

Step 4: 下载视频到本地

curl -L -o outputs/ep01-shot01.mp4 "<Seedance返回的video_url>"

Step 5: 部署到新加坡面孔服务器

5a. 上传视频文件

新加坡服务器从 Seedance TOS 直拉最快约10秒:

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 \"<TOS_URL>\" && ls -la /root/guanghuclip/frontend/videos/ep01-shot01.mp4"}'

关键: 必须加 --noproxy '*' 否则新加坡 gatekeeper 超时。

如果 TOS URL 过期24小时后用本地文件 base64 分块上传视频4MB≈480chunks×12000chars或通过 COS 中转。

5b. 更新 videos.json

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: 验证

# 验证视频文件可访问
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)