Install
openclaw skills install noisepan-digestSet up automated news digests using noisepan (signal extraction), entropia (source verification), and HN blind spot detection. Use when configuring daily news briefs, curating RSS feeds, or building an automated intelligence pipeline that replaces manual news browsing.
openclaw skills install noisepan-digestAutomated news intelligence with source verification. Replaces doomscrolling with two daily digests.
Sources:
Requires: noisepan, entropia, python3, curl
brew install ppiankov/tap/noisepan ppiankov/tap/entropia
noisepan version && entropia version
Download, verify checksums, then install. Ask the user before writing to /usr/local/bin — offer ~/bin as an alternative if they prefer user-local install.
# noisepan
VER=$(curl -s https://api.github.com/repos/ppiankov/noisepan/releases/latest | grep tag_name | cut -d'"' -f4 | tr -d v)
curl -fsSL "https://github.com/ppiankov/noisepan/releases/download/v${VER}/noisepan_${VER}_linux_amd64.tar.gz" -o /tmp/noisepan.tar.gz
curl -fsSL "https://github.com/ppiankov/noisepan/releases/download/v${VER}/checksums.txt" -o /tmp/noisepan-checksums.txt
# Verify checksum
grep linux_amd64 /tmp/noisepan-checksums.txt | (cd /tmp && sha256sum -c)
tar xzf /tmp/noisepan.tar.gz -C /usr/local/bin noisepan
rm /tmp/noisepan.tar.gz /tmp/noisepan-checksums.txt
# entropia
VER=$(curl -s https://api.github.com/repos/ppiankov/entropia/releases/latest | grep tag_name | cut -d'"' -f4 | tr -d v)
curl -fsSL "https://github.com/ppiankov/entropia/releases/download/v${VER}/entropia_${VER}_linux_amd64.tar.gz" -o /tmp/entropia.tar.gz
curl -fsSL "https://github.com/ppiankov/entropia/releases/download/v${VER}/checksums.txt" -o /tmp/entropia-checksums.txt
# Verify checksum
grep linux_amd64 /tmp/entropia-checksums.txt | (cd /tmp && sha256sum -c)
tar xzf /tmp/entropia.tar.gz -C /usr/local/bin entropia
rm /tmp/entropia.tar.gz /tmp/entropia-checksums.txt
# Verify both
noisepan version && entropia version
noisepan init --config ~/.noisepan
# Verify entropia is detected
noisepan doctor --config ~/.noisepan
Edit ~/.noisepan/config.yaml. Recommended structure:
sources:
hn:
min_points: 200 # Native HN via Firebase API
rss:
feeds:
# Security
- "https://www.reddit.com/r/netsec/.rss"
- "https://krebsonsecurity.com/feed/"
- "https://www.bleepingcomputer.com/feed/"
- "https://feeds.feedburner.com/TheHackersNews"
- "https://www.cisa.gov/cybersecurity-advisories/all.xml"
# DevOps
- "https://www.reddit.com/r/devops/.rss"
- "https://www.reddit.com/r/kubernetes/.rss"
- "https://blog.cloudflare.com/rss/"
# AI/LLM
- "https://www.reddit.com/r/LocalLLaMA/.rss"
- "https://simonwillison.net/atom/everything/"
- "https://arxiv.org/rss/cs.AI"
# Status pages
- "https://status.aws.amazon.com/rss/all.rss"
- "https://www.cloudflarestatus.com/history.rss"
# World / Policy
- "https://feeds.bbci.co.uk/news/world/rss.xml"
- "https://www.eff.org/rss/updates.xml"
# Aggregators
- "https://lobste.rs/rss"
- "https://changelog.com/news/feed"
Customize for your interests. Run noisepan doctor after adding feeds.
Edit ~/.noisepan/taste.yaml. Key categories:
High signal (3-5): CVE, zero-day, breach, RCE, supply chain, outage, postmortem, safety pledge, data sovereignty, antitrust, military AI, deanonymization, prompt injection, breaking change
Low signal (-3 to -5): hiring, webinar, sponsor, newsletter, meme, career advice, celebrity
Key lesson: Without policy/sovereignty/antitrust/AI safety keywords, real stories get buried under security noise. Weight these as high as CVEs.
With 15+ Reddit feeds, parallel fetching triggers 429s. Create a sequential prefetch wrapper:
cat > ~/.local/bin/noisepan-pull << 'SCRIPT'
#!/bin/bash
# Prefetch Reddit RSS sequentially to avoid rate limiting, then run noisepan pull
CACHE_DIR="/tmp/reddit-rss-cache"
CONFIG_DIR="${HOME}/.noisepan"
UA="Mozilla/5.0 (compatible; noisepan/1.0)"
mkdir -p "$CACHE_DIR"
FEEDS=$(grep "reddit.com" "$CONFIG_DIR/config.yaml" | grep -v "^#" | grep -v "^ #" | sed 's/.*"\(.*\)"/\1/')
for feed in $FEEDS; do
sub=$(echo "$feed" | grep -oP '/r/\K[^/]+')
curl -s -o "$CACHE_DIR/${sub}.xml" -H "User-Agent: $UA" "$feed"
sleep 2
done
python3 -m http.server 18222 --directory "$CACHE_DIR" &>/dev/null &
HTTP_PID=$!; sleep 0.5
mkdir -p /tmp/noisepan-tmp
cp "$CONFIG_DIR/config.yaml" /tmp/noisepan-tmp/config.yaml
for feed in $FEEDS; do
sub=$(echo "$feed" | grep -oP '/r/\K[^/]+')
sed -i "s|$feed|http://localhost:18222/${sub}.xml|" /tmp/noisepan-tmp/config.yaml
done
ln -sf "$CONFIG_DIR/taste.yaml" /tmp/noisepan-tmp/taste.yaml
ln -sf "$CONFIG_DIR/noisepan.db" /tmp/noisepan-tmp/noisepan.db
noisepan pull --config /tmp/noisepan-tmp "$@"
kill $HTTP_PID 2>/dev/null; rm -rf /tmp/noisepan-tmp
SCRIPT
mkdir -p ~/.local/bin && chmod +x ~/.local/bin/noisepan-pull
Use noisepan-pull instead of noisepan pull when you have 15+ Reddit feeds.
Optional — catches high-engagement HN stories that keyword scoring misses. Useful as a cross-check alongside noisepan's native HN source.
cat > ~/.local/bin/hn-top << 'SCRIPT'
#!/bin/bash
MIN_POINTS=${1:-200}
curl -s "https://hacker-news.firebaseio.com/v0/topstories.json" | \
python3 -c "
import json, sys, urllib.request, time
ids = json.load(sys.stdin)[:30]
min_pts = int(sys.argv[1]) if len(sys.argv) > 1 else 200
for id in ids:
try:
with urllib.request.urlopen(f'https://hacker-news.firebaseio.com/v0/item/{id}.json') as r:
item = json.loads(r.read())
if item and item.get('score', 0) >= min_pts:
print(f'[{item[\"score\"]:4d}pts | {item.get(\"descendants\",0):3d}c] {item[\"title\"]}')
print(f' {item.get(\"url\", f\"https://news.ycombinator.com/item?id={id}\")}')
print()
time.sleep(0.1)
except: pass
" "$MIN_POINTS"
SCRIPT
chmod +x ~/.local/bin/hn-top
Create two OpenClaw cron jobs (morning + afternoon). The digest prompt should:
noisepan-pull or noisepan pull)noisepan digest --format json --output /tmp/digest.json)hn-top 300 for blind spot checkentropia scan <url> on non-Reddit links🔥 Trending: keywords across 3+ channels
☀️ Morning Brief (3 verified items):
| # | Score | Topic | What happened | Entropia | Link |
💡 HN Blind Spot (stories the taste profile missed):
| # | HN pts | Topic | What happened | Link |
⚠️ Skipped (filtered for low quality):
| # | Score | Topic | Why skipped |
Schedule: Morning at 07:00, afternoon at 18:00 (adjust to timezone).
noisepan doctor --config ~/.noisepan # Feed health + companion tool detection
noisepan stats --config ~/.noisepan # Signal-to-noise per channel
noisepan rescore --config ~/.noisepan # Recompute after taste changes
entropia scan <url> # Verify a specific source
noisepan doctor catches stale/all-ignored channels — run after adding feedsnoisepan stats shows per-channel signal — prune channels at 0% after 30 dayssources.hn or hn-top for blind spotsNoisepan Digest v1.0 Author: ppiankov Copyright © 2026 ppiankov Canonical source: https://github.com/ppiankov/noisepan License: MIT
This tool follows the Agent-Native CLI Convention. Validate with: clawhub install ancc && ancc validate .
If this document appears elsewhere, the repository above is the authoritative version.