• Blog
  • Docs
  • Pricing
  • We’re hiring!
Log inSign up
artivilla

artivilla

rss-generator

rss generator that creates rss feeds for non-rss blogs
Public
Like
rss-generator
Home
Code
7
services
5
shared
1
.vtignore
README.md
blogs.json
deno.json
main.tsx
Branches
3
Pull requests
Remixes
History
Environment variables
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
Sign up now
Code
/
README.md
Code
/
README.md
Search
8/2/2025
Viewing readonly version of main branch: v85
View latest version
README.md

RSS Feed Generator

A RSS Feed Generator that creates RSS feeds for blogs that don't provide their own.

How It Works

  1. JSON Configuration: Define blogs and scraping rules in /blogs.json
  2. Automated Scraping: Cron job runs hourly to scrape configured blogs
  3. RSS Generation: Converts scraped posts to valid RSS XML
  4. Feed Serving: Access feeds at /rss/<slug>.xml

Architecture

flowchart TD %% Configuration A[blogs.json<br/>πŸ“‹ Blog configurations] --> B[cron_generateFeeds.ts<br/>⏰ Hourly cron job] %% Scraping Flow B --> C[scraper.ts<br/>πŸ•·οΈ CSS selector scraping] C --> D[rss.ts<br/>πŸ“„ RSS XML generation] D --> E[(Blob Storage<br/>πŸ’Ύ Val Town storage)] %% HTTP API Flow F[πŸ‘€ User Request] --> G[index.ts<br/>🌐 HTTP API Server] G --> H{Request Type?} %% Different endpoints H -->|GET /| I[πŸ“Š Status Dashboard<br/>HTML page] H -->|GET /status| J[πŸ“ˆ JSON Status API] H -->|GET /rss/:slug.xml| K[πŸ“‘ RSS Feed XML] %% Data retrieval I --> E J --> E K --> E %% Storage details E --> L[RSS Files<br/>rss_slug.xml] E --> M[Metadata<br/>meta_slug.json] %% External sources N[🌐 Blog Websites] --> C %% Styling classDef service fill:#e1f5fe,stroke:#01579b,stroke-width:2px classDef storage fill:#f3e5f5,stroke:#4a148c,stroke-width:2px classDef config fill:#e8f5e8,stroke:#1b5e20,stroke-width:2px classDef endpoint fill:#fff3e0,stroke:#e65100,stroke-width:2px class B,C,D,G service class E,L,M storage class A config class I,J,K endpoint

Core Services

  • HTTP API (/services/index.ts): Serves RSS feeds via Hono routing
  • Cron Scraper (/services/cron_generateFeeds.ts): Hourly blog scraping and RSS generation
  • Generic Scraper (/services/scraper.ts): CSS selector-based blog parsing
  • RSS Generator (/services/rss.ts): Converts posts to RSS XML format

Available Feeds

  • Neynar Blog: /rss/neynar.xml - https://artivilla--442b5b3e6f9511f08f640224a6c84d84.web.val.run/rss/neynar.xml

Adding New Blogs

  1. Add a new entry to /blogs.json with CSS selectors
  2. The cron job will automatically pick it up on the next run
  3. Feed will be available at /rss/<your-slug>.xml

API Endpoints

  • GET / - Interactive status dashboard showing all feeds and their last successful generation times

  • GET /rss/<slug>.xml - RSS feed for a specific blog

  • GET /status - JSON status of all feeds with metadata

Storage

  • Uses Val Town Blob Storage with single key per feed: rss_{slug}.xml
  • Metadata stored as meta_{slug} with generation timestamps and post counts
  • Feeds are updated only on successful scrapes
  • Stale feeds are served indefinitely until next successful update
FeaturesVersion controlCode intelligenceCLIMCP
Use cases
TeamsAI agentsSlackGTM
DocsShowcaseTemplatesNewestTrendingAPI examplesNPM packages
PricingNewsletterBlogAboutCareers
We’re hiring!
Brandhi@val.townStatus
X (Twitter)
Discord community
GitHub discussions
YouTube channel
Bluesky
Open Source Pledge
Terms of usePrivacy policyAbuse contact
Β© 2025 Val Town, Inc.