|
|
пре 2 месеци | |
|---|---|---|
| .codegraph | пре 3 месеци | |
| .githooks | пре 2 месеци | |
| cloud-functions | пре 2 месеци | |
| e2e | пре 2 месеци | |
| public | пре 4 месеци | |
| scripts | пре 2 месеци | |
| server | пре 3 месеци | |
| src | пре 2 месеци | |
| .editorconfig | пре 4 месеци | |
| .env.example | пре 3 месеци | |
| .gitignore | пре 2 месеци | |
| .prettierrc | пре 4 месеци | |
| AGENTS.md | пре 2 месеци | |
| README.md | пре 2 месеци | |
| angular.json | пре 2 месеци | |
| package-lock.json | пре 3 месеци | |
| package.json | пре 2 месеци | |
| playwright.config.ts | пре 3 месеци | |
| proxy.conf.json | пре 4 месеци | |
| server.js | пре 3 месеци | |
| tsconfig.app.json | пре 4 месеци | |
| tsconfig.json | пре 4 месеци | |
| tsconfig.spec.json | пре 4 месеци |
# video-workflow
公司内部使用的 AI 短视频创作与运营工作台,面向抖音内容生产场景,把选题分析、脚本与素材生成、视频合成、账号运营和内容资产管理集中到一套工作流中。
package.json中的包名仍为tik-tok,本文统一使用仓库与产品名video-workflow。
objectId 隔离。21.25.97.8@ffmpeg/ffmpeg、@ffmpeg/core4.21必需:
package.json 中限定最低版本。11.6.1。按功能需要:
PATH。msedge 通道。obsutil 和 hcloud:仅执行内部部署脚本时需要。检查本机环境:
node --version
npm --version
ffmpeg -version
ffprobe -version
如需本地 Whisper:
pip install openai-whisper
whisper --help
进入项目目录。
cd video-workflow
安装依赖。
npm install
创建本地环境变量文件。
PowerShell:
Copy-Item .env.example .env
Bash:
cp .env.example .env
根据需要填写 .env。不要提交真实 token、密钥或 session token。
同时启动 Angular 前端和 Express 后端。
npm run dev
可使用后端健康检查确认本地服务是否启动:
http://localhost:3000/api/health
server.js 启动时会读取仓库根目录的 .env。已有系统环境变量优先,不会被 .env 覆盖。
完整模板见 .env.example。以下是主要配置:
| 变量 | 默认值/用途 |
|---|---|
PORT |
Express 端口,模板值为 3000。 |
PARSE_API_HOST |
Parse 与 fmode API 主机。 |
PARSE_APP_ID |
Parse Application ID。 |
PARSE_BASE_URL |
fmode 云函数调用地址。 |
| 变量 | 用途 |
|---|---|
JIMENG_BASE_URL |
即梦生成代理地址。 |
JIMENG_TOKEN |
图片、视频、数字人和动作迁移等生成请求的凭证。 |
| 变量 | 用途 |
|---|---|
DOUYIN_API_BASE_URL |
抖音数据网关地址。 |
DOUYIN_API_TOKEN |
抖音数据网关 token。 |
VOC_TOKEN / VOC_SOCIAL_TOKEN |
抖音数据网关的兼容 token。 |
TIKHUB_BASE_URL / TIKHUB_TOKEN |
明确直连 TikHub 时使用。 |
IFLYTEK_GATEWAY_BASE_URL |
逐字稿/转写网关地址。 |
TRANSCRIPTION_VOC_TOKEN |
转写网关 token。 |
VOICE_TOKEN / OPENCLAW_VOC_TOKEN |
语音及转写链路使用的兼容 token。 |
| 变量 | 用途 |
|---|---|
LLM_BASE_URL |
OpenAI 兼容的 LLM 代理地址。 |
LLM_API_KEY |
AI 助手、脚本生成和媒体理解使用的密钥。 |
| 变量 | 用途 |
|---|---|
QINIU_AK / QINIU_SK |
七牛 Access Key 和 Secret Key。 |
QINIU_BUCKET |
存储空间名称。 |
QINIU_DOMAIN / QINIU_CDN_DOMAIN |
文件访问域名。 |
QINIU_CDN_PREFIX |
上传文件的路径前缀。 |
QINIU_UPLOAD_URL |
七牛上传地址。 |
| 变量 | 用途 |
|---|---|
VOLC_TTS_TOKEN |
火山 TTS token。 |
VOLC_SPEECH_API_KEY |
火山语音 API Key 鉴权。 |
VOLC_SPEECH_APP_KEY / VOLC_SPEECH_ACCESS_KEY |
火山语音 App Key 鉴权。 |
VOICE_TTS_BASE_URL |
云函数语音代理地址。 |
| 变量 | 用途 |
|---|---|
QUICKLY_APP_KEY / QUICKLY_APP_SECRET |
Quickly 应用凭证。 |
QUICKLY_ACCOUNT_ID |
Quickly 账号 ID。 |
QUICKLY_CALLBACK_URL |
任务回调地址。 |
QUICKLY_RELAY_URL |
云函数中继地址。 |
QUICKLY_UPSTREAM_FN_ID |
上游一键成片函数 ID。 |
多数变量只在调用对应真实服务时需要。只查看界面或开发不依赖外部服务的功能时,可以先保留为空。
云函数 ID 维护在:
src/app/services/cloud-functions.ts
npm run dev
npm start
该命令会使用 proxy.conf.json。主要代理关系:
| 前端路径 | 目标 |
|---|---|
/api |
https://api.tikhub.io |
/jimeng |
https://server.fmode.cn/api/volcengine/jimeng |
/parse |
https://server.fmode.cn/parse |
/functions |
https://server.fmode.cn/api/functions |
/backend |
http://localhost:3000 |
npm run start:dev
该命令监听 0.0.0.0。请确认所在网络可信,并避免在前端或 URL 中暴露凭证。
npm run server
修改 PORT 后,需同步调整 proxy.conf.json 中 /backend 的目标地址。
npm run watch
仓库提供 .githooks/pre-commit:当核心服务、Express 路由或云函数发生改动但没有同步协作文档时,会打印警告,但不会阻断提交。每个新工作副本首次使用时执行:
git config core.hooksPath .githooks
npm test
执行一次后退出:
npm test -- --watch=false
npm run e2e:ip-operator
脚本会在 127.0.0.1:4300 启动 Angular 开发服务器,并使用 Playwright 的 Edge 通道运行测试。
运行真实 LLM 用例:
npm run e2e:ip-operator:real
真实用例需要对应服务可访问并已配置凭证,可能产生外部调用。
npm run build:cloud-functions
npm run validate:cloud-functions
npm run validate:jimeng-billing
npm run validate:storage-policy
npm run smoke:cloud
npm run review:guard
build:cloud-functions:生成可直接部署的单文件云函数到 cloud-functions/deployable/。smoke:cloud:检查已配置云函数的连通性;空函数 ID 会被跳过。review:guard:检查疑似凭证和部分代码体积治理规则。需要登录态的云函数或账号隔离验收还会使用 SMOKE_SESSION_TOKEN、STORAGE_GOVERNANCE_SESSION_A 等测试环境变量。它们只能临时设置在本地终端中,不能写入源码或文档。
npm run build
Angular 项目名为 Tik-tok,默认构建输出位于:
dist/Tik-tok/
仓库使用根目录的 deploy.ps1 发布前端:
.\deploy.ps1
脚本会:
/dev/video-workflow/ 作为 base-href 构建前端。dist/video-workflow/browser 同步到华为云 OBS。部署地址由脚本配置为:
https://app.fmode.cn/dev/video-workflow/
执行前需检查 deploy.ps1 中的 obsutil、hcloud 本机路径及部署配置。该脚本被 .gitignore 忽略,属于内部本地部署配置,不应提交或对外分享其中的凭证。
云函数源码位于 cloud-functions/。依赖 _session.js 的函数不能直接复制源码部署,应先运行:
npm run build:cloud-functions
然后将 cloud-functions/deployable/ 下的对应单文件版本部署到 fmode 平台,并把函数 ID 更新到:
src/app/services/cloud-functions.ts
部署后执行:
npm run smoke:cloud
npm run build
video-workflow/
├── src/
│ ├── main.ts # Angular 启动入口
│ ├── environments/ # 开发/生产环境编译配置
│ └── app/
│ ├── app.ts # 应用主壳与全局工作台逻辑
│ ├── components/ # 通用 UI 组件
│ ├── models/ # 业务模型
│ ├── pages/ # 页面与各生成 Pipeline
│ ├── pipelines/ # Pipeline 注册中心
│ ├── pipes/ # 展示格式化管道
│ └── services/ # API、存储和业务服务
├── server.js # Express 启动入口
├── server/
│ ├── config/ # 后端运行时配置
│ └── routes/ # Express 路由模块
├── cloud-functions/ # fmode 云函数源码与部署说明
├── scripts/ # 构建、冒烟和治理脚本
├── e2e/ # Playwright 端到端测试
├── public/ # 静态资源
├── data/ # 本地运行数据,不进入版本库
├── proxy.conf.json # Angular 开发代理
├── angular.json # Angular 构建配置
├── playwright.config.ts # E2E 配置
├── .env.example # 本地配置模板
└── deploy.ps1 # 内部前端部署脚本,本地保留
生成模式由 src/app/pipelines/pipeline-registry.ts 统一登记,但新增模式还需要同步接入页面组件、Tab 类型和主模板。
/backend 失败确认 Express 已启动:
npm run server
然后访问:
http://localhost:3000/api/health
如果修改了 PORT,还需更新 proxy.conf.json。
安装 FFmpeg,并确保下面两个命令可在当前终端执行:
ffmpeg -version
ffprobe -version
重启终端和本地后端后再试。
确认 CLI 已安装:
whisper --help
也可以访问:
http://localhost:3000/api/whisper/status
.env 中对应能力的 URL 和 token。src/app/services/cloud-functions.ts 中对应函数 ID。npm run server,使后端重新加载 .env。npm run smoke:cloud。这是账号隔离行为。项目使用当前 Parse 用户的 objectId 区分云端业务数据和浏览器本地数据。
当前配置使用 Microsoft Edge。先确认本机已安装 Edge;必要时安装 Playwright 浏览器依赖:
npx playwright install msedge
deploy.ps1 提示找不到工具检查脚本顶部配置的 obsutil 和 hcloud 路径是否与本机一致,并确认部署账号具备 OBS 同步、ACL 修改和 CDN 刷新权限。
本仓库为公司私有项目。源码、业务文档、云函数 ID、服务地址、用户数据和访问凭证不得对外分发。