DSH Hub

JohnXu22786/rss-digest

dsh-rss-digest

BundleWorkflow0 GitHub stars· updated 2026-08-20

RSS/Atom digest plugin for DeepSeek Harness (dsh bundle): subscribe, fetch on schedule, dedupe, LLM summaries, daily Markdown briefings.

Install

npx @deepseek-ai/dsh plugin --profile demo add ./path/to/dsh-rss-digest

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-rss-digest DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/rss-digest.svg)](https://dshhub.dev/plugins/rss-digest)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from JohnXu22786/rss-digest, cleaned of badges and images.

dsh-rss-digest

English · 简体中文

RSS/Atom aggregation, smart summarization, and daily Markdown briefings — a first-party-style dsh bundle (DeepSeek Harness, "everything is a plugin").

The plugin manages feed subscriptions with local persistence, polls feeds on a schedule, deduplicates stories (exact + near-duplicate), summarizes them with the harness's LLM (with a deterministic extractive fallback when the model is unavailable), and delivers a daily Markdown digest into live conversations and/or files. It also ships a standalone CLI that shares the same core.

  • dsh integration: bundle spec (dsh.bundle + cordis.patch.yml), model-facing tools via ctx.tools, scheduling via the harness timer seam, delivery via agent follow-up messages. See Architecture.
  • Zero-friction core: the fetch/parse/dedupe/store/digest core has no dependencies at all — only the dsh integration layer imports dsh packages.

Features

  • Subscriptions — add / remove / list / enable / disable RSS 2.0, Atom, and RSS 1.0 (RDF) feeds; persisted in a single versioned JSON document with atomic writes and corruption quarantine.
  • Scheduled fetching — configurable poll interval, startup cycle, per-request timeout, size cap, retries, and an item retention cap.
  • Deduplication — exact-match hashing plus token-Jaccard near-duplicate detection (CJK-aware bigrams), configurable threshold.
  • LLM summaries — one batch call per digest or per-item summaries, Chinese or English, bounded output length; automatic degradation to extractive summaries on any model failure.
  • Daily digest — Markdown briefing at a wall-clock time (optional IANA timezone) delivered to live sessions (Agent.followup) and/or written to digests/<day>.md files.
  • Two entry points — the same RssService powers both the dsh plugin (ctx.tools + scheduler) and the standalone CLI.

Installation (dsh)

A bundle is an npm package that ships a configuration layer. Install this package into a dsh profile; the loader picks up the dsh.bundle declaration and applies cordis.patch.yml automatically:

# from inside a dsh profile (or with --profile <name> from anywhere)
dsh plugin --profile demo add ./path/to/dsh-rss-digest
# or from a registry:  dsh plugin --profile demo add dsh-rss-digest

The profile manifest now lists dsh-rss-digest in dsh.profile.bundles, and the bundle's patch inserts the plugin row:

- insert:
    - id: rss-digest
      name: 'dsh-rss-digest'

Optional: tune the plugin from your profile's own $DSH_HOME/profiles/demo/cordis.patch.yml (a bare row by id replaces the row's config; every omitted field keeps its default). A fully annotated example lives in examples/profile.cordis.patch.yml:

- id: rss-digest
  config:
    fetch:
      intervalMinutes: 60
    summary:
      language: zh
      mode: batch
    digest:
      time: '08:30'
      timezone: Asia/Shanghai
      deliverTo: both

The plugin starts with sensible defaults even with no configuration at all; use rss_add in a conversation or dsh-rss-digest add in a shell to register feeds at runtime.

Related plugins