- 新增智能选题引擎 `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` 中的头像文件路径问题,确保目录存在
50 lines
2.8 KiB
Markdown
50 lines
2.8 KiB
Markdown
## 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%),不因热点数据缺失而中断选题推荐流程
|