StoryForge
StoryForge 现在拆成独立项目目录,和 AI-glasses 分开维护。
仓库边界和维护约束见:StoryForge 仓库边界说明。
拆分治理方案见:StoryForge / AI Glasses 拆分评估方案。
当前项目状态见:StoryForge 当前项目状态。
阶段性版本更新记录见:StoryForge Changelog。
AI-glasses 独立代码仓库已单独维护在 krisolo/ai-glasses。
目录
collector-service/:FastAPI 后端,负责用户体系、项目、Agent、任务、内容分析和对外能力接入web/storyforge-web-v4/:正式 Web 工作台,承接多平台运营、对标、跟踪、生产和复盘入口n8n/:工作流导出文件,作为流程编排中枢docker-compose.yml:本地collector + n8n + cli-proxy-api编排Common/:项目约束和架构说明data/collector/:SQLite、任务文件、下载产物docs/:审计、实施计划、联调说明、当前 MVP 状态
CI
仓库里的最小 GitHub/Gitea Actions workflow 位于 .github/workflows/ci.yml,会在 push、pull_request 和 workflow_dispatch 时运行基线检查、后端单元测试和 Web Node 测试。
产品手册
- 新媒体运营中台产品逻辑手册
- 新媒体运营平台 UI 参考包
- Web V4 UI 原型
- Web V4 前端骨架(国内平台 UI 承载,当前已接上
douyin / xiaohongshu / bilibili / kuaishou / wechat_video统一工作台) - Mobile V4 UI 原型(仅 UI 原型,不代表当前仓库承载 Android 工程)
Douyin Browser Capture
cd /Users/kris/code/StoryForge-gitea
./scripts/start_douyin_workbench.sh
业务页:
http://127.0.0.1:3618/workbench
完整采集控制台:
http://127.0.0.1:3618
常用脚本:
./scripts/start_douyin_workbench.sh
./scripts/status_douyin_workbench.sh
./scripts/stop_douyin_workbench.sh
./scripts/cleanup_debug_ui.sh
如果第一次使用,还需要先安装浏览器依赖:
cd /Users/kris/code/StoryForge-gitea/scripts/douyin-browser-capture
npm install
npx playwright install chromium
当前本地页面已经拆成两个入口:
/workbench:业务优先的Douyin Workbench,可直接查看账号列表、商业化账号分析、快照详情、相似账号和对标关系/:完整浏览器辅助采集控制台,同时保留工作台能力- 作品工作台支持按
高分作品 / 最新作品 / 全部作品切换,并可按综合分、受欢迎程度、商业价值、发布时间、播放、点赞、分享、评论排序 - 作品列表支持
视频 / 图文类型筛选,并可直接打开原作品链接 - 高分作品支持自动化分析,每条作品卡片下都会展示商业判断、复刻计划、运营动作和风险提醒
或者继续用命令行:
cd /Users/kris/code/StoryForge-gitea/scripts/douyin-browser-capture
npm run capture -- \
--profile-url https://www.douyin.com/user/your_account \
--storyforge-username storyforge-admin \
--storyforge-password 'your_admin_password'
说明:
- 这是“真实浏览器 + 人工登录/过挑战 + 自动提取 + 回写 StoryForge”的辅助采集工具
- 默认输出到
output/playwright/douyin/ - 本地控制台模式会把每次运行保存到
output/playwright/douyin/control-panel/ - 控制台支持“开始采集 -> 浏览器登录 -> 网页点继续 -> 自动同步”的点击式流程
- 详细说明见
scripts/douyin-browser-capture/README.md
Collector Service
cd /Users/kris/code/StoryForge-gitea/collector-service
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --host 0.0.0.0 --port 8081 --reload
Docker Compose
cd /Users/kris/code/StoryForge-gitea
cp .env.example .env
docker compose up -d --build
首次启动前,至少补齐这些配置:
ORCHESTRATOR_SHARED_SECRET=your_strong_shared_secret
BOOTSTRAP_SUPERADMIN_USERNAME=storyforge-admin
BOOTSTRAP_SUPERADMIN_PASSWORD=your_strong_admin_password
如果希望 Web 端打开后直接自动建会话,不让用户手动输入账号密码,再额外打开:
WEB_AUTOLOGIN_ENABLED=1
WEB_AUTOLOGIN_ACCOUNT_USERNAME=your_existing_approved_username
推荐直接指定一个已经存在且已审批通过的账号用户名,服务端会直接为该账号签发自动会话,不需要额外保存该账号密码。
如果你更希望复用 bootstrap 超级管理员口令,或者切到专门账号,也可以继续走密码模式:
WEB_AUTOLOGIN_USERNAME=your_autologin_username
WEB_AUTOLOGIN_PASSWORD=your_autologin_password
如果要让本机模型网关 cli-proxy-api 自动提供 GLM-5,建议在启动前确保本机环境里存在:
export DASHSCOPE_API_KEY=your_dashscope_key
或者把它写进本地 .env。./scripts/start_business.sh 会自动生成 data/cliproxyapi/config.yaml 并把 glm-5 -> GLM-5 映射到本机网关。
如果 collector 跑在 Docker 里,建议保留:
COLLECTOR_N8N_BASE_URL=http://n8n:5678
如果你单独在宿主机启动 collector-service,它读取的仍然是:
N8N_BASE_URL=http://127.0.0.1:5670
默认会启动:
collector-service:http://127.0.0.1:8081n8n:http://127.0.0.1:5670cli-proxy-api:http://127.0.0.1:8317- 公网入口:
https://storyforge.hyzq.net/
公网维护常用脚本:
./scripts/smoke_public_storyforge.sh
./scripts/deploy_public_storyforge.sh
首次启动时,如果数据库里还没有 super_admin,collector-service 会按
BOOTSTRAP_SUPERADMIN_USERNAME / BOOTSTRAP_SUPERADMIN_PASSWORD / BOOTSTRAP_SUPERADMIN_DISPLAY_NAME
创建最高权限账号。未配置时不会再自动写入默认口令账号。
如果开启了 WEB_AUTOLOGIN_ENABLED=1,前端会在启动时直接请求 /v2/auth/auto-session 自动建会话,不再显示用户名 / 密码 / token 输入流程。推荐优先使用 WEB_AUTOLOGIN_ACCOUNT_USERNAME,只在必须时才使用 WEB_AUTOLOGIN_USERNAME / WEB_AUTOLOGIN_PASSWORD。
当前架构
collector-service负责:- 用户账号、多项目、多 Agent、多任务、多内容源数据边界
- 调用下载器、本地 ASR、本机 OpenAI 兼容模型
- 调用 Windows
cutvideo和huobao-drama - 持久化任务、分镜、分析结果、事件日志
n8n负责:- 触发
analysis_pipeline - 触发
content_source_sync_pipeline - 触发
real_cut_pipeline - 触发
ai_video_pipeline
- 触发
- 历史旧运行链已完成移除,当前运行时只保留 StoryForge 自身服务与外部执行引擎
- 当前公网接入采用“云服务器 HTTPS 入口 + 云服务器本地 collector + 本地桥接执行引擎”模式:
https://storyforge.hyzq.net/由云服务器nginx提供 HTTPS 入口/静态页由云服务器本地StoryForge Web V4直出/v2/*、/openapi.json、/healthz反向代理到云服务器本地collector-service- 业务数据库已上云,当前路径为云服务器本地
storyforge.db n8n / cutvideo / huobao / 本机模型 / ASR / NAS 录制继续由本机和局域网执行链提供,并通过受控桥接暴露给云上的collector-service
说明
- 新注册账号默认
pending - 主管理员审批后才可使用核心业务接口
- 支持
user -> project -> knowledge base / assistant(agent) / job / content source的多租户边界 - 素材入口支持文字、视频链接、视频上传;内容源账号通过
content_sources建模持久化,并可派生父子分析任务 cutvideo继续运行在 Windows 机器,本系统通过 API 调度- fnOS / 局域网调试环境下,
cutvideo建议通过 NAS SSH 隧道接入,默认入口为http://192.168.31.188:19186 huobao-drama继续作为 AI 生成视频主链的核心引擎- 详细审计、阶段计划和联调步骤见
docs/ - Windows
cutvideo的恢复与常驻维护见WINDOWS_CUTVIDEO_OPERATIONS_2026-03-27.md
fnOS / NAS 局域网交付默认三步:
./scripts/deploy_fnos_cutvideo_tunnel.sh
./scripts/deploy_fnos_storyforge_lan_stack.sh
./scripts/smoke_fnos_storyforge_lan.sh
这套顺序会先把 Windows cutvideo 通过 NAS SSH 隧道暴露到 19186/19181,再把 StoryForge 的 NAS 侧联调用默认主链切到 http://192.168.31.188:19186,最后用一键 smoke 校验整条链路。