# StoryForge StoryForge 现在拆成独立项目目录,和 `AI-glasses` 分开维护。 仓库边界和维护约束见:[StoryForge 仓库边界说明](./docs/STORYFORGE_REPO_BOUNDARY_2026-03-26.md)。 拆分治理方案见:[StoryForge / AI Glasses 拆分评估方案](./docs/STORYFORGE_SPLIT_ASSESSMENT_2026-03-26.md)。 当前项目状态见:[StoryForge 当前项目状态](./docs/CURRENT_PROJECT_STATE_2026-03-26.md)。 阶段性版本更新记录见:[StoryForge Changelog](./CHANGELOG.md)。 `AI-glasses` 独立代码仓库已单独维护在 [krisolo/ai-glasses](https://git.hyzq.site/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`](/Users/kris/code/StoryForge-gitea/.github/workflows/ci.yml),会在 `push`、`pull_request` 和 `workflow_dispatch` 时运行基线检查、后端单元测试和 Web Node 测试。 ## 产品手册 - [新媒体运营中台产品逻辑手册](./docs/PRODUCT_LOGIC_NEW_MEDIA_OPERATING_SYSTEM_2026-03-22.md) - [新媒体运营平台 UI 参考包](./output/ui/new-media-ops-reference-2026-03-22/README.md) - [Web V4 UI 原型](./output/ui/storyforge-web-v4-html-prototype-2026-03-22/README.md) - [Web V4 前端骨架](./web/storyforge-web-v4/README.md)(国内平台 UI 承载,当前已接上 `douyin / xiaohongshu / bilibili / kuaishou / wechat_video` 统一工作台) - [Mobile V4 UI 原型](./output/ui/storyforge-mobile-v4-html-prototype-2026-03-22/README.md)(仅 UI 原型,不代表当前仓库承载 Android 工程) ## Douyin Browser Capture ```bash cd /Users/kris/code/StoryForge-gitea ./scripts/start_douyin_workbench.sh ``` 业务页: ```text http://127.0.0.1:3618/workbench ``` 完整采集控制台: ```text http://127.0.0.1:3618 ``` 常用脚本: ```bash ./scripts/start_douyin_workbench.sh ./scripts/status_douyin_workbench.sh ./scripts/stop_douyin_workbench.sh ./scripts/cleanup_debug_ui.sh ``` 如果第一次使用,还需要先安装浏览器依赖: ```bash cd /Users/kris/code/StoryForge-gitea/scripts/douyin-browser-capture npm install npx playwright install chromium ``` 当前本地页面已经拆成两个入口: - `/workbench`:业务优先的 `Douyin Workbench`,可直接查看账号列表、商业化账号分析、快照详情、相似账号和对标关系 - `/`:完整浏览器辅助采集控制台,同时保留工作台能力 - 作品工作台支持按 `高分作品 / 最新作品 / 全部作品` 切换,并可按综合分、受欢迎程度、商业价值、发布时间、播放、点赞、分享、评论排序 - 作品列表支持 `视频 / 图文` 类型筛选,并可直接打开原作品链接 - 高分作品支持自动化分析,每条作品卡片下都会展示商业判断、复刻计划、运营动作和风险提醒 或者继续用命令行: ```bash 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 ```bash 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 ```bash cd /Users/kris/code/StoryForge-gitea cp .env.example .env docker compose up -d --build ``` 首次启动前,至少补齐这些配置: ```bash ORCHESTRATOR_SHARED_SECRET=your_strong_shared_secret BOOTSTRAP_SUPERADMIN_USERNAME=storyforge-admin BOOTSTRAP_SUPERADMIN_PASSWORD=your_strong_admin_password ``` 如果希望 Web 端打开后直接自动建会话,不让用户手动输入账号密码,再额外打开: ```bash WEB_AUTOLOGIN_ENABLED=1 WEB_AUTOLOGIN_ACCOUNT_USERNAME=your_existing_approved_username ``` 推荐直接指定一个已经存在且已审批通过的账号用户名,服务端会直接为该账号签发自动会话,不需要额外保存该账号密码。 如果你更希望复用 bootstrap 超级管理员口令,或者切到专门账号,也可以继续走密码模式: ```bash WEB_AUTOLOGIN_USERNAME=your_autologin_username WEB_AUTOLOGIN_PASSWORD=your_autologin_password ``` 如果要让本机模型网关 `cli-proxy-api` 自动提供 `GLM-5`,建议在启动前确保本机环境里存在: ```bash export DASHSCOPE_API_KEY=your_dashscope_key ``` 或者把它写进本地 `.env`。`./scripts/start_business.sh` 会自动生成 `data/cliproxyapi/config.yaml` 并把 `glm-5 -> GLM-5` 映射到本机网关。 如果 `collector` 跑在 Docker 里,建议保留: ```bash COLLECTOR_N8N_BASE_URL=http://n8n:5678 ``` 如果你单独在宿主机启动 `collector-service`,它读取的仍然是: ```bash N8N_BASE_URL=http://127.0.0.1:5670 ``` 默认会启动: - `collector-service`:`http://127.0.0.1:8081` - `n8n`:`http://127.0.0.1:5670` - `cli-proxy-api`:`http://127.0.0.1:8317` - 公网入口:`https://storyforge.hyzq.net/` 公网维护常用脚本: ```bash ./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`](/Users/kris/code/StoryForge-gitea/docs/WINDOWS_CUTVIDEO_OPERATIONS_2026-03-27.md) fnOS / NAS 局域网交付默认三步: ```bash ./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 校验整条链路。