Brief、母稿与平台版本
先明确内容基线,再按平台生成和维护可追踪的变体。平台不是并列的页面或一堆表单,而是变体环节的参数,由同一份平台规范驱动。
结构化 ContentBrief
Brief 保存 topicId、受众、目标、核心论点、claims、evidence、examples、CTA、disclosures 和素材需求。事实 claim 必须至少关联一条 evidence;观点和推断要明确标注类型。
查找并恢复最近 Brief
- 进入“内容制作”后,页面会从当前运行时的真实持久化仓库读取最近更新的 Brief 摘要;桌面版使用本地 SQLite,Web 版只读取当前工作区的 PostgreSQL 数据。
- 可按 Brief ID、topicId、受众或目标搜索。列表最多显示 100 项,并按最近更新时间排序。
- 点击摘要后,系统仍会通过完整 Brief 读取接口恢复内容与工作流上下文;摘要本身不包含核心论点、claims、evidence 或 provider 输出。
- 如果列表刷新失败,当前编辑缓冲不会被清空。已知 Brief ID 输入保留在折叠的恢复入口中,只作为列表外对象的备用路径。
从 Brief 自动恢复 Canonical
- 从最近列表或已知 ID 读取 Brief 后,系统会用当前工作区和 Brief ID 在真实仓库中查找它唯一的 Canonical,不需要再记忆 draft ID。
- 找到时会一起恢复 Repository 保存的 draftId、currentRevisionId 和完整 revision 历史;这些身份不能由浏览器、时间戳或 AI 自行生成。
- 没有找到时会明确显示“尚未创建统一母稿”,并保留人工空白母稿和 provider 可用时的生成入口;这不是读取失败,也不会生成示例母稿。
- 跨工作区、重复根或损坏记录会 fail-closed,不会按更新时间任意挑选。读取错误不会覆盖当前 Brief 或未保存的本地编辑。
Canonical 母稿
- 从已保存 Brief 载入上下文,确认 topic 与来源。
- 使用 AI 生成或创建标记为“人工起稿”的空白母稿。Web 版的生成请求只会把 briefId、evidence 与 section plan 发送到同源服务端;账号身份由服务端会话解析,浏览器不能指定 provider、model、token 或操作人。
- 服务端会重新读取当前工作区的 Brief,验证 evidence 完整覆盖其来源、section plan 只引用现有 claim。生成等待发生在数据库事务外;返回后再核对 Brief version,并在一个短事务中原子写入唯一母稿、首个 revision、内容 hash 和审计事件。Brief 已变化或另一个请求正在生成时会拒绝提交,不会留下半份母稿。
- Web 运维环境只有同时显式设置
CONTENT_STUDIO_AI_PROVIDER=openai、CONTENT_STUDIO_OPENAI_MODEL和CONTENT_STUDIO_OPENAI_API_KEY才会启用 OpenAI Responses transport。服务端默认调用官方 Responses endpoint(https://api.openai.com/v1/responses),运维可用CONTENT_STUDIO_OPENAI_BASE_URL把它指向另一台兼容 Responses 协议的上游,该地址只允许 HTTPS、不得带账号信息、查询参数或 URL 片段,且只能写在服务端环境里;发送store: false,并严格限制输入、响应大小与输出结构;浏览器不能覆盖 endpoint、model 或 key,通用OPENAI_API_KEY也不会自动启用产品能力。 - 未配置或配置不完整时,生成保持 fail-closed 并返回
PROVIDER_UNAVAILABLE或固定配置错误;界面保留 Brief 和人工起稿路径,不会用示例内容或测试 adapter 假装生成成功。当前仓库已验证 transport 契约,但没有把测试响应或一次 HTTP 成功当作授权环境的真实生成验收。 - 按 section plan 编辑 hook、body、proof、cta 等区块,保存会产生新的 canonical revision。
- 已知 Draft ID 入口仅作为诊断与列表外恢复备用路径;未保存或 stale 状态下禁止覆盖当前编辑。
母稿是所有平台版本的共同来源。每次关键修改都会改变 revision 身份,旧审核不能自动覆盖新 revision;section 的新增、重排、重写和删除都要重新走审核。
从 AI 提案生成新 revision
- 先在内容制作页载入并保存 Brief 或 Canonical,确保编辑器没有未保存或 stale 的本地修改。
- 在右侧 AI 栏的 Agent 模式选择同一个对象,只勾选本轮允许修改的字段。Brief 目前支持 goal、audience、coreThesis 与 CTA;Canonical 只允许已选择的 section。
- 发送后先查看服务端按需计算的逐字段差异。提案仍绑定创建时的 revision;内容已经变化、Brief 已被 Canonical 使用、section 被锁定或策略/来源变化时不能写回。
- 二次确认分为两个动作:第一次点击只打开确认说明,第二次点击才请求服务端接受。成功后系统创建新 revision,并由编辑器使用服务端 receipt 中的 entity ID、revision ID 与 version 重新读取真实仓库内容。
- 编辑器显示“需重新审核”。本地未保存 buffer 不会被静默覆盖;若接受后内容又被其他操作推进,会提示核对最新 revision,且不得重复提交同一提案。
拒绝提案不会修改内容。刷新页面后,会话中的 proposal summary 仍可恢复;patch 只在查看单条提案或差异时读取,列表不会批量携带正文。
平台编辑器
恢复 Canonical 后,平台编辑器使用它的 canonicalDraftId 与 currentRevisionId 调用现有真实变体列表,继续找回各平台内容;不会另建一份不带 revision 的最近列表。编辑器展示平台字数、标签、图片、emoji 与禁用词约束,可以创建人工空白变体、编辑文本、生成 AI 草稿、查看严格响应和 revision 历史。平台规则来自统一 registry,不要在页面另写一套限制。
素材集合是绑定当前平台变体 revision 的 revision-bound readiness gate,不是所有平台都必须经过的固定检查点。policy 要求图片或其他媒体时,数量、权利、同意与 AIGC 状态不满足会阻止后续审核;policy 允许零素材时,空素材集合可以保持 ready,不应为了凑步骤上传无关文件。
变体环节的三种产物
同一个变体步骤会给出三种东西,它们的运行时并不相同。文本变体:网页端的生成、重试与再生成接口目前是 503 BUSINESS_UNAVAILABLE 桩,界面因此显示“当前运行时不可用”,不会把本地拼装的文本冒充成生成结果。封面候选:网页端与桌面端都能提交,走后台生成队列,一次多张按 batchId 分组;生图供应商只有 1024x1024、1024x1536、1536x1024 三档,没有任何一档等于图文卡片的画布。图文卡组:只有桌面端有卡片渲染通道,网页端该入口保持不可点并写明“图文卡组只在桌面端生成”,不提供点了没结果的按钮;3:4/1080×1440 的像素由本机确定性模板排印产生,不是模型出图。三者的产物默认都不发布——审核、人工批准与 dry-run 仍是独立门槛。详见 同步与知识库 的批量图文生产,以及 素材管理 的生成队列。
国内平台视觉模拟预览
在“创作 → 内容制作”的“平台编辑器”同一页面打开“视觉预览”,可切换小红书、抖音和视频号的设备画布。预览直接读取当前平台变体、素材绑定和 revision 状态,展示标题、正文、标签、绑定素材数量以及图片封面或视频 poster 类型;切换平台不会创建新的草稿或丢失未保存编辑。
这是产品内的模拟预览,用于检查内容结构和素材准备情况,不代表小红书、抖音或视频号的最终渲染、推荐流样式或审核结果。预览不上传、不抓取远程媒体、不调用发布器,也不会因为打开面板而产生网络副作用。素材必须来自已登记的安全投影并绑定当前 revision;素材缺失、类型不符或绑定过期时只显示可解释的占位状态。
视觉预览可在适配器未配置、账号未连接或 OAuth 未完成时使用,但这不等于可以真实发布。真实发布仍必须经过当前 revision 的审核、人工批准、日历冲突检查、dry-run/live gate 和幂等恢复流程;各平台真实执行器的可用性取决于宿主是否装配了对应发布器:桌面版装配后,小红书、抖音、B 站、闲鱼具备执行器,快手与微信视频号没有官方执行器,会明确返回不可用并保持 blocked/fail-closed,而不是退化为模拟成功。桌面版和 Web 版共享同一平台规则与 revision 契约,桌面版额外提供本地素材和宿主能力,不能绕过这些安全门。
断网恢复与错误区分
- 刷新最近 Brief 时如果网络或 Web 服务不可用,页面会显示错误,但已经恢复的 Brief、母稿与平台变体不会被清空。
- 网络恢复后点击“刷新选题、来源与 Brief”重新读取真实工作区数据;不要重复创建母稿或用已知 ID 绕过当前上下文。
- “没有母稿”表示仓库对当前 Brief 返回明确空结果;“加载失败”表示本次读取没有完成。两者的恢复动作不同,界面不会用示例内容填补。
- 受控验证已覆盖浏览器断网、双页面 CAS 和真实 Web 服务进程重启:服务停止时页面保留母稿与 revision,使用同一持久数据库和认证配置重启后无需重新登录,再次刷新即可恢复当前工作区内容。
保存与冲突处理
- 保存请求同时携带 expectedCurrentRevisionId 和 expectedVersion;服务端检测 stale revision 并返回冲突,而不是静默覆盖。
- 双页面 CAS 冲突时,后提交页面的本地 section buffer 会原样保留并暂停再次保存,不会自动采用另一页面的内容。
- 确认不再需要本地修改后,点击 stale 横幅中的“重新载入”;该显式重新载入会访问服务端,只有读取成功才采用最新 revision,失败仍保留本地文本。
- 平台变体必须保留 canonicalDraftId、platform 和 platformVariantRevisionId;变体或素材绑定改变后,审核快照必须重新生成。
AI 只负责起草和改写建议。待确认区的结果不会自动写入已发布版本,人工确认是保存和发布前的必要步骤。