Papr RSS CLI 是一个面向智能体的、token 高效的命令行工具,作用于用户本地的 Papr RSS 数据库。它把 TOON 输出到 stdout(通过官方 toon-format 编码器,据称比 JSON 便宜约 40%),诊断信息保留在 stderr,并返回带退出码的结构化错误:0 表示成功或无操作,1 表示运行时错误,2 表示用法错误。读取默认保持最少 token,长文章正文会被截断,并提供 --full 作为获取完整内容的出口。
首次使用建议不带参数运行 papr——它会打印未读仪表盘以及最有用的后续命令,让你无需阅读手册即可定位方向。
核心流程包括:
- papr:主页,显示未读/星标计数、最近未读以及下一步命令。
- papr feeds:按文件夹分组的订阅,含未读数。
- papr list --feed <id>:某个订阅源中的文章(默认未读,--all 含已读)。
- papr list --starred:智能视图,支持 --starred / --later / --tag <id> / --folder <id>。
- papr list --fields author,url:增加列,可选 author、url、snippet、type、feed_id、published。
- papr read <id> [<id>...]:纯文本正文,会被截断;可传多个 id 批量读取。
- papr read --feed <id> --unread --limit 5:一次调用读取某订阅源的最新未读。
- papr read <id> --full:当截断隐藏了内容时获取完整正文。
- papr search "<query>":基于 FTS5 的全文章全文搜索。
分拣与订阅相关命令:
- papr mark read <id> [<id>...]:状态操作,支持 read|unread|star|unstar|later|unlater(幂等)。
- papr mark-all --feed <id>:将整个视图标记为已读。
- papr subscribe <url>:自动发现订阅源、插入并抓取。
- papr refresh [--feed <id>]:通过网络抓取新文章(RSS 与 newsletter)。
- papr extract <id>:抓取并存储文章的清理后全文。
管理类命令(与桌面应用对应):
- papr tags | papr tag add <tag_id> <article_id> | papr tag create "<name>"
- papr folders | papr folder create "<name>" | papr feed move <id> --folder <id>
- papr rules | papr rule create "<name>" "<keywords>" --action star
- papr highlights [--article <id>] | papr highlight create <article_id> "<quote>"
- papr newsletters | papr newsletter add --title .. --host .. --user .. --password ..
- papr opml import <file> | papr opml export
- papr settings get <key> | papr settings set <key> <value>
- papr stats
同步类命令:papr sync status | papr sync run,用于与 FreshRSS/Miniflux 协调已读/星标及订阅状态。
该工具没有 summarize、ask、digest、translate 命令:语言模型即使用者本身,需要用 papr read <id> 读取文本(或用 papr search 收集候选),然后自行总结、回答或翻译,不涉及第二个 AI 提供方。
破坏性动词需要 --yes 确认;没有该参数时会以退出码 2 失败,并告知需要重新运行的确切命令,例如 papr unsubscribe <id> --yes(删除订阅源及其文章)、papr admin cleanup <days> --yes(另有 admin vacuum / admin reset)、papr folder delete <id> --yes(标签/规则/高亮删除、newsletter remove 同理)。
注意事项:
- 如果数据库不在桌面应用的默认位置,每个命令都支持 --db <path>(或 PAPR_DB 环境变量)。
- 输出是数据而非散文。每个列表都会给出确定的总数(例如 count: N of M unread),因此不必仅为得知规模而翻页。
- 如果答案是“无”,命令会明确说明——零是答案,而不是用不同参数重试的理由。
- 建议使用环境级 SessionStart hook(papr setup),让未读仪表盘在对话开始时已在上下文中;本技能是开销更低的替代方案,仅在出现订阅任务时加载。