feat: add freshrss openclaw pipeline and clean repo
This commit is contained in:
@@ -2,78 +2,56 @@
|
||||
|
||||
## 当前状态
|
||||
|
||||
项目当前处于 `Content Extract MCP` 的 MVP 完成阶段,已验证 `规则过滤 + Markdown sink`,下一阶段将转向 `OpenClaw 日报聚合 + 知识沉淀` 改造。
|
||||
项目当前已经进入“可交付给 OpenClaw 调用”的阶段。
|
||||
|
||||
已完成:
|
||||
当前主链路:
|
||||
|
||||
- [x] 明确整体阅读流链路
|
||||
- [x] 明确 `source -> item -> document/article` 的数据抽象
|
||||
- [x] 明确 `MCP 负责提取,LLM 负责摘要` 的职责边界
|
||||
- [x] 搭建 Python MCP 服务骨架
|
||||
- [x] 实现 `extract_url_content`
|
||||
- [x] 实现 `extract_item_content`
|
||||
- [x] 完成标题与正文提取
|
||||
- [x] 完成质量标记与结构化错误输出
|
||||
- [x] 用参考文章完成真实提取测试
|
||||
- [x] 输出结构化提取 JSON 文件
|
||||
- [x] 设计并迭代 LLM 摘要 prompt
|
||||
- [x] 验证 LLM 输出的 `result.json` 基本符合预期
|
||||
- [x] 已封装 LLM 摘要校验 workflow skill
|
||||
- [x] 接通 FreshRSS 上游并完成 `item` 映射
|
||||
- [x] 跑通 `FreshRSS -> item -> content extraction` 单条链路
|
||||
- [x] 定义规则过滤层 schema
|
||||
- [x] 实现第一版规则引擎与过滤 MCP tool
|
||||
- [x] 定义 sink 输入输出 schema
|
||||
- [x] 实现第一版 Markdown sink 与本地写入脚本
|
||||
- [x] 明确下一阶段主路径应调整为 `候选材料 -> 日报 -> 人工确认 -> 知识沉淀`
|
||||
- [x] 明确 `ArticleCandidateRecord` 与 `OpenClawCandidateInput` 需要分层设计
|
||||
`FreshRSS 未读 -> RSS 内容提取 -> LLM 总结 -> 规则过滤 -> OpenClaw delivery payload`
|
||||
|
||||
当前已经完成:
|
||||
|
||||
- [x] FreshRSS `greader` API 接入
|
||||
- [x] `entry -> item` 标准化映射
|
||||
- [x] RSS-first 内容提取策略
|
||||
- [x] LLM 摘要与校验闭环
|
||||
- [x] 第一版规则引擎
|
||||
- [x] `ArticleCandidateRecord` / `OpenClawCandidateInput` 分层
|
||||
- [x] `OpenClawDeliveryPayload` 批量投递结构
|
||||
- [x] 最终 payload 成功后才标记 FreshRSS 已读
|
||||
- [x] MCP 工具 `run_freshrss_openclaw_pipeline`
|
||||
- [x] 默认精简输出模式
|
||||
|
||||
---
|
||||
|
||||
## P0 - 近期必须完成
|
||||
## P0 - 交接前后最优先
|
||||
|
||||
- [x] 为 LLM 摘要结果定义正式 JSON Schema
|
||||
- [x] 增加一个本地校验脚本,自动校验 `result.json` 是否符合 schema
|
||||
- [x] 把“提取 JSON -> LLM 摘要 JSON”串成一个标准化本地流程
|
||||
- [x] 清理或移除当前已不再使用的 `src/summary_mcp/core/summarizer.py`
|
||||
- [x] 更新旧设计文档中仍然残留的 `summary mcp` 描述,避免和当前实现冲突
|
||||
- [x] 为 OpenClaw 补齐交接文档
|
||||
- [x] 将 MCP 工具作为统一生产入口
|
||||
- [x] 将默认输出收敛为最小必要文件
|
||||
- [ ] 设计 OpenClaw webhook / delivery payload 的主动推送方式
|
||||
- [ ] 明确 OpenClaw 侧如何注册和启动本 MCP 服务
|
||||
|
||||
---
|
||||
|
||||
## P1 - 下一阶段推进
|
||||
|
||||
- [x] 把上游 RSS 聚合结果映射成标准化 `item`
|
||||
- [x] 补充 `item` 的实际样例文件
|
||||
- [x] 跑通 `FreshRSS -> item -> content extraction` 单条链路
|
||||
- [x] 定义规则过滤层的输入输出 schema
|
||||
- [x] 设计知识库入库格式
|
||||
- [x] 在文档层定义 `ArticleCandidateRecord`、`OpenClawCandidateInput` 与 `DailyDigest`
|
||||
- [x] 在代码里把当前 `article_candidate` 重新定位为 `ArticleCandidateRecord`
|
||||
- [x] 新增 `OpenClawCandidateInput` 模型与转换逻辑
|
||||
- [x] 给 `OpenClawCandidateInput` 增加 `canonical_url` 与 `language`
|
||||
- [x] 输出面向 OpenClaw 的精简 `OpenClawCandidateInput` 批量载荷
|
||||
- [x] 将“人工确认状态”拆成独立模型,不回写到 candidate 输入对象
|
||||
- [ ] 设计 OpenClaw webhook / delivery payload 的实际传输方式
|
||||
- [ ] 设计“人工确认后再沉淀知识库”的状态流转
|
||||
- [ ] 给提取结果增加更多正文清洗策略,比如尾部噪音清理
|
||||
- [ ] 收敛 `paywall` 误判规则,降低中文文本误报
|
||||
- [ ] 细化过滤规则并引入更多个性化上下文
|
||||
- [ ] 收敛 `paywall` 误判规则,避免仅因正文提到“付费/收费”就进入高优先级 `review`
|
||||
- [ ] 增加批量 run 的保留策略与历史清理策略
|
||||
- [ ] 为 OpenClaw 补一份更正式的 MCP 调用示例和接线说明
|
||||
|
||||
---
|
||||
|
||||
## P2 - 后续增强项
|
||||
## P2 - 后续增强
|
||||
|
||||
- [ ] 将当前 `Markdown sink` 调整为 debug / fallback 能力,而非主路径
|
||||
- [ ] 增加按天批量收集 `ArticleCandidateRecord` 的脚本
|
||||
- [ ] 让 OpenClaw 聚合候选内容并生成日报
|
||||
- [ ] 将日报写入知识库,并同步生成面向用户的汇报消息
|
||||
- [ ] 增加批量提取能力
|
||||
- [ ] 引入 Playwright 作为动态页面兜底抓取方案
|
||||
- [ ] 支持更多 `content_kind`,例如 `release`、`thread`、`video`
|
||||
- [ ] 将 `Markdown sink` 进一步降级为 debug / fallback 能力
|
||||
- [ ] 增加按天聚合 `ArticleCandidateRecord` 的批处理能力
|
||||
- [ ] 让 OpenClaw 聚合候选内容并生成日级摘要
|
||||
- [ ] 将日级摘要写入知识库,并同步生成面向用户的日报消息
|
||||
- [ ] 支持更多 `content_kind`
|
||||
- [ ] 增加提取缓存、重试和更细粒度日志
|
||||
- [ ] 重命名包和项目名,从 `summary_mcp` 调整为更符合当前职责的名称
|
||||
- [ ] 与 OpenClaw 做更正式的工作流编排整合
|
||||
- [ ] 扩展 Notion / Webhook / 其他 sink
|
||||
- [ ] 整理历史 rerun 目录与调试产物保留策略
|
||||
|
||||
---
|
||||
|
||||
@@ -81,19 +59,16 @@
|
||||
|
||||
优先做这三件事:
|
||||
|
||||
1. 设计 OpenClaw webhook / delivery payload 的实际传输方式
|
||||
2. 收敛 `paywall` 误判规则
|
||||
3. 设计人工确认后进入知识库的状态流转
|
||||
1. 明确 OpenClaw 侧的 MCP 接线方式
|
||||
2. 设计主动投递 / webhook 机制
|
||||
3. 收敛规则误判,尤其是 `paywall` 相关启发式
|
||||
|
||||
---
|
||||
|
||||
## 收束上下文后建议先看
|
||||
## 交接时优先阅读
|
||||
|
||||
- docs/current/context-reset-brief.md
|
||||
- docs/openclaw/openclaw-candidate-input-field-spec.md
|
||||
- docs/openclaw/openclaw-delivery-payload-spec.md
|
||||
- docs/openclaw/openclaw-daily-digest-refactor.md
|
||||
- docs/openclaw/article-candidate-daily-digest-schema.md
|
||||
- docs/design/filter-rule-engine-design.md
|
||||
- docs/design/markdown-sink-design.md
|
||||
- TODO.md
|
||||
- `README.md`
|
||||
- `docs/openclaw/openclaw-handoff.md`
|
||||
- `docs/openclaw/openclaw-candidate-input-field-spec.md`
|
||||
- `docs/openclaw/openclaw-delivery-payload-spec.md`
|
||||
- `docs/current/context-reset-brief.md`
|
||||
|
||||
Reference in New Issue
Block a user