Skip to content

RSS Reader

Aggregate, browse, and curate news and links shared across Signal groups.

Web Interface: https://rss.irregulars.io

The RSS Reader collects links shared in Signal groups and makes them browsable on the web. Features include:

  • Automatic link capture from Signal messages
  • Categorization (news, social, repos, documents)
  • Metadata extraction (titles, descriptions, images)
  • Search and filtering
  • Bookmarking and comments
  • Digest queuing for newsletters
  • Entity graph — people, organizations, locations extracted from articles
  • Entity detail pages with article history and co-occurrence data

Browse links shared across the community.

!links # Recent links from all groups
!links -c # Links from current group only
!links -channel # Same as -c
!links -t 24h # Links from last 24 hours
!links -t 7d # Links from last 7 days
!links -trending # Popular/trending links
!links <keyword> # Search for keyword

Combined options:

!links -c -t 24h # This group, last 24 hours
!links -t 7d security # Last 7 days, matching "security"

Output:

  • Link title and URL
  • Source group
  • Category badge
  • Share count (if shared multiple times)

URL: https://rss.irregulars.io

Browse all captured links with:

  • Category filters (News, Social, Repos, Documents)
  • Time filters (Today, This Week, This Month)
  • Group filters
  • Search
  • Pagination
CategoryDescriptionExamples
NewsArticles and news storiesNews sites, blogs, articles
SocialSocial media postsTwitter/X, Mastodon, LinkedIn
RepositoriesCode repositoriesGitHub, GitLab, Gitea
DocumentsFiles and documentsPDFs, slides, papers

Each link shows:

  • Title (extracted or generated)
  • Preview image (when available)
  • Description/summary
  • Source domain
  • Category badge
  • Share count
  • Bookmark button (authenticated)
  • Comment count

Login with your community account to access:

Save links for later reading:

  • Click bookmark icon on any link
  • Add personal notes
  • Tag bookmarks for organization
  • View at /bookmarks

Discuss links with the community:

  • Add comments to any link
  • See community discussion
  • Get notified of replies

Add links to the digest queue:

  • Selected links appear in daily/weekly digests
  • Helps curate community newsletters
  • Admin feature

When someone shares a link in Signal:

  1. Bot detects URL in message
  2. Fetches metadata (title, description, image)
  3. Categorizes based on domain and content
  4. Stores in database
  5. Available on web interface

The system extracts:

  • Title: From Open Graph, Twitter Card, or HTML title
  • Description: From meta tags or first paragraph
  • Image: From og:image or Twitter Card
  • Author: When available
  • Published date: When available

Documents and files are stored in MinIO:

  • PDFs and documents uploaded to Signal
  • Presigned URLs for authenticated access
  • 7-day URL expiration

URL: https://rss.irregulars.io/groups

Browse links by source group:

  • See which groups share the most
  • Filter by specific group
  • Discover active communities

URL: https://rss.irregulars.io/feeds

View RSS feed sources:

  • External RSS feeds monitored by the bot
  • Feed health status
  • Recent items from each feed

URL: https://rss.irregulars.io/entities

Explore a force-directed graph of people, organizations, and locations extracted from news articles.

The graph shows co-occurrence relationships — entities that appear together in the same articles are connected with edges. Features:

  • Force-directed layout — nodes repel each other, edges attract connected nodes
  • Node sizing — larger nodes appear in more articles
  • Community detection — label propagation groups related entities by color
  • Betweenness centrality — “Bridge Score” identifies entities connecting different clusters
  • Temporal trending — rising, declining, new, and stable entity indicators
PresetDescription
Key PlayersTop entities with strong connections (30-40 nodes)
StandardBalanced view of the network (80-100 nodes)
Full NetworkComprehensive entity map (150+ nodes)
DenseMaximum coverage including weak connections
  • Co-occurrence (default) — edge thickness shows how often entities appear together
  • PMI Surprise — highlights statistically unexpected co-occurrences using pointwise mutual information
  • Temporal Trending — shows which entities are rising or declining in recent coverage

URL: https://rss.irregulars.io/entity/{name}

Click any entity in the graph or list to see:

  • Article history — all articles mentioning this entity
  • Co-occurring entities — who/what appears alongside this entity
  • Trend data — recent vs previous period coverage

Common name variants are automatically merged (e.g., “USA”, “US”, “U.S.” all resolve to “United States”). Admins can manage aliases via the API.

Download graph data as CSV:

  • Edges CSV — source, target, weight, PMI for each connection
  • Nodes CSV — name, type, articles, connections, betweenness, trend, community

Search across all captured links:

  • Full-text search on titles and descriptions
  • Filter by category
  • Filter by date range
  • Filter by group

From Signal:

!links search <term>
!links <term> # Same as search

From Web: Use the search bar on any page.


Admins can manage RSS feed sources:

  • Add/remove feeds
  • Set update frequency
  • Monitor feed health
  • Block problematic sources

Admins can moderate content:

  • Delete inappropriate links
  • Edit link metadata
  • Block domains
  • Manage user reports

Admins can manage digests:

  • Review queued links
  • Send daily/weekly digests
  • Configure digest recipients

VariableRequiredDescription
RSS_ENABLEDNoEnable RSS link capture (default: true)
RSS_AUTO_SUMMARIZENoAI-summarize captured links

The RSS Reader runs as a Cloudflare Worker:

Terminal window
# Deploy
cd rss-reader && ./deploy.sh
# View logs
npx wrangler tail

Required secrets (set via wrangler secret put):

  • BOT_API_KEY - For bot API authentication
  • OIDC_CLIENT_SECRET - For SSO authentication

For API documentation, see RSS Reader API.


Check:

  1. URL was shared in a monitored group
  2. Domain is not blocked
  3. Link capture is enabled

Cause: Website doesn’t provide Open Graph tags

Workaround: Bot generates title from URL when metadata unavailable

Check:

  1. You’re logged in
  2. API key is configured in worker
  3. Check browser console for errors

Check:

  1. Image URL is accessible
  2. CORS headers allow embedding
  3. For documents: Check MinIO presigned URL expiration