feed-catchup by readwiseio/readwise-skills
npx skills add https://github.com/readwiseio/readwise-skills --skill feed-catchup你正在帮助用户跟进他们的 Readwise Reader RSS 订阅源。请仔细遵循此流程。
检查 Readwise MCP 工具是否可用(例如 mcp__readwise__reader_list_documents)。如果可用,全程使用它们。如果不可用,则使用等效的 readwise CLI 命令(例如 readwise list、readwise read <id>、readwise move <id> <location>)。以下说明引用了 MCP 工具名称——请根据需要转换为 CLI 等效命令。
重要提示——在开始任何其他操作之前,请在一个并行的回合中完成此步骤: 同时调用查询为 "readwise list documents" 的 ToolSearch 并 读取 reader_persona.md 文件。这两件事必须在同一条消息中作为并行工具调用发生。ToolSearch 会加载延迟的 readwise MCP 工具,以便你可以直接调用它们。切勿使用任务/子代理来获取订阅源数据——其开销会使启动过程极其缓慢。
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
检查角色文件。(与上述并行完成。)在整个会话中使用它来个性化评论和选择。如果角色文件不存在,请简要说明订阅源跟进将缺乏个性化,并建议先运行 build-persona——但请继续执行,无需等待。如果你显示此消息,请在后面加上 · · ·。
获取订阅源文档。 使用 location="feed"、limit=20 和 response_fields=["title", "author", "category", "word_count", "reading_time", "summary", "url", "site_name", "published_date", "saved_at", "first_opened_at"] 调用 mcp__readwise__reader_list_documents。返回的文档按最近保存的顺序排列。筛选出 first_opened_at 为 null(未读)的项目。如果你拥有的未读项目少于 20 个并且返回了 nextPageCursor,请继续分页获取,直到你有 20 个未读项目 或 游标用完为止。将所有未读项目保存在内存中。(注意:列表 API 不支持服务器端的 seen 过滤——需要在客户端检查 first_opened_at。)
如果确实没有剩余内容: 只有在你分页浏览了多个页面并发现零个未读项目时,才声明订阅源已完全跟进。在这种情况下,请简要说明并结束。
挑选前 5 个。 从收集到的未读项目中,根据角色文件(如果可用)或一般信号质量,选择 5 个最值得阅读的项目。优先考虑:高密度见解、与当前兴趣直接相关、第一手操作者观点和新颖性。
严格按照以下格式呈现概览:
📡 Reader 订阅源
{用 1-2 句话解释你查看了什么以及有什么突出之处——例如:“扫描了最近 20 个未读项目。AI 和软件架构占主导,有几个值得关注的亮点。”}
今日精选 (时间跨度 {人类可读的时间范围,例如“过去 8 小时”或“2月24-26日”}):
---|---|---|---|--- 1 | 标题 | site_name | reading_time | 一句话说明入选原因 2 | ... | ... | ... | ...
{用 1-2 句话评论这组精选——模式是什么,或者为什么特别选择这五个。}
· · ·
想对这些项目采取行动,还是浏览所有内容?
如果用户说“浏览全部”(或类似意思),则进入逐批浏览循环。每次呈现 20 个未读项目:
在表格之前,添加一行说明该批次覆盖的时间范围,例如 “2月26日,下午 3:00–11:00” 或 “过去 4 小时” ——根据该批次项目的 saved_at 值计算得出。
---|---|---|---|--- 1 | 标题 | site_name | reading_time | 来自元数据的简要摘要——一行,必要时截断 2 | ... | ... | ... | ...
表格之后,对该批次进行简要评论(1-2 句话)——相对于他们的兴趣,有什么突出之处。
(你可以同时对多个项目进行操作,例如“稍后 2, 5, 8”)
documents 设置为 [{document_id: <id>, seen: true}, ...] 调用 mcp__readwise__reader_bulk_edit_document_metadata,针对当前批次中的每个文档。这是一个单一调用,而不是每个文档调用一次。不要移动或归档它们。然后显示下一批 20 个文档。later 位置。简要确认,然后继续。later。简要确认。new、shortlist 或 archive)。简要确认。mcp__readwise__reader_get_document_details 获取完整内容。如果文档阅读时间在 3 分钟或以下,则逐字显示完整内容——不进行摘要。如果超过 3 分钟,则提供一个更丰富的摘要,包含推荐阅读/跳过阅读的理由。然后重新呈现选项。https://read.readwise.io/read/{id}),以便他们可以直接打开。加载下一批时,在下一个表格之前使用 · · · 作为视觉分隔符。
每周安装数
86
仓库
GitHub 星标数
94
首次出现
2026年3月7日
安全审计
安装于
github-copilot86
codex86
kimi-cli86
gemini-cli86
cursor86
amp86
You are helping the user catch up on their Readwise Reader RSS feed. Follow this process carefully.
Check if Readwise MCP tools are available (e.g. mcp__readwise__reader_list_documents). If they are, use them throughout. If not, use the equivalent readwise CLI commands instead (e.g. readwise list, readwise read <id>, readwise move <id> <location>). The instructions below reference MCP tool names — translate to CLI equivalents as needed.
IMPORTANT — do this in a single parallel turn before anything else: Call ToolSearch with query "readwise list documents" AND read reader_persona.md at the same time. Both must happen in the same message as parallel tool calls. The ToolSearch loads the deferred readwise MCP tools so you can call them directly. Never use a Task/subagent to fetch feed data — the overhead makes startup brutally slow.
Check for persona file. (Done in parallel above.) Use it throughout the session to personalize commentary and picks. If no persona file exists, note briefly that feed catchup will be less personalized and suggest running build-persona first — but proceed without waiting. If you show this message, add · · · after it.
Fetch feed documents. Call mcp__readwise__reader_list_documents with location="feed", limit=20, and response_fields=["title", "author", "category", "word_count", "reading_time", "summary", "url", "site_name", "published_date", "saved_at", "first_opened_at"]. Documents come back most-recently-saved first. Filter to items where first_opened_at is null (unseen). If you have fewer than 20 unseen items and a nextPageCursor is returned, paginate until you have 20 unseen items OR the cursor runs out. Hold all unseen items in memory. (Note: the list API does not support server-side filtering — client-side check is required.)
Render the overview exactly like this:
📡 Reader Feed
{1-2 sentences explaining what you looked at and what stood out — e.g. "Scanned the last 20 unseen items. AI and software architecture dominate, with a few standouts worth pulling."}
Today's picks (spanning {human-readable time range, e.g. "the last 8 hours" or "Feb 24–26"}) :
---|---|---|---|---
1 | Title | site_name | reading_time | One-line reason this made the cut
2 | ... | ... | ... | ...
{1-2 sentences of commentary on the picks as a set — what the pattern is, or why these five in particular.}
· · ·
Want to act on any of these, or browse everything?
If the user says "browse all" (or similar), enter the batch-by-batch loop. Present unseen items 20 at a time:
Before the table, add a single line with the time range covered by the batch, e.g. "Feb 26, 3:00–11:00 PM" or "last 4 hours" — derived from the saved_at values of the items in that batch.
---|---|---|---|---
1 | Title | site_name | reading_time | Brief summary from metadata — one line, truncated if needed
2 | ... | ... | ... | ...
After the table, give a brief commentary (1-2 sentences) on the batch — what stands out relative to their interests.
(You can act on multiple items at once, e.g. "later 2, 5, 8")
mcp__readwise__reader_bulk_edit_document_metadata with documents set to [{document_id: <id>, seen: true}, ...] for every document in the current batch. This is a single call, not one per document. Do not move or archive them. Then display the next batch of 20.later location. Confirm briefly, then continue.later. Confirm briefly.new, shortlist, or archive). Confirm briefly.When loading the next batch, use · · · as a visual separator before the next table.
Weekly Installs
86
Repository
GitHub Stars
94
First Seen
Mar 7, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
github-copilot86
codex86
kimi-cli86
gemini-cli86
cursor86
amp86
Azure RBAC 权限管理工具:查找最小角色、创建自定义角色与自动化分配
142,000 周安装
seenfirst_opened_atIf truly nothing left: Only declare the feed fully caught up if you paginated through multiple pages and found zero unseen items. In that case, say so briefly and end.
Pick the top 5. From the collected unseen items, select the 5 most worth reading based on the persona (if available) or general signal quality. Prioritize: high-density insight, direct relevance to their current interests, first-person operator takes, and novelty.
mcp__readwise__reader_get_document_details. If the document is 3 mins or under, show the full content verbatim — no summary. If over 3 mins, give a richer summary with why-read/why-skip reasoning. Then re-present the options.https://read.readwise.io/read/{id}) so they can open it directly.