npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dsh-rss-daily

v0.7.0

Published

dsh plugin: daily RSS news digest from 46 curated sources, LLM-edited via the model already configured in dsh, delivered to your IM via webhook (ServerChan / PushDeer / WeCom / Telegram / Bark / gotify / custom).

Readme

📰 dsh-rss-daily

一句话:每天早上 8 点,dsh 自动给你端上一份主编级的要闻日报 —— 用你已经配好的模型编辑、送到你的微信 / Telegram,还会像一条普通回复一样出现在对话里(不占任何上下文)。

npm npm downloads awesome · DSH plugin CI License: MIT

English README

长什么样

日报直接出现在你的对话里,样式和模型回答一模一样 —— 纯 markdown 排版、同样的字体和宽度:

对话内日报

它是纯前端渲染:只显示,不写会话记录、不发给模型,你的上下文干干净净。

为什么值得装

  • 像主编选的,不是聚合器堆的。 ~20 条候选先打分(源等级 × 时效 × 信号词)、去重(Jaccard + 14 天 MD5 历史)、多源事件图谱交叉验证,最后交给 dsh 里你已配好的模型做主编:合并同事件、剔除 PR 通稿、平衡选题(同话题 ≤2 条)、每条浓缩成一句 ≤45 字的具体事实。
  • 零额外 API key。 编辑这步走 ctx.llm,用 dsh 现成的模型,不多花一分钱、不多配一个密钥。
  • 永不断更。 模型调用失败自动降级规则模式照常出稿;错过定时段落,开机 12 小时内自动补跑。
  • 送到你读的地方。 Server酱 / PushDeer / 企业微信 / Telegram / Bark / gotify / 自定义 webhook,任一成功即算送达。
  • 生产级管线。 移植自 2026 年 6 月起每天在生产环境运行、迭代过 9 版的私人脚本:源健康度自适应超时、feed 乱码修复、短摘要抓原文补全、420 秒硬预算(POSIX 用 SIGALRM 硬中断;Windows 无此信号,靠逐请求超时 + 软预算检查兜底)、幂等两阶段送达(fetch → outbox → 投递 → confirm)。

安装(npm 推荐)

# npm(推荐,无 git 克隆、无构建脚本)
dsh plugin --profile web add dsh-rss-daily

# 或 GitHub
dsh plugin --profile web add github:shangjian2023/dsh-rss-daily

重启 dsh web:每个会话头部出现 📰 按钮,定时任务即刻生效。

30 秒配好:

  1. 点任意会话头部的 📰 按钮 → 设置 标签
  2. 改时间、加一个投递目标(Server酱 / PushDeer / 企微 / Telegram / Bark / gotify / 自定义)
  3. 点 获取今日日报 —— 立刻生成、立刻投递、立刻出现在对话里

不用碰任何 YAML —— 时间、目标、源、条数、模型,全部在面板里改,即时生效。

亮点

  • 🖥 三个界面,零上下文消耗:对话内插播、📰 面板(日报 / 源 / 设置)、设置页卡片 —— 全部客户端渲染,永不进会话日志

  • 📝 插播即模型回答的原样:日报正文用宿主同款 MarkdownText 渲染组件(与真实 assistant 消息同一组件、同一套样式),上屏时以打字机节奏渐显、完稿前不显示操作行——看起来就是模型在作答,但一个 token 的上下文都不占

  • 🧰 46 个精选源,覆盖 AI / 科技 / 科学 / 国际 / 财经 / 开发 / 人文 等 15 个类目,从中国大陆实测可达;源标签页里随意增删停启(连续失败 3 次的源自动降级 24 小时,恢复需连续成功 2 次)

  • 🤖 rss_daily 对话工具 —— run / status / redo / deliver,直接吩咐 agent "生成今天的新闻日报"也行

  • 🔌 无界面模式 —— py/daily.py 可脱离 dsh 独立跑,对接任意 OpenAI 兼容端点:

    RSS_LLM_ENDPOINT=https://api.deepseek.com/v1 RSS_LLM_KEY=sk-... \
      python py/daily.py --state-dir ~/.rss-daily

配置

默认值开箱即用,面板覆盖一切。主要开关:

| 键 | 默认 | 含义 | |---|---|---| | time | 08:00 | 每天本地 HH:MM 运行(错过 <12h 开机补跑)。日报标题日期按北京时间(UTC+8)计算 | | targets[] | [] | 投递目标;≥1 个成功即算送达 | | digestItems | 8 | 每日最多条数 | | llmMode | harness | harness(用 dsh 的模型)或 none(仅规则) | | broadcast | true | 对话内插播开关 | | stateDir | ~/.dsh/rss-daily | 源 / 去重历史 / outbox 目录 |

进阶用户也可以在 profile 的 cordis.patch.yml 里覆盖配置行;HTTP API 与管线阶段见下文。

工作原理

46 源 ──▶ 抓取(健康度/超时/去重) ──▶ ~20 条候选
                                          │
                        ctx.llm 主编编排(失败→翻译兜底→规则模式)
                                          │
                            日报 ──▶ webhook 投递 ──▶ confirm
                                          │
                          对话内插播(纯前端,零上下文)

py/daily.py 可独立脚本化(--stage fetch|finalize|confirm|status,stdout 输出单行 JSON),插件本体驱动的就是这些阶段。送达成功前绝不 confirm —— 确认过的条目会永久进入 14 天去重窗口。

编辑纪律(蒸馏自 AIHOT)

AIHOT 是卡神开源的"自己找热点、自己写日报"网站框架;本插件的编辑管线是它的插件化蒸馏——信源是综合要闻而非仅 AI,跑在 dsh 内部而非三进程网站:

| AIHOT 概念 | 本插件对应 | |---|---| | 预筛 + 两次独立评分 + 分级门槛 | 规则预打分(信源分级×新鲜度×信号词)排出候选池,选题交给主编 | | 五轴评分 + 噪声压制表 | 主编 prompt 内化:实质份量/信息增量/证据强度/共鸣面/可用性;通稿、营销、例行小版本压分 | | 写作(中文标题/答案先行摘要/防幻觉) | 一句话铁律:答案前置、标题自洽(必点主体)、防幻觉(不加原文没有的数字版本、相对时间照抄) | | 聚簇与热度(独立来源计数) | 同事件合并只出一条;newsflash 多源交叉验证条目带 ✚N家 佐证徽标 | | 花钱的请求有回执 / 预算熔断 | stateDir/llm-receipts.json 记每笔调用,单日超 8 次熔断 | | 页面不调模型 / 一个读取层 | outbox JSON 是面板/插播/agent 工具/MCP/webhook 的唯一事实源 | | 日报导语 | lead 字段:提示词要求 ≤60 字概括当日主线(解析层按 120 字兜底截断),面板与插播都展示 |

语言不降级:主编调用失败时先做"翻译兜底"(规则选题 + 仅翻译改写),再不行才规则直出并诚实标注"原文标题速览"——日报语言是硬约束。

桌面版(DSH Desktop)适配:默认模型跟随宿主 agentDefaultModel(你聊天用的那个),空回复自动翻倍预算重试(思考型模型会把 max_tokens 烧在推理上);面板自带完整设计系统(实色明暗面板,打开时采样宿主亮度决定),不借宿主 CSS 变量——0.2.0-rc 宿主变量改名曾让面板透明到看不清;宿主没有 settings.register() 时面板配置自持久化到 stateDir/panel-config.json。

HTTP API(进阶)

同源 API /rss-daily/api/*(仅带 webserver 的 profile 注册):GET status、POST run、POST redo、POST redeliver(重投,{"onlyFailed":true} 只投上次失败的目标)、GET/PUT sources、POST config。投递目标里的密钥在响应中打码;写回时带打码值的字段按目标类型回填原值。所有写入要求同源 + Content-Type: application/json(防跨站简单请求改写投递目标),并过字段白名单校验再落盘。

MCP(给其他 Agent 用)

mcp/server.py 把同一条管线暴露成 MCP 工具,Claude Code / Codex / opencode / Cursor 等任何 MCP 客户端都能用:rss_status(查状态)、rss_fetch(抓取出编辑提示词)、rss_finalize(把编辑结果落稿)、rss_confirm(确认送达)。宿主 agent 既是主编(按提示词挑选改写),也是投递渠道(把日报展示给用户)。

状态目录默认与 dsh 插件共享(幂等门互认、抓取锁互斥);定时投递仍由 dsh 插件或 cron 负责,MCP 管交互式操作。

一行配进 Claude Code(用户级,所有项目可用):

claude mcp add --scope user rss-daily -- python /path/to/dsh-rss-daily/mcp/server.py

Codex / opencode 配置、长任务轮询约定见 mcp/README.md。

依赖

  • dsh,使用 web(或任意常驻)profile
  • Python 3.9+ 且装了 feedparser:pip install feedparser(走 MCP 再加 pip install mcp,1.x 与 2.x 均可)
  • Node.js ≥ 22.19(对齐 dsh 宿主自身的 Node 要求;纯 JS 逻辑层兼容 18,但插件只能跑在 dsh 里)

许可

MIT