zhoujie 1ec520b47e feat(content): 新增智能选题引擎、批量创作和图文协同优化
- 新增智能选题引擎 `TopicEngine`,整合热点数据与历史权重,提供多维度评分和创作角度建议
- 新增内容模板系统 `ContentTemplate`,支持从 JSON 文件加载模板并应用于文案生成
- 新增批量创作功能 `batch_generate_copy`,支持串行生成多篇文案并自动入草稿队列
- 升级文案质量流水线:实现 Prompt 分层架构(基础层 + 风格层 + 人设层)、LLM 自检与改写机制、深度去 AI 化后处理
- 优化图文协同:新增封面图策略选择、SD prompt 与文案语义联动、图文匹配度评估
- 集成数据闭环:在文案生成中自动注入 `AnalyticsService` 权重数据,实现发布 → 数据回收 → 优化创作的完整循环
- 更新 UI 组件:新增选题推荐展示区、批量创作折叠面板、封面图策略选择器和图文匹配度评分展示

♻️ refactor(llm): 重构 Prompt 架构并增强去 AI 化处理

- 将 `PROMPT_COPYWRITING` 拆分为分层架构(基础层 + 风格层 + 人设层),提高维护性和灵活性
- 增强 `_humanize_content` 方法:新增语气词注入、标点不规范化、段落节奏打散和 emoji 密度控制
- 新增 `_self_check` 和 `_self_check_rewrite` 方法,实现文案 AI 痕迹自检与自动改写
- 新增 `evaluate_image_text_match` 方法,支持文案与 SD prompt 的语义匹配度评估(可选,失败不阻塞)
- 新增封面图策略配置 `COVER_STRATEGIES` 和情感基调映射 `EMOTION_SD_MAP`

📝 docs(openspec): 归档内容创作优化提案和详细规格

- 新增 `openspec/changes/archive/2026-02-28-optimize-content-creation/` 目录,包含设计文档、提案、规格说明和任务清单
- 新增 `openspec/specs/` 下的批量创作、文案质量流水线、图文协同、服务内容和智能选题引擎规格文档
- 更新 `openspec/specs/services-content/spec.md`,反映新增的批量创作和智能选题入口函数

🔧 chore(config): 更新服务配置和 UI 集成

- 在 `services/content.py` 中集成权重数据自动注入逻辑,实现数据驱动创作
- 在 `ui/app.py` 中新增选题推荐、批量生成和图文匹配度评估的回调函数
- 在 `ui/tab_create.py` 中新增智能选题推荐区、批量创作面板和图文匹配度评估组件
- 修复 `services/sd_service.py` 中的头像文件路径问题,确保目录存在
2026-02-28 21:04:09 +08:00

50 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## Requirements
### Requirement: 智能选题推荐入口
系统 SHALL 提供 `TopicEngine` 类,封装选题推荐的完整逻辑,通过 `recommend(count=5)` 方法返回推荐选题列表。
#### Scenario: 推荐选题返回
- **WHEN** 调用 `TopicEngine().recommend(count=N)`
- **THEN** 系统 SHALL 返回包含 N 个选题字典的列表,每个字典包含 `topic`(选题名称)、`score`(综合评分)、`angles`(创作角度列表)字段
#### Scenario: 推荐数量边界
- **WHEN** `count` 小于 1 或大于 20
- **THEN** 系统 SHALL 将 `count` 强制修正至合法范围 [1, 20],不抛出异常
### Requirement: 多维度选题评分
每个候选选题 SHALL 从 4 个维度进行评分,各维度满分如下,合计 100 分:
1. **热点相关度**`hotspot_relevance`):满分 30 分,与当前热点话题的关联程度
2. **账号契合度**`account_fit`):满分 30 分,与账号人设和内容风格的契合程度
3. **内容稀缺度**`content_scarcity`):满分 20 分,在账号历史内容中的稀缺程度(越少发过越高)
4. **互动潜力**`engagement_potential`):满分 20 分,预估点赞/评论/收藏的综合表现
#### Scenario: 评分维度完整
- **WHEN** 选题推荐返回结果
- **THEN** 每个选题字典 SHALL 包含 `score_detail` 字段,其中包含上述 4 个子维度的分值
#### Scenario: 账号历史影响稀缺度评分
- **WHEN** 账号近 30 天内已发布过相同或极相似选题(语义相似度 ≥ 80%
- **THEN** 该选题的 `content_scarcity` 评分 SHALL 不超过 5 分
### Requirement: 选题附带创作角度
每个推荐选题 SHALL 附带 2-4 个差异化的创作角度(`angles`),每个角度包含`angle_name`(角度名称)和 `hook`(开头 hook 句)。
#### Scenario: 创作角度多样性
- **WHEN** 同一选题返回多个创作角度
- **THEN** 每个角度 SHALL 采用不同的叙事视角(如:亲身体验 vs 对比测评 vs 干货攻略)
#### Scenario: Hook 句格式
- **WHEN** 返回 `hook` 字段
- **THEN** hook 句 SHALL 为 15-30 字的小红书风格开头,包含至少一个情绪词或疑问词
### Requirement: 热点数据整合
`TopicEngine` SHALL 调用 `HotspotService` 获取当日热点数据,并将热点话题权重纳入选题评分的 `hotspot_relevance` 维度。
#### Scenario: 热点服务可用
- **WHEN** `HotspotService` 正常返回热点数据
- **THEN** 系统 SHALL 将热点话题与候选选题做语义匹配,高匹配选题的 `hotspot_relevance` 评分加成不低于 10 分
#### Scenario: 热点服务不可用
- **WHEN** `HotspotService` 调用失败或返回空数据
- **THEN** 系统 SHALL `hotspot_relevance` 维度评分统一设为 15 分(满分 50%),不因热点数据缺失而中断选题推荐流程