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

187 lines
7.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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 "<Seedance返回的video_url>"
```
### 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 \"<TOS_URL>\" && 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)