内容分四块: 1、产品规划产出 —— MCN 短视频整合营销工作台的①段五份(1a 需求/1b 竞品/1c 画像/1d 策略/1e 场景)、②段两份(2a 功能/2b 布局)、③段界面(DESIGN.md 契约与令牌表 + mcn-workbench.html 原型 + 实测/会诊/审查三份 + 23 张闸门截图)。 2、开源竞品调研 —— 5 个内容工作台项目的取证原始件与 1b 系列分析文档。 3、参考资料 —— 竞品视频抽帧 1145 张 + 2 个源视频 + 功能点截图。 4、机制侧 —— 协作脚本与状态台账、工作区记忆日志、抽帧/OCR 脚本。 .gitignore 只排运行时日志、脚本备份副本与一次性探针输出,其余按原样入库。
19 KiB
19 KiB
目标执行状态 · 调研 5 个开源内容工作台项目并生成分析文档
目标目录:
执行会话/目标-调研5个开源内容工作台项目并生成分析文档-5199a6/台账(唯一权威):tmp/supervise-inbox/tasks.json| 目标:tmp/supervise-inbox/goal.json
一、目标与生命周期
- 目标:使用产品规划技能调研 5 个开源项目并生成分析文档。
- 生命周期:进行中。
- 项目 slug:
content-workbench(按任务说明「建议值」,未经用户另行指定)。
二、第 1 棒(已完成)
- 会话:
[执行]-开源项目调研-5项目清单与初步定位(id52ace70a-bd4a-4201-a7b0-62237c092375) - 做了什么:把 5 个仓库的元数据 + README 全文 + 文件树拉齐(GitHub 公开 REST API),产出「5 项目清单与初步定位」一份。
- 产物:
docs/pm/content-workbench/research/1b-竞品分析-5项目清单与初步定位.md - 原始证据:
取证/api/(*.repo.json/*.README.md/*.tree.json/postsider.ATTRIBUTION.md.txt等)+ 取证脚本取证/_fetch_repos.py - 取证时间:2026-10-07 16:13–16:17(CST)
第 1 棒的关键发现
- PostSider 是 Postiz 的 fork(
postsider/ATTRIBUTION.md逐字自述,AGPL-3.0)⇒ 4、5 两项同源,合成一份分析。 - 文到 AI 仓库不含业务源码(README 明示闭源;全仓仅 5 个文件)⇒ 无法做源码级分析。
- 许可分水岭:Easel / OpenCreator = Apache-2.0;Postiz / PostSider = AGPL-3.0。
三、第 2 棒(已完成)
- 会话:
[执行]-[开源项目调研]-Postiz与PostSider同源双形态分析(ida41bb3a3-1015-4a1c-9269-1fd75f998cb7) - 范围:按第 1 棒「四、下一棒该做什么」第 1 项 —— Postiz + PostSider 同源双形态分析(合成一份)。
- 产物:
docs/pm/content-workbench/research/1b-竞品分析-Postiz与PostSider同源双形态.md - 本棒新证据:
取证/api/fork/(19 件:apps/mcpREADME / 工具契约 / server.json / SDK / package.json / releases / 迁移证据等)+取证/api/fork/fork-diff.json(差异量化,可复算) - 本棒新脚本:
取证/_fetch_fork_evidence.py(补拉增量面)·取证/_fork_diff.py(两侧文件树差异量化) - 取证时间:2026-10-07 16:40–17:05(CST)
第 2 棒的关键发现(会改变后续棒次排期)
- 改动量远不止"换牌"(文件树级量化):两侧同路径文件 329 条,其中逐字节相同仅 92。PostSider 删掉
apps/extension(16)与libraries/react-shared-libraries(57)、前端src/components293→78、净增独立 MCP 包apps/mcp(46 文件)。 - 工程化代差:Prisma 由
db push升级为迁移体系(0 → 26 条迁移);测试由 0 → 94 个*.spec.ts(根级 jest 配置 2 → 16);后端路由 32→42、服务 19→28。 - PostSider 的增量面确实是 Agent 桥:MCP 独立成包
@postsider/mcp、19 个工具(13 读 / 6 写,源码级双证:README +tool-inventory.ts断言清单)、每工具四条风险注解;上游 Postiz 的 MCP 嵌在后端(chat/mcp.relay.service.ts),走"托管 endpoint + 15 个 agent 连接器"路线。 - 定价缺口已闭合:Postiz Cloud $29 / $39 / $49 / $99 每月;PostSider $20 / $35 / $45 / $90 每月(均 7 天试用;每档都含 API/SDK/MCP/Webhooks)。
- 新增未知项:真 fork 点查不到(GitHub 上未标记 fork、无 parent 指针);改动行数未做(tree API 不给行数)—— 见 §七。
四、第 3 棒(已完成)
- 会话:
[执行]-[开源项目调研]-Easel深度分析(ida4993b72-040e-49db-beb4-375f5201ff61,取自本会话$CODEBUDDY_SESSION_ID) - 范围:按第 2 棒「五、下一棒该做什么」第 1 项 —— Easel 深度分析(
ZJU-REAL/Easel,Apache-2.0)。 - 产物:
docs/pm/content-workbench/research/1b-竞品分析-Easel.md(37,520 B / 294 行) - 素材:只读复用第 1 棒已拉的
取证/api/easel.{repo.json,README.md,tree.json}(⛔ 未重复下载)+ 旁证(只读)参考资料/Easel_功能点与截图/ - 本棒新证据:
取证/easel/(17 件:官方文档 4 份skill-function-mapping.md/SKILL-SPEC.md/prompt-stack.md/known-issues.md+ 配置契约 6 件AGENTS.md/SOUL.md/pyproject.toml/.env.example/CHANGELOG.md/openclaw.json5+ 2 个代表性SKILL.md+ releases/tags/languages/contributors)|取证/easel.tree.stat.json - 本棒新脚本:
取证/_easel_tree_stat.py(文件树统计,可复算) - 取证时间:2026-10-07 17:06–17:19(CST);⚠️
raw.githubusercontent.com通道不稳(多文件000失败)⇒ 改用 GitHubcontentsAPI 取正文,17 件全部成功。
第 3 棒的关键发现
- 主体是"技能库"不是"排期工具":全仓 1002 blob,771 在
skills/;skills/openclaw/716 文件 / 114 个技能目录 / 114 个SKILL.md(源码级逐个数出);发布层只占 20/114。 - 三层加载是硬机制(
SKILL-SPEC.mdv0.3):Metadata 常驻 / Instructions 触发时 / Resources 按需,且硬规定SKILL.md≤200 行、领域知识外置references/;94 个技能写了溯源的EASEL-META.md。 - 能力数字有三处不一致,实测以 114 为准:文件树 114 / 能力地图正文 114 / 地图分层总览表相加 113(创作层列 51、正文实列 52)/ README 徽章 113(旧值);
CHANGELOG印证 112→113→114。 - 治理是源码级的,不只是文档:
content_guard.py(出站内容敏感信息 fail-closed、退出码 7;AI 措辞仅告警)+persona_gate.py(人设 <80 分只提醒不阻断)+validate_skills.py/validate_skill_commands.py(解析技能里的命令对照 argparse 检查漂移)。 - 发布路线=浏览器自动化,且自陈风险:README 明写「谨慎自动发布到小红书」;
skill-xhs-publisher内置反检测参数并提示测试号/小流量/人工复核。与 Postiz「官方 OAuth、不自动化」相反 ⇒ 同一条产品线不可混抄。 - 本棒暴露两处待核:①
CHANGELOG称 CI 跑 38 条技能自带测试,而实测skills/**/tests/仅 6 个文件 ⇒ 38 疑为用例数(未核实);②SKILL-SPEC的test1.prompt/.expected约定在整树零文件(弃用)。均已写入产物 §十四。
五、第 4 棒(已完成)
- 会话:
[执行]-[开源项目调研]-OpenCreator深度分析(会话名取自本棒派活原文;产物落点见下) - 范围:按第 3 棒「十四、下一棒建议」第 1 项 —— OpenCreator 深度分析(
krillinai/OpenCreator,Apache-2.0,默认分支master)。 - 产物:
docs/pm/content-workbench/research/1b-竞品分析-OpenCreator.md(57,550 B / 约 430 行) - 素材:只读复用第 1 棒已拉的
取证/api/opencreator.{repo.json,README.md,tree.top.json,tree.docs.json}(⛔ 未重复下载) - 本棒新证据:
取证/opencreator/(76 件:11 份分片文件树 + 62 份正文 + 3 份统计/日志)- 分片文件树 11 份:
.github/apps/assets/packages/resources/runtime/scripts/skills/template/docs/specs/docs(递归)—— 逐片truncated=false,整树完整(第 1 棒recursive=1中断的缺口已闭合) - 正文 62 份:
AGENTS.md· 根package.json/tsconfig.base.json/.env.example/pnpm-workspace.yaml/CONTRIBUTING.md·docs/(Runtime 设计蓝图、Runtime API v1、specs/图像 provider 设计、视觉组件规范、模板治理专文、计划任务运行手册与验收报告、superpowers 设计、中文 README 等 20 份)·packages/protocol/src/*17 份契约源码 +package.json·packages/skill-market/*5 份 ·skills/*8 份 ·runtime/krillinai/go.mod·apps/{daemon,web,desktop}/package.json
- 分片文件树 11 份:
- 本棒新脚本:
取证/_opencreator_tree.py(分片拉树)·取证/_fetch_opencreator_docs.py(正文批量拉取,raw 优先、失败回落 contents API)·取证/_opencreator_tree_stat.py(树统计 →取证/opencreator/opencreator.tree.stat.json,可复算) - 取证时间:2026-10-07 17:37–17:56(CST);⚠️ 本棒实测
raw.githubusercontent.com60/61 成功(1 件失败经 contents API 补齐)—— 与第 3 棒"raw 不稳"不同 ⇒ 该通道随时刻波动,脚本按双通道写。
第 4 棒的关键发现
- 路线与另 4 个项目全不同:它是「给创作者用的 Codex 外壳」—— README 与设计文档双证「不重新实现 Agent loop / Skills runtime / MCP runtime」,只做进程生命周期 + 事件归一化 + 持久化 + 调度 + UI(
codex exec --json+ stdin prompt + stdout JSONL)。 - 规模量级最大:2182 blob / 567 tree / 约 3.25 亿字节(源码级统计);
apps/1264 文件(daemon 702 / web 437 / desktop 120 / harness 5);.ts903 +.tsx187 +.go163;测试文件 416 个。 - 创作侧是真资产:
template/108 个模板条目(image-generation 79 + video-generation 28 + cover-generator 1);技能市场 52 条候选 / 10 个中文分类,每条带七项风险声明(requiresLogin / requiresApiKey / externalWrite / readsLocalFiles / commercialLicenseReview / privateDataRisk / notes)。 packages/protocol契约包是精华:protocolVersion 0.1.0、provider 白名单 17 条(其中codex-native与edge-tts零凭据,且image.provider默认值就是codex-native)、状态机 +expectedRevision+idempotencyKey三件套、专为"远端到底收没收"设unknown_remote_acceptance/abandoned_unknown两态。- 工程治理密度罕见:仓根
AGENTS.md(13,063 B)=验证分级铁律(P0/P1/P2)+"⛔ 不得过度验证"+"⛔ 不得用未执行的验证暗示无回归" + Creator 面板单一实现铁律 + Web/Desktop 一致性门禁(含构建产物哈希硬门) + 完成声明门禁。 - 已跑过一轮"专属会话"重构且留痕完整:
Schedule ↔ Thread一对一(schedule_task)、旧parallel全转queue、演练脚本pnpm release:verify-scheduled-task-upgrade(9 条验证 + 幂等复验)、灰度 8 项;验收自评PARTIAL / BLOCKED_ENV(仓库不含真实原生 Desktop Host)⇒ 对我方"多会话/机制类项目"参考价值最高的一份。 - 一处源码级留白:
skillMarketCatalog(已上架)与customSkills在源码里都是空数组 ⇒ "52 条有多少真上架"查不到(已入 §七缺口)。
五之二、第 5 棒(已完成)
- 会话:
[执行]-开源项目调研-文到AI项目分析(id1b5dce36-1d47-4661-b6e5-af6c7ad2e33e) - 范围:目标说明 §二 清单第 2 项
wendaoai/wendao-content-workbench。 - 产物:
docs/pm/content-workbench/research/1b-竞品分析-文到AI.md(31,523 B / 253 行) - 素材:只读复用第 1 棒
取证/api/wendao.*;本棒新增取证/wendao/(20 件:官网/隐私政策/sitemap/script + GitCode 更新仓stable.json/版本清单/树/releases 渲染页 + 各 API 读数) - 本棒新脚本:
取证/_fetch_wendao.py - 取证时间:2026-10-07 18:07–18:10(CST)
- 关键结论:真闭源(全仓 5 blob、
NOTICE.md声明 proprietary、languages空对象)⇒ 只能按文档级调研;产品侧 13 天发 11 版(0.0.113→0.0.123);独立更新清单(四平台 + sha256 + 升级策略)+ 发布助手「只填充不代发」两条最可搬。 - 🔴 口径裁定(用户 2026-10-07 18:27 逐字):「文到AI 通过说明文档调研就行 不需要源码」⇒ 已写入目标说明 §六之二,消解了第 5 棒留在
NEED-USER.md的待裁项。
五之三、第 6 棒(已完成 · 本轮 · 收口)
- 会话:
[执行]-开源项目调研-跨项目汇总对比(id47860f06-c51f-4c2a-b7ad-2a6362b8a675) - 范围:只做跨项目汇总对比文档(验收判据第 3 条)。
- 产物:
docs/pm/content-workbench/research/1b-竞品分析-跨项目汇总对比.md(40,392 B / 343 行) - 做法:只读复核前 5 棒产物 + 用
取证/原始 JSON / 文件复核读数(未做新源码取证、未改写任何前棒产物);横向对比按主任务七维度(定位/形态/技术栈/许可/活跃度/功能覆盖/可借鉴点/风险)+ 同源单列 + 「对内容工作台方向的选型与借鉴结论」。 - 本棒复核发现的跨棒冲突 4 条(均以原始取证为准,详见汇总文档 §十一):① Easel 技能数 113→114;② Postiz 树「截断前」措辞有误(
tree_truncated=false,完整);③ PostSider 连接器 33(README)vs 34(*.provider.ts实测);④ OpenCreator 模板条目 108(79/28/1)经原始树分片复算吻合,但派生件opencreator.tree.stat.json的template_entries_by_category全为 0(失真),须以原始分片为准。 - 取证时间:2026-10-07 18:31–18:5x(CST)
六、验收判据现状(与 goal.json 的 acceptance_state 对齐)
- 单项目分析文档齐全(5 个项目全覆盖,Postiz 与 PostSider 同源合并为一份并写明差异)—— 过(5 份文档覆盖 5 项目:总览 1 + Postiz/PostSider 合并 1 + Easel 1 + OpenCreator 1 + 文到 AI 1)
- 每份含产品定位与功能清单与可借鉴点 —— 过(第 1–5 棒产物均含三段)
- 一份跨项目汇总对比文档 —— 过(第 6 棒产物,本目标目录内)
- 每份标注来源链接与取证时间 —— 过(逐条标链接与取证时间,含本汇总文档)
- 产物全部落在本目标目录内 —— 过(6 份产物均在
执行会话/目标-…-5199a6/docs/pm/content-workbench/research/)
六之二、判据逐条自评(供检查会话复核 · 本轮新增)
口径:
goal.json的acceptance_state五条,逐条给「过/未过 + 一句依据」。⛔ 不只写「已完成」。
- 单项目分析文档齐全(5 项目全覆盖,Postiz 与 PostSider 同源合并为一份并写明差异)—— 过。依据:
docs/pm/content-workbench/research/下 5 份文档分别覆盖 5 个项目;同源一份为1b-竞品分析-Postiz与PostSider同源双形态.md,其 §二/§三写明 fork 关系与差异(文件树 329 同路径 / 92 逐字节相同)。 - 每份含产品定位与功能清单与可借鉴点 —— 过。依据:5 份文档各自设有「产品定位」「功能清单」「可借鉴点(按可搬性排序)」小节(汇总文档亦含 §五/§六/§九)。
- 一份跨项目汇总对比文档 —— 过。依据:本轮新增
1b-竞品分析-跨项目汇总对比.md(40,392 B),含七维度横向矩阵、同源单列、冲突复核、选型结论。 - 每份标注来源链接与取证时间 —— 过。依据:各文档末尾均列「来源链接 + 取证时间」表;本汇总文档 §十三列出 5 仓库链接与逐棒取证时间段。
- 产物全部落在本目标目录内 —— 过。依据:6 份产物与全部取证均在
执行会话/目标-调研5个开源内容工作台项目并生成分析文档-5199a6/内;未写回交付物/、docs/、工作区根。
七、下一棒该做什么(收口 → 仅剩非必须补强项,⛔ 本轮不顺手做)
目标 5 条判据已全部满足,主线收口。以下均为可选补强(部分属扩大取证面,须先问用户):
- Postiz ↔ PostSider 行级 diff(clone 两侧 +
git diff --stat):把第 2 棒的文件级量化升级为行级(成本:下载/时耗大)。 - OpenCreator 元数据面补齐:拉
releases/tags/contributors/languages四个 API(成本低)。 - Easel 114 个技能
layer源码级分布:批拉 114 个SKILL.mdfrontmatter 统计(第 3 棒遗留项,成本中)。 - 文到 AI 发布助手插件源码级核对:下载官方插件包(124,890 B)核对(⚠️ 扩大取证面,须用户点头)。
- OpenCreator
docs/plans/10 份实施计划的「计划 vs 实现」抽样比对(成本中高)。
八、遗留的取证缺口(⛔ 不许猜,后续棒次或用户决定是否补)
- Postiz ↔ PostSider 的 fork 点:GitHub 上
lumizone/postsider未标记为 fork、无 parent 指针 ⇒ 用 API 求不到。 - Postiz ↔ PostSider 的改动行数:tree API 只给 blob sha、不给行数 ⇒ 第 2 棒只做到文件级量化;行级 diff 需 clone 两侧(耗时大,建议单列一棒并先问用户)。
- PostSider「33 个活跃连接器」口径:仓库
*.provider.ts实数为 34、官网另写 "30+ networks" ⇒ 未逐条核对注册表。 - PostSider 是否有托管(云)服务:官网只给试用入口与自托管文档,未见独立托管定价/SLA 页 ⇒ 查不到。
- 各项目的用户量 / 下载量 / 营收:Postiz 自述 7M downloads(无口径),其余查不到;Easel 亦查不到(仓库无此口径,其项目主页
zju-real.github.io/Easel/未访问);OpenCreator 亦查不到(open-creator.ai主页本棒未访问,未拉 releases/tags)。 - (第 3 棒新增)Easel 的 4 条待核:①
CHANGELOG称 CI 跑 38 条技能自带测试,实测skills/**/tests/仅 6 个文件(均在skill-wechat-publisher)⇒ 38 疑为用例数,未逐条核对;② 114 个技能的layer源码级分布未做(层分布引用的是能力地图文档,而该表创作层 51 与正文实列 52 条不自洽);③SKILL-SPEC的test1.prompt/test1.expected约定在整树零文件(弃用,动机无记载);④.env.example的xhs-maas/agnes视频 provider 来源与可用性未核实。 - (第 3 棒新增)Easel 技能可用率无实测:只做静态源码级取证,未运行任何技能。
- (第 4 棒新增)OpenCreator 的 8 条待核:① 商业与规模证据全缺(主页/定价/用户量/营收/发行节奏,未拉
releases/tags/contributors/languages);② 技能市场"上架态"口径未核实(skillMarketCatalog与customSkills源码里都是空数组,catalog.ts的sourceCommit外部提交未访问);③docs/plans/10 份实施计划的落地率未核(计划口径 ≠ 已实现);④ 火柴人角色素材与contributors/*头像、stickman-remotion/assets音频的再分发许可未核(仓内只有 Apache-2.0 一份 LICENSE);⑤ 真实运行证据为零(未安装/未编译/未运行任何命令 ⇒ "十项工具可用""108 模板可跑"无实测支撑);⑥runtime/krillinai(Go 引擎 183 文件)只做结构与依赖级取证,未读业务实现;⑦ GitHublanguages字节口径未取(本棒"语言构成"是按文件数的扩展名口径,⛔ 与官方字节口径不可混用);⑧docs/development/5 份、ui-prototype-runtime-review.md、visual-component-guidelines.md、docs/plans/*正文未逐份读。