From 5b8df317efd5ac296afb08d35fab8dae19d3c54f Mon Sep 17 00:00:00 2001 From: zhuyongxin Date: Mon, 30 Mar 2026 18:44:30 +0800 Subject: [PATCH] Add article-deep-summary skill and enrich article summary prompt - Create skills/article-deep-summary/SKILL.md and agents/openai.yaml - Relax prompt constraints to allow 2-4 sentence elaboration per field - Add validation output for reference article - Update plan checklist as completed --- outputs/prompts/article-summary-prompt.txt | 12 +- .../信息过载时代,我的漏斗式阅读工作流.md | 34 ++++++ .../extracted/test-single.extracted.json | 1 + plans/article-deep-summary-skill.md | 12 +- skills/article-deep-summary/SKILL.md | 113 ++++++++++++++++++ .../article-deep-summary/agents/openai.yaml | 3 + 6 files changed, 160 insertions(+), 15 deletions(-) create mode 100644 outputs/reference/article-summaries/信息过载时代,我的漏斗式阅读工作流.md create mode 100644 outputs/reference/extracted/test-single.extracted.json create mode 100644 skills/article-deep-summary/SKILL.md create mode 100644 skills/article-deep-summary/agents/openai.yaml diff --git a/outputs/prompts/article-summary-prompt.txt b/outputs/prompts/article-summary-prompt.txt index 75ebbc6..320fa3b 100644 --- a/outputs/prompts/article-summary-prompt.txt +++ b/outputs/prompts/article-summary-prompt.txt @@ -11,16 +11,16 @@ { "title": "文章标题(与原文一致)", "url": "文章 URL(与原文一致)", - "core_conclusion": "作者最核心的结论,1-2 句,精准概括", - "main_argument": "文章的主要论点或主张,可展开,允许多句", + "core_conclusion": "作者最核心的结论,2-4 句,精准概括,包含核心判断和支撑依据", + "main_argument": "文章的主要论点或主张,充分展开,可包含推理链条和论证结构", "key_methods": [ - "关键方法、机制或技术手段,每条一句,3-6 条;无相关内容时返回空数组" + "关键方法、机制或技术手段,每条 2-4 句展开说明原理或运作方式,3-6 条;无相关内容时返回空数组" ], "important_details": [ - "值得记录的细节、数据或案例,每条一句,3-6 条;无相关内容时返回空数组" + "值得记录的细节、数据或案例,每条 2-4 句补充背景和意义,3-6 条;无相关内容时返回空数组" ], "reusable_insights": [ - "可复用于其他场景的启发或观点,2-4 条" + "可复用于其他场景的启发或观点,每条 2-3 句说明适用场景和具体做法,2-4 条" ], "keywords": [ "具体实体、工具名、方法名,5-8 个" @@ -30,7 +30,7 @@ ], "category": "内容分类,从以下选项中选择一个:资讯 / 方法论 / 工具实践 / 观点评论", "worth_keeping": true, - "reason": "沉淀理由,一句话说明为什么值得长期保留" + "reason": "沉淀理由,2-3 句说明为什么值得长期保留,以及未来什么场景下可以回看" } 注意: diff --git a/outputs/reference/article-summaries/信息过载时代,我的漏斗式阅读工作流.md b/outputs/reference/article-summaries/信息过载时代,我的漏斗式阅读工作流.md new file mode 100644 index 0000000..c8e9353 --- /dev/null +++ b/outputs/reference/article-summaries/信息过载时代,我的漏斗式阅读工作流.md @@ -0,0 +1,34 @@ +# 信息过载时代,我的漏斗式阅读工作流 + +Source: https://shawnxie.top/blogs/tools/read-flow-2026.html +Category: 方法论 + +## 核心结论 +在信息过载时代,个人信息处理的核心目标不是获取更多信息,而是通过分层过滤和沉淀机制,稳定地吸收、判断和沉淀真正有价值的内容。作者认为,一个有效的个人信息系统应该是一个“漏斗”,而非“桶”,其关键在于将分散的处理环节串联成闭环,让信息在向下流动的过程中不断收窄,最终只留下值得进入长期记忆的部分,并能通过沉淀内容反向优化筛选逻辑。 + +## 主要论点 +文章主张,应对信息过载不应依赖单一工具或追求全自动处理,而应构建一套分层、闭环的“漏斗式”个人信息系统。该系统以RSS等可控信息源为起点,通过聚合、预处理、AI精选、人工精读、知识沉淀和轻量反馈等多个层级,逐步过滤噪音、提炼精华,并将沉淀的高价值内容转化为个性化信号,反向优化上游筛选。其核心论点是:信息处理的难点在于串联分散环节,真正的价值在于实现“上游宽广、中游稳定、下游精准、回流轻柔”的认知加工流程,使人从被动接收者转变为拥有个性化认知处理系统的主人。 + +## 关键方法 / 机制 +- 信息源归一化:以RSS为主信息基础设施,利用RSSHub、wewe-rss、nitter等工具或自定义脚本,将公众号、社区、社交平台等多样信息源统一转换为RSS或类feed格式,确保下游处理环节输入格式的稳定和统一。 +- 分层处理流程:设计清晰的多层处理架构。1) 用FreshRSS作为统一聚合池,管理所有订阅源,充当缓冲层。2) 用Digest模块进行预处理,完成URL去重、相似内容去重、正文抓取、质量检查、噪音过滤、摘要生成等任务,将原始信息整理为可判断对象。3) 用Daily Review进行AI精选,由LLM将预处理后的内容按固定栏目(如今日大事、变更与实践等)结构化,生成重点突出的日报。4) 设置人工精读环节(Human in the loop),由人最终判断内容的长期价值。5) 用Lumina知识库进行长期沉淀。6) 基于沉淀内容构建轻量兴趣画像,作为辅助信号轻微影响上游排序,形成闭环。 +- 自动化编排与集成:使用OpenClaw作为自动化编排层,通过自然语言描述诉求,串联定时触发、外部工具调用(如FreshRSS API)、与飞书/Lumina的交互、AI技能调用等任务,实现整个工作流的自动化运行和快速迭代,降低了构建完整系统的初期门槛。 + +## 重要细节 +- FreshRSS的定位与作用:作者强调FreshRSS并非日常阅读工具,而是作为“中间水库”的聚合池。其核心作用是统一管理信息源格式、为下游环节提供稳定且无需直接联网的内容池、以及确保信息处理的时间连续性,避免了碎片化处理,是实现“有边界的信息处理”的关键缓冲层。 +- Digest预处理的具体任务:Digest模块承担了将“海量候选内容转化为可判断对象”的重任。其具体任务包括URL精确去重、相似内容去重、正文抓取、质量检查、噪音过滤、摘要生成和初步排序。这一环节大幅减少了标题党、重复报道和无效数据,显著降低了后续人工筛选的认知成本,是提升整个系统效率的基础。 +- Daily Review的栏目化设计:AI精选环节(Daily Review)并非简单聚合摘要,而是通过预设固定栏目进行结构化编辑。栏目包括“今日大事”、“变更与实践”、“安全与风险”、“开源与工具”、“洞察与数据点”、“主题深挖”等,将信息分配到不同的“认知槽位”,使最终产出更像一份重点突出的个性化日报,而非信息堆砌。 +- 轻量反馈与兴趣画像设计:为避免系统演变为封闭的“信息茧房”或过度迎合的推荐引擎,作者刻意设计了“轻量”的兴趣画像逻辑。它仅从长期精读主题、高价值信息源、偏好内容格式、Lumina存入内容类型等维度学习,作为辅助信号轻微影响Digest和Daily Review的排序,目标是减少无效判断,同时保留关注公共重要性和探索未知的空间。 +- 沉淀价值的拓展方向:信息沉淀的终点不仅是存储,还包括价值再生产。作者实践了两个方向:1) 周刊生成:基于一周的Digest、Daily Review和Lumina内容,生成带有个人筛选痕迹和深度分析的周刊,识别长期信号与短期噪音。2) 主题文章生成:系统识别一段时间内反复出现并被多次沉淀的主题(如AI Agent趋势),将其发展为可深入输出的长文主题,将离散信息流转化为结构化知识资产。 + +## 可复用启发 +- 构建分层过滤的认知加工流程:在处理任何海量输入(如邮件、任务、学习资料)时,都可以借鉴“漏斗”思维。设计从“广泛捕获”到“逐步收窄”的多层处理机制,明确每一层的职责(如聚合、粗筛、精筛、决策、沉淀),而非试图一次性处理所有信息,这能大幅降低认知负担并提升处理质量。 +- 坚持“人在回路”的核心价值判断:在自动化系统中,尤其是在知识管理领域,最关键的长期价值判断(如“什么值得长期留存”、“什么对未来有深远影响”)不应完全外包给算法。应像本文一样,在流程的关键节点(如进入知识库前)设置人工确认环节,确保系统的输出最终服务于人的深度思考和决策。 +- 利用轻量反馈构建良性闭环系统:在设计个性化系统时,应避免构建强反馈、易导致信息茧房的推荐引擎。可以借鉴本文的“轻量引导”思路,仅从最核心、最长期的行为数据(如最终沉淀内容)中提取少量信号,温和地优化上游流程,在提升效率的同时保持系统的开放性和探索性。 +- 以“沉淀和再生产”作为流程终点:信息或知识管理的目标不应止步于“读完”或“保存”。应思考如何将处理后的高价值内容进一步转化为可复用的资产,例如定期生成汇总报告(如周刊)、识别并发展跨时间维度的核心主题、或将内化知识用于指导实践和输出,从而实现知识的增值和循环。 + +## 关键词 +RSS、FreshRSS、OpenClaw、Lumina、RSSHub、wewe-rss、nitter、Digest + +## 主题 +知识管理、个人信息处理、工作流设计、自动化、阅读方法 diff --git a/outputs/reference/extracted/test-single.extracted.json b/outputs/reference/extracted/test-single.extracted.json new file mode 100644 index 0000000..3e070b7 --- /dev/null +++ b/outputs/reference/extracted/test-single.extracted.json @@ -0,0 +1 @@ +{"results": [{"item": {"item_id": "test-001", "title": "信息过载时代,我的漏斗式阅读工作流", "url": "https://shawnxie.top/blogs/tools/read-flow-2026.html"}, "extraction": {"article": {"extract_id": "sha256:1ee177246bce46534c81718bee693fea43a4b491f545e61b3c41f22e20994057", "item_id": "test-001", "source_id": null, "url": "https://shawnxie.top/blogs/tools/read-flow-2026.html", "title": "信息过载时代,我的漏斗式阅读工作流", "author": null, "published_at": null, "language": null, "content_kind": "article", "plain_text": "信息过载时代,我的漏斗式阅读工作流\n这两年我越来越强烈地感觉到,信息问题早就不是获取不到,而是处理不过来。\n真正让我疲惫的,不是没东西看,而是每天都有太多东西值得看:公众号文章、技术博客、GitHub Release、AI 新闻、社区讨论、长文、短讯、碎片化观点等等,全都在争夺我的注意力。\n如果不做点什么,一个人的信息生活很容易退化成这样:\n- 收藏夹里躺满了文章,真正读完的却寥寥无几\n- 每天浏览大量内容,能留在脑子里的却屈指可数\n- 输入看似充实,输出却异常薄弱\n- 以为自己一直在吸收信息,实际上只是在不同窗口间疲于切换\n2026年,我开始认真整理自己的一套信息处理工作流。我不需要大而全的平台,也不想要那种号称能“一键替我读完互联网”的 AI 产品。\n我只需要一套围绕自己运转的信息吸收漏斗:既能尽可能广泛地捕捉信息,又能提前过滤掉噪音和重复内容,只把真正值得投入时间的内容呈现在我面前。更重要的是,这套系统还要能将我精读后的高价值内容沉淀下来,反过来优化下一轮的信息筛选。\n信息处理不追求看得更多,而是在于更稳定地吸收、判断和沉淀。\n这篇文章,我将把这套工作流思路完整写下来,包括:\n- 为什么我要这样做\n- 它是怎么搭起来的\n- 每一层分别承担什么职责\n- 未来优化方向\n如果你也在被信息过载折磨,或者你已经有不少输入工具,却还是觉得每天看了很多,脑子里没留下什么,那也许这篇文章会有点参考价值。\n为什么要做信息吸收漏斗?\n我以前也尝试过很多方法:\n- 订阅很多 RSS,然后每天刷\n- 把值得看的东西先扔进稍后阅读\n- 用收藏、标签、笔记软件把文章存起来\n- 靠搜索和回忆去找以前读过的内容\n这些工具各有用处,但通常只能解决信息处理中的某一个环节。而个人信息处理真正的难点,从来都不在于单点突破,而在于如何将这些分散的环节串联起来。信息系统如果不能同时解决这两个问题,就很容易失控:\n输入太多,内容太杂\n几乎每一个你关心的领域,都在持续产生新内容。技术突破、产品迭代、AI进展、工具更新、商业动态、研究成果、行业变化……\n而且在未经过滤之前,重要新闻、工具发布、经验复盘、广告软文、标题党、重复报道等往往都混在一起,让人难以分辨。\n如果每一条内容都需要你从零开始判断其价值,那日积月累下来的认知负担会非常高。很多时候,人真正感到疲惫的不是读一篇长文,而是反复做这些微小但无意义的判断:\n- 这篇文章值不值得点开?\n- 这条消息是不是和刚才那条重复?\n- 这个标题是不是在夸大其词?\n- 这条内容到底在说什么?\n- 这篇文章我只是需要了解一下,还是值得保存?\n缺少精读回路\n很多内容看完就过去了,既没有标记,也没有沉淀,更没有真正融入自己的知识体系。\n如果信息系统永远只知道最新内容是什么,却不知道什么内容真正对你有帮助,那最多只能算是一个信息输送管道,而不是一个能越来越懂你的个性化系统。\n所以我要的不是做一个更强的信息池,而是做一个更稳的信息漏斗。\n桶的思路是往里装更多,漏斗的思路是让信息在往下走的过程中不断收窄,最后留下真正值得进入大脑和长期记忆的部分。\n从实践效果来看,这套漏斗式信息处理工作流至少给我带来了几个显著的变化:\n- 我不再需要每天从海量标题中艰难地筛选重点内容\n- 低质量和重复的信息大部分在上游就被过滤掉了\n- 真正值得精读的内容,会在更靠后的环节中呈现在我面前\n- 我读过并认为有价值的内容,终于开始能够反过来优化后续的筛选逻辑\n不是追求更快地刷完信息,而是实现更稳定地吸收知识。\n为什么基于 OpenClaw 搭建?\n由于流程尚处探索阶段,选择先用 OpenClaw 将整条链路串联起来,让系统先运行起来,验证可行性,发现问题后再逐步优化和完善。\nOpenClaw 主要扮演编排层的角色,负责以下工作:\n- 定时触发各类任务\n- 串联不同的外部工具和系统\n- 与飞书文档进行交互\n- 与 Lumina 知识库进行联动\n- 在需要的环节引入 AI 进行结构化内容生成\n这种方式起步快、迭代快,非常适合边运行边优化,不需要一开始就投入大量精力构建完整的前后端系统。\n如果你也想搭建一套类似的信息处理流程,需要做这些准备:\n1. 可持续维护的信息源\n这是整个系统的上游基础,需要先想清楚几个问题:\n- 自己真正长期关注的主题领域是什么\n- 这些领域的主要信息来源有哪些\n- 哪些信息源值得长期订阅,哪些只是偶尔查看即可\n这一步不需要追求大而全,但要尽量保持稳定和高质量。\n如果你还没有构建自己的信息源,可以先参考我收集的 RSS 订阅源。\n2. 统一的聚合池\n我选择的聚合池是 FreshRSS,一个开源的RSS阅读器,支持多平台,支持自定义订阅,内容分类管理和API,非常适合用来进行内容存储和同步。\n它并非最终阅读工具,而是信息汇聚的中转站,让所有信息源先汇聚到同一个地方,形成可持续消费的内容候选池。\n3. 自动化编排层\n这是 OpenClaw 最能发挥价值的地方,极大地降低了自动化流程实现的难度,通过自然语言描述诉求,在对话中逐步落地想法。我主要用它来完成以下任务:\n- 定时执行 digest(自定义的预处理Skill)\n- 定时执行 daily-review(自定义的内容精选Skill)\n- 发布飞书文档\n- 调用 Lumina(个人开源的知识库项目)\n- 串联各个技能和脚本\n4. 长期知识沉淀层\n在我的工作流中,这一层使用 Lumina——个人开发的信息管理工作台。当然也可以使用别的笔记工具,如Notion、Obsidian等。\nLumina 只承接我经过筛选后确认值得长期保留的优质内容,这一步直接决定了后续反馈机制的质量。\n一个系统最终能学到什么,很大程度上取决于你为它提供了什么样的正反馈样本。\n信息处理工作流\n一句话描述:用 RSS 尽可能广泛地捕捉信息,用 FreshRSS 进行稳定聚合,用 Digest 完成预处理,用 Daily Review 实现每日精选,通过人工精读判断内容的长期价值,用 Lumina 进行知识沉淀,最后将这些沉淀的价值反向转化为轻量的个性化信号。\n这套流程的核心优势不是追求全自动,而是在于分层处理的设计理念。这意味着:\n- 并非所有信息都值得投入时间精读\n- 并非所有信息都值得长期留存\n- 并非所有信息都需要进行个性化加权\n- 并非所有信息都适合直接作为输出内容\n一旦层次划分清晰,系统就不会退化为单一维度的推荐流,而会演变成一个真正的认知加工流程。漏斗的真正价值不在于让信息越来越少,而在于实现了这几个关键目标:\n- 上游宽广:确保不会错过真正重要的信息变化\n- 中游稳定:有效过滤噪音,避免其直接干扰注意力系统\n- 下游精准:让我不必在不值得精读的内容上浪费时间\n- 回流轻柔:通过轻量反馈机制,避免系统演变成封闭的信息茧房\n个人信息系统核心能力不是如何接入更多信息源,而是要明确:哪些信息值得进入系统,哪些信息值得投入时间精读,哪些内容值得长期留存,哪些知识最终真正融入了你的思考和行动?\n当能够清晰地回答这些问题时,就不再是互联网信息的被动接收者,你将拥有一套真正属于自己的认知处理系统。接下来将按顺序详细介绍每一层的工作原理。\n信息源:以 RSS 为主,但不局限于原生 RSS\n整个系统的最上游是信息源,主要依赖 RSS。\nRSS 是最被低估的个人信息基础设施。其天然符合个人信息系统最核心的几个要求:\n- 订阅权完全掌握在自己手中\n- 信息来源清晰明确\n- 更新内容结构化\n- 不受平台推荐算法直接支配\n- 便于程序接入和自动化处理\n然而在现实中,有一个不可避免的问题:并非所有值得关注的信息源都提供 RSS 订阅。例如:部分公众号内容、某些社区的特定栏目、垂直网站的更新页面和社交平台上的账号动态。\n因此,需要在信息源进入流程之前,尽可能将其统一转换为 RSS 或类似 feed 的格式。常见的方案有:\n- RSSHub / RSS-Bridge 等转换工具:能够将大量原本不提供 RSS 订阅的内容源,转换为可以被订阅和程序自动化消费的 feed 格式;\n- GitHub feed:项目的 Releases、Commits、Discussions 等,都天然提供了结构化的 feed 接口;\n- wewe-rss:能够将公众号文章转换成RSS订阅源;\n- nitter:将 Twitter/X 动态转换为RSS源;\n- 自定义抓取脚本:对于没有现成 RSS 解决方案的页面,也可以自行编写轻量级的抓取脚本,将其转换为内部可用的 feed 格式。\n这一步的原则很简单:上游信息源可以多种多样,但在进入系统之前,格式必须尽可能统一。只有这样,下游的预处理和筛选环节才能稳定可靠地运行。\n更多信息源归一处理方案可参考之前文章碎片时间刷文章!懒人阅读方案分享。\n聚合池:用 FreshRSS 打造稳定的“中间水库”\n所有订阅源最终都会汇聚到 FreshRSS 中,它并非\"我每天真正坐下来阅读的地方\",而是流程的缓冲层,主要有以下作用:\n实现信息来源的统一管理\n无论内容来自博客、社区、GitHub 还是转换后的 feed,最终都以统一的格式呈现,成为可被消费的标准化对象。\n让下游环节无需直接对接互联网\ndigest 模块无需再逐个访问各个网站抓取今日更新内容,只需从 FreshRSS 这个统一的内容池中获取未读候选即可。大大降低了系统各环节之间的耦合度。\n确保了信息处理的时间连续性\n信息系统最忌讳的是“今天临时查看一下、明天就忘了、后天又重新开始”的碎片化处理方式。FreshRSS 提供了一个稳定的时间窗口,使后续任务能够按照固定节奏有序运行。\n我的目标不是追求无边界的信息获取,而是实现有边界的信息处理。\n预处理:Digest 将海量候选内容转化为可判断对象\n如果把 FreshRSS 比作蓄水池,那么 Digest 就是这套系统中的第一道加工厂,专注于完成内容预处理任务。\n让人每天真正感到疲惫的,往往不是精读一篇高质量文章,而是反复判断大量低质量内容是否值得投入时间。\n核心处理任务\n- URL 精确去重\n- 相似内容去重\n- 正文抓取\n- 质量检查\n- 噪音过滤\n- 摘要生成\n- 初步排序与文档输出\n在真正的“阅读”开始之前,先将互联网上天然混乱的信息整理成一批更具可读性的候选内容。\n为什么重要?\n如果没有预处理环节,后续的所有精选工作都将建立在一堆未经整理的原始标题之上。而经过 Digest 处理后,情况会改善:\n- 标题党内容大幅减少\n- 重复报道得到有效过滤\n- 无法获取正文的无效数据明显减少\n- 每条候选内容至少附带一个可供快速判断的摘要\n这将显著降低后续阅读的认知成本。Digest 的职责并非编辑终稿,而是将候选内容池整理干净、结构化,为后续的精选环节奠定基础。\nAI 精选:Daily Review 为我呈现重点关注内容\n如果说 Digest 的作用是将原始候选内容处理得更具可读性,那么 Daily Review 则是从这些经过预处理的候选中,进一步提炼出当天真正值得关注的精华内容。\n这一步让流程从预处理迈向编辑阶段。不再追求内容的广度,而是致力于打造重点更突出、结构更清晰的阅读体验,让最终产物更像一份真正意义上的日报,而非简单堆砌的摘要集合。\n目前,我将 Daily Review 设计为几个固定栏目,将不同类型的信息分配到不同的认知槽位中,包含:\n- 今日大事:聚焦具有公共重要性的事件\n- 变更与实践:关注对个人有直接操作价值的内容\n- 安全与风险:警惕潜在的风险因素\n- 开源与工具:追踪工具生态的发展变化\n- 洞察与数据点:把握行业趋势和关键数据\n- 主题深挖:将单一新闻事件提升到趋势层面进行分析\nLLM 赋能\n从 Digest 输出的候选内容,到 Daily Review 最终的成稿层,中间有很多工作适合 AI 来完成:\n- 合并同一事件的多个信息来源\n- 提炼核心主题\n- 为内容分类并分配到对应栏目\n- 识别值得深入探讨的话题\n- 将零散的候选内容重组为人类可以快速阅读的日报结构\n但我对 AI 在这一环节的应用始终保持克制。不是让 AI 全自动生成日报,而是扮演结构化整理者的角色,从候选内容中筛选出当天和我相关的精华部分。\n精读留存:将 Human in the loop 置于系统核心\n前面所有流程,都是为将信息筛选到值得精读的阶段。真正让系统不至于退化为另一种自动化信息流的,正是这一关键环节:Human in the loop(人在回路中)。\n我坚信,在个人知识系统中,最不能完全外包的是长期价值判断能力。\n系统可以协助我完成许多任务,如信息收集、去重、摘要、聚类、排序和精选等。但它无法完全替我做出关键决策:\n- 哪些内容真正值得纳入长期知识库\n- 哪些内容在未来会持续发挥价值\n- 哪些内容会对我的写作和判断产生深远影响\n因此,在我的工作流中,Lumina 前面始终设有一道人工筛选门槛。我会从之前各个环节产生的内容中,挑选出真正值得精读和长期留存的内容。\n这是整套系统中最关键的价值确认环节。能够进入 Lumina 的内容,不仅代表我看过,更意味着我认为这篇内容值得在未来持续为我所用。\n个人画像:让系统学会识别对我真正有价值的内容\n如果流程到 Lumina 就戛然而止,那么它仍然只是一个单纯的过滤和沉淀系统。只有当沉淀的内容开始反过来影响上游的信息选择时,整个系统才真正形成了闭环。\n为此我加入了一层设计较为克制的兴趣画像逻辑。\n刻意控制了影响力,不希望整个系统演变成另一个猜你喜欢的推荐引擎。我只需要它能稍微更懂我,但又不过度迎合我的偏好,保留对公共重要性内容的关注和探索未知领域的空间。\n这层画像目前主要承担轻量 rerank 的功能,作为辅助信号,轻微影响 Digest 和 Daily Review 环节中候选内容的排序。主要从以下几个维度逐步学习我的偏好:\n- 长期精读的主题领域\n- 能稳定提供价值的信息源\n- 偏好的内容格式\n- 最终存入 Lumina 知识库的内容类型\n轻量引导的设计,旨在减少无效信息对注意力的浪费,同时避免构建封闭的信息茧房。个性化推荐应帮助我们减少无意义的判断,而非让我们躲进舒适区。\n沉淀:将信息流转化为长期内容资产\n信息漏斗的终点不是读完,而是沉淀。目前从两个方向拓展沉淀的价值:\n1. 周刊生成\n当系统积累了一周的高质量内容后,就不应再局限于每天生成一份日报。一周的时间跨度非常适合进行复盘总结。此时,系统已经拥有了丰富的素材:\n- 一周的 Digest 预处理结果\n- 一周的 Daily Review 精选内容\n- 若干经过价值确认的 Lumina 知识库内容\n- 一些开始反复出现的热门主题\n此时生成周刊,比单纯从网页上抓取热点更有价值。因为这些内容已经经过了个人筛选和沉淀,带有明显的个性化痕迹。周刊不应仅仅是本周发生了什么的简单罗列,更应该具备深度和价值:\n- 本周有哪些主题值得重点关注和记忆\n- 哪些变化只是短期噪音,哪些是值得重视的长期信号\n- 哪些内容具有长期参考价值,值得反复回看\n周刊合集👉🏻:肖恩技术周刊\n2. 主题文章生成\n另一个方向是让系统能够逐渐识别哪些主题已经积累了足够的素材,值得写成长篇文章。\n虽然信息流中的内容看起来是离散的,但如果拉长时间维度观察,就会发现很多内容其实都在指向同一个核心主题,例如:\n- AI Agent 工程的发展趋势\n- 开源工具链的演变\n- 内容平台分发机制的变革\n- 隐私保护、合规要求与数据治理\n一旦某个主题在一段时间内反复出现,并且我多次对相关内容进行精读、收藏和沉淀,那么它就不应再仅仅是多条零散的新闻,而应该逐渐发展成为一个可以深入挖掘和输出的长期主题。\n内容合集👉🏻:今日观察\n未来迭代方向\n尽管工作流目前已经能够稳定运行,但它远未达到最终完成的状态。可以继续完善的方面有:\n细化反馈机制\n目前系统中最强的反馈信号是这篇内容是否被存入 Lumina。但在理想状态下,我希望系统能够逐渐识别更多层次的用户行为:\n- 点开内容但未读完\n- 读完内容但未收藏\n- 内容值得精读\n- 内容值得长期沉淀\n- 内容最终影响了写作、决策或实际实现\n- 不喜欢的内容(负反馈)\n一旦这些层次的反馈机制得以完善,兴趣画像将变得更加精准,不再只是一个粗粒度的偏好集合。\n进一步抽象流程\n目前,我更倾向于继续在现有的 OpenClaw 体系内迭代优化,这是探索阶段最适合的方式。\n但如果这套流程能够变得更加稳定,职责边界也更加清晰,那么抽象出其中的信息处理内核,会更有利于后续工程化迭代。\n不过比起将其产品化,还是先让这套漏斗系统持续稳定地运转,越来越懂我。\n结语\n信息处理的关键,从来不是看到更多,而是让真正重要的信息被自己接住。\n当信息经过筛选、精读、沉淀和反馈,真正融入知识结构时,我们不再是信息的被动消费者,将真正成为自己信息环境的主人。\n感谢阅读\n微信公众号「肖恩聊技术」\n如果这篇文章对你有帮助,欢迎扫码关注,获取原创文章推送。", "quality_flags": {"is_paywalled": false, "is_truncated": false, "is_low_content": false}, "metadata": {"content_source": "fetched_html", "extractor": "trafilatura", "char_count": 7019}, "pipeline_state": "extracted"}, "warnings": []}}]} \ No newline at end of file diff --git a/plans/article-deep-summary-skill.md b/plans/article-deep-summary-skill.md index 161e246..120066e 100644 --- a/plans/article-deep-summary-skill.md +++ b/plans/article-deep-summary-skill.md @@ -34,14 +34,8 @@ python -m summary_mcp.workflows.article_summary \ - 数据模型:src/summary_mcp/models/article_summary_result.py - Prompt:outputs/prompts/article-summary-prompt.txt -## Skill 文件结构(待创建) - -skills/article-deep-summary/ - SKILL.md - agents/openai.yaml - ## 待办 -- [ ] 创建 skills/article-deep-summary/SKILL.md -- [ ] 创建 skills/article-deep-summary/agents/openai.yaml -- [ ] 用实际 extracted 文件跑一次验证输出 +- [x] 创建 skills/article-deep-summary/SKILL.md +- [x] 创建 skills/article-deep-summary/agents/openai.yaml +- [x] 用实际 extracted 文件跑一次验证输出(outputs/reference/article-summaries/信息过载时代,我的漏斗式阅读工作流.md) diff --git a/skills/article-deep-summary/SKILL.md b/skills/article-deep-summary/SKILL.md new file mode 100644 index 0000000..c7781ff --- /dev/null +++ b/skills/article-deep-summary/SKILL.md @@ -0,0 +1,113 @@ +--- +name: article-deep-summary +description: Generate a deep structured knowledge note from a single extracted article. Use when the user wants to deeply summarize, distill, or create a knowledge note from an article's full plain_text content stored in an *.extracted.json file. +--- + +# Article Deep Summary + +Use this skill when the user has an extracted article file and wants to generate a deep knowledge note — not a brief summary card, but a structured distillation with core conclusion, arguments, methods, details, and reusable insights. + +This skill is **not** for validating or repairing existing summaries (use `llm-summary-review` for that), nor for keyword index cleanup (use `keyword-cleanup-review` for that). + +## What This Skill Does + +- Reads an extracted article JSON containing `plain_text` +- Calls the LLM with the dedicated article-summary prompt +- Validates the LLM output against the `ArticleSummaryResult` schema +- Renders a structured Markdown knowledge note in Chinese + +## Inputs + +Typical files: + +- Extracted article JSON: `outputs/freshrss/rerun//extracted/item-XX.extracted.json` (single-item) or a batch file with a `results` array +- Prompt template: `outputs/prompts/article-summary-prompt.txt` + +## Workflow + +1. Identify the target extracted file and the item IDs to summarize. + +2. Run the article-summary workflow via CLI: + +```bash +python -m summary_mcp.workflows.article_summary \ + --extracted \ + --selected-ids \ + --output-dir +``` + +Or call the MCP tool `generate_article_summaries` with: + +- `extracted_path`: path to the extracted JSON file +- `selected_ids`: array of item ID strings (pass empty array to summarize all) +- `output_dir`: (optional) directory for Markdown output + +3. The workflow internally: + - Resolves LLM settings (`ARTICLE_SUMMARY_*` env vars, falling back to `LLM_*`) + - Calls `run_loop_payload` with the article-summary prompt and validator + - Retries up to 2 times on validation failure + +4. Check the output Markdown files in the specified output directory. + +## Output Schema + +The LLM returns a JSON matching `ArticleSummaryResult`: + +| Field | Type | Description | +|---|---|---| +| `title` | string | Article title | +| `url` | HttpUrl | Article URL | +| `core_conclusion` | string | Author's core conclusion, 1-2 sentences | +| `main_argument` | string | Main argument or thesis, can be multi-sentence | +| `key_methods` | string[] | Key methods, mechanisms, or techniques | +| `important_details` | string[] | Noteworthy details, data points, or cases | +| `reusable_insights` | string[] | Reusable insights transferable to other contexts | +| `keywords` | string[] | Specific entities — tool names, frameworks, methods | +| `topics` | string[] | Higher-level topic labels | +| `category` | enum | One of: `资讯` `方法论` `工具实践` `观点评论` | +| `worth_keeping` | bool | Whether the article is worth long-term retention | +| `reason` | string | One-sentence justification for retention | + +Constraints enforced by the validator: + +- `keywords` and `topics` must not overlap +- `keywords` focuses on concrete entities; `topics` focuses on abstract themes +- `category` must be one of the four allowed values + +## Markdown Output + +Each article produces one `.md` file with sections: + +- 核心结论 +- 主要论点 +- 关键方法 / 机制 +- 重要细节 +- 可复用启发 +- 关键词 +- 主题 + +## LLM Configuration + +Dedicated environment variables (fallback to main `LLM_*` if unset): + +- `ARTICLE_SUMMARY_LLM_API_URL` +- `ARTICLE_SUMMARY_LLM_API_KEY` +- `ARTICLE_SUMMARY_LLM_MODEL` + +## Repository Implementation + +Relevant code: + +- Workflow: `src/summary_mcp/workflows/article_summary.py` +- Validator: `src/summary_mcp/validators/article_summary.py` +- Data model: `src/summary_mcp/models/article_summary_result.py` +- Prompt: `outputs/prompts/article-summary-prompt.txt` +- MCP tool: `generate_article_summaries` in `src/summary_mcp/server.py` + +## When To Stop + +Stop when one of these is true: + +- Markdown knowledge notes have been generated for all requested items +- The workflow reports repeated validation failures and the user should decide how to proceed +- The user asks to inspect intermediate results manually diff --git a/skills/article-deep-summary/agents/openai.yaml b/skills/article-deep-summary/agents/openai.yaml new file mode 100644 index 0000000..1fa3e29 --- /dev/null +++ b/skills/article-deep-summary/agents/openai.yaml @@ -0,0 +1,3 @@ +display_name: Article Deep Summary +short_description: Generate deep knowledge notes from a single extracted article. +default_prompt: Given an extracted article JSON with plain_text content, run the article-summary workflow to produce a structured Markdown knowledge note with core conclusion, main arguments, key methods, important details, and reusable insights.