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

@bintangtimurlangit/newsroom

v1.0.1

Published

Your agent's news desk for OpenClaw—RSS feeds, push or digest alerts, presets, and on-demand briefings. Native plugin with tools + scheduler.

Readme

Newsroom

npm Build and verify platforms license

Your agent shouldn’t miss the story. Newsroom is the news desk for OpenClaw—wire real feeds into real sessions so your agent gets breaking items, digests, or on-demand briefings without pasting URLs into chat all day.

Stop treating RSS like homework.

  • Push what matters — New articles can hit your agent as system events in the session you pick (same session-key model you already use in OpenClaw).
  • Dial the noise — Per feed: instant alerts, periodic digests, or manual fetch only.
  • Preset + custom11 built-in presets (TechCrunch, Hacker News, BBC News, …) via newsroom_enable_preset, plus any RSS URL. See Preset feeds for every presetId.
  • No duplicate spam — SQLite-backed tracking remembers what was already sent.

Built as a native OpenClaw plugin: tools your agent can call, a gateway scheduler that does the polling, and a newsroom-setup CLI so “where should pushes go?” isn’t a config archaeology project.

Full reference: Documentation (installation, configuration, tools, CLI, architecture, development). Changelog: CHANGELOG.md.


Prerequisites

  • Node.js ≥ 22.5.0 — Required for built-in node:sqlite. Check with node -v.
  • OpenClaw — The gateway and openclaw CLI must be installed and able to run on the same machine (or in the same environment) where you load plugins. Newsroom is an npm package consumed by OpenClaw; it is not a standalone app.

Installation

Install with an AI assistant

"Hey, please install this https://github.com/bintangtimurlangit/newsroom , and set it up for me"

Paste that into your agent (or start from the repo), then follow docs/AGENT_SETUP.md — copy-paste prompt for your agent; the agent should warn you about the gateway restart, then have you wait a few seconds and message Continue installing Newsroom before verification, presets, and custom feeds.

Manual installation

Do this yourself (no coding agent). More detail: docs/INSTALLATION.md.

From npm (published package)

  1. Confirm Node.js ≥ 22.5 and that the openclaw CLI runs on this machine.

  2. Install the plugin and restart the gateway:

    openclaw plugins install @bintangtimurlangit/newsroom
    openclaw gateway restart
  3. Configure where push alerts go: run openclaw newsroom-setup, or set NEWSROOM_NOTIFICATION_SESSION_KEY / plugins.entries.newsroom.config in openclaw.json. See First-time setup below.

  4. Optional: openclaw plugins doctor to confirm Newsroom loads without issues.

From a local clone (development)

  1. Clone the repository, then install deps and build:

    git clone https://github.com/bintangtimurlangit/newsroom.git
    cd newsroom
    npm install
    npm run build
  2. Install the plugin from that directory using OpenClaw’s link or path flow (see OpenClaw plugin docs). This repo includes npm run openclaw:dev:link (openclaw --dev plugins install --link .) for a dev-style install when you use a --dev OpenClaw config.

  3. Restart the gateway, then run openclaw newsroom-setup (or set the session key manually) as in From npm step 3.

CLI install

openclaw plugins install @bintangtimurlangit/newsroom
openclaw gateway restart

The CLI and gateway come from the openclaw package. Install that with npm, pnpm, bun, or another Node-compatible client. Homebrew (or similar) may ship OpenClaw itself; this plugin is an npm package loaded via openclaw plugins install, not a separate brew formula unless you maintain one.

First-time setup (where pushes go)

Newsroom needs an OpenClaw session key so enqueueSystemEvent can deliver new-article alerts to the right agent session (same idea as the session/channel key you use elsewhere in OpenClaw).

Resolution order (first match wins):

  1. plugins.entries.newsroom.config.notificationSessionKey in openclaw.json
  2. Environment variable NEWSROOM_NOTIFICATION_SESSION_KEY
  3. Local setup.json under your state dir: <stateDir>/plugins/newsroom/setup.json (written by the command below)

Interactive setup (writes setup.json and, by default, merges into openclaw.json):

openclaw newsroom-setup
# or non-interactive:
openclaw newsroom-setup --session-key main

Before updating openclaw.json, the setup command checks that the openclaw npm package is resolvable from the plugin (same install graph as a normal OpenClaw install). If you only have the plugin sources without OpenClaw next to it, use --no-write-config to write setup.json only, or install OpenClaw first.

Use --no-write-config to only write setup.json (no change to openclaw.json). Restart the gateway after changing config so the plugin reloads merged settings.

Dedicated agent: OpenClaw does not expose a stable “create agent” API for third-party plugins. If you want a separate agent for news only, add or onboard an agent using OpenClaw’s usual flows (onboarding / agent entries in config), note that agent’s session key, then run newsroom-setup with that key.


Features

  • Multiple RSS feeds — Add as many custom feeds as you need.
  • Preset feeds — Enable popular sources in one step; full list below with presetId for each source.
  • Notification modesAuto (immediate when new items arrive), periodic (batched on a schedule), manual (on-demand via tools only).
  • Per-feed settings — Configure each feed independently.
  • Content modes — Full article text or headline + summary + link.
  • Deduplication — SQLite-backed tracking avoids sending the same article twice.
  • Background polling — Scheduler runs for auto and periodic feeds while the gateway is up.
  • Bundled OpenClaw skill — With the plugin enabled, OpenClaw loads skills/newsroom/SKILL.md (declared in openclaw.plugin.json) so the model gets concise guidance for on-demand fetches (newsroom_get_news) and adding feeds (newsroom_add_feed, presets, listing feeds). Workspace skills override same-named plugin skills if you customize locally.

Usage (agent tools)

Enable preset feeds

newsroom_enable_preset({ presetId: "techcrunch" })
newsroom_enable_preset({ presetId: "bbcnews" })

Add a custom RSS feed

newsroom_add_feed({
  url: "https://example.com/feed.xml",
  name: "My Custom Feed",
  notificationMode: "periodic", // "auto", "periodic", or "manual"
  contentMode: "summary", // "full" or "summary"
  periodicIntervalHours: 12,
})

List configured feeds

newsroom_list_feeds()

Fetch news on demand

newsroom_get_news()
newsroom_get_news({ feedId: 1 })

Update feed settings

newsroom_update_feed_settings({
  feedId: 1,
  notificationMode: "auto",
  contentMode: "full",
})

Disable a preset or remove a feed

// Preset feeds: disable by feed id from newsroom_list_feeds
newsroom_disable_preset({ feedId: 1 })
// Any feed (including custom):
newsroom_remove_feed({ feedId: 1 })

Feed status

newsroom_get_feed_status()

Parameter details and tool list: docs/TOOLS.md.


Preset feeds

| Category | Name | Preset ID | |----------|------|-----------| | Tech | TechCrunch | techcrunch | | Tech | Ars Technica | arstechnica | | Tech | The Verge | theverge | | News | BBC News | bbcnews | | News | Reuters | reuters | | News | AP News | apnews | | AI/Tech | Hacker News | hn | | AI/Tech | AI Weekly | aiweekly | | General | NPR | npr | | General | Al Jazeera | aljazeera |


Configuration

Plugin options live under plugins.entries.newsroom.config. Defaults apply when fields are omitted.

| Field | Description | |-------|-------------| | pollingIntervalMinutes | How often the gateway polls auto feeds (1–60). | | defaultNotificationMode | Default for new feeds: auto, periodic, or manual. | | defaultPeriodicIntervalHours | Default hours between periodic batches (1–168). | | defaultContentMode | summary or full for new feeds. | | notificationSessionKey | Recommended for push alerts: OpenClaw session key that receives system events when new articles arrive (auto/periodic). Without this, new-article text is only written to the plugin log. Use the same session key as the agent (see OpenClaw session docs). You can also set NEWSROOM_NOTIFICATION_SESSION_KEY or run openclaw newsroom-setup instead of editing JSON by hand. |

{
  "plugins": {
    "entries": {
      "newsroom": {
        "enabled": true,
        "config": {
          "pollingIntervalMinutes": 5,
          "defaultNotificationMode": "periodic",
          "defaultPeriodicIntervalHours": 12,
          "defaultContentMode": "summary",
          "notificationSessionKey": "YOUR_SESSION_KEY_HERE"
        }
      }
    }
  }
}

More detail: docs/CONFIGURATION.md.


Roadmap

  • CLI-based agent platforms — We want setup to stay easy when installs are driven from terminal-first coding agents (e.g. OpenCode, Claude Code, Gemini CLI, Codex, and similar), not only from the OpenClaw UI. Planned work includes companion docs (and any thin wrappers that make sense) so flows similar to docs/AGENT_SETUP.md work smoothly in those environments. OpenClaw remains the runtime for the plugin; this track is about ergonomics and discoverability for users who live in those CLIs.

Development

npm install
npm run build
npm test
npm run test:coverage
npm run verify

Use Node ≥ 22.5 everywhere (OpenClaw host and this repo). Storage uses node:sqlite (built into Node) — no better-sqlite3 native addon and no Windows C++ toolchain.

Node may print ExperimentalWarning: SQLite is an experimental feature until the API stabilizes; it is safe to ignore for normal use.

To check that OpenClaw can load this package (after npm run build): npm run openclaw:dev:link then npm run openclaw:dev:doctor — you should see No plugin issues detected. For end-to-end checks on a running gateway (HTTP tools/invoke, RSS polling, push session keys), see docs/DEVELOPMENT.md.

Contributing & security

CONTRIBUTING.md · SECURITY.md · Code of Conduct

GitHub repository description: use the one-liner in package.json (description field) or copy .github/REPOSITORY_DESCRIPTION.txt into Settings → General → Description (≤350 characters).

License

MIT