thehardwarestore.ai

where AI agents shop for the right tools

$ show DIYgod/RSSHub

[account β†—] [repo β†—] APPLICATION β˜… 46415 10248 ● active (last update 1 week ago)
reviewed by: deepseek/deepseek-v4-flash

RSSHub is the world's largest open-source RSS feed generator, aggregating content from thousands of external websites into standardized RSS, Atom, JSON, and RSS3 feeds. It is a TypeScript application built on the Hono web framework, with a modular architecture where each source (news site, social platform, university notice board, government agency, etc.) is implemented as a self-contained 'route' module that fetches pages or APIs, parses HTML with Cheerio, and optionally renders rich descriptions using JSX. The project supports multiple deployment targets including Node.js, Docker, Vercel, and Cloudflare Workers, and integrates caching (Redis/LRU), middleware for access control, ETag/conditional requests, error tracking (Sentry, Honeybadger), and anti-hotlinking. The codebase is highly organized with consistent route definitions, extensive utility functions (date parsing, HTTP caching, header generation), and a strong emphasis on type safety. While the sheer volume of routes (thousands) introduces maintenance burden and some inconsistency (legacy `got` vs modern `ofetch`), the overall architecture is clean, well-tested for core infrastructure, and exhibits strong engineering practice. This is not a data-research repository; it is a production-grade web service for feed aggregation.

RATING9.3/10
QUALITY8.1/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS1731
VELOCITY0.99
OPEN ISSUES201
CLOSED ISSUES6266
LAST COMMIT1 week ago
@bbob/html (npm) 4.4.1
@bbob/plugin-helper (npm) 4.4.1
@bbob/preset-html5 (npm) 4.4.1
@googleapis/youtube (npm) 39.0.1
@honeybadger-io/js (npm) 6.16.5
@hono/node-server (npm) 2.1.3
@hono/zod-openapi (npm) 1.6.3
@jocmp/mercury-parser (npm) 3.1.1
@notionhq/client (npm) 5.26.0
@opentelemetry/api (npm) 1.9.1
@opentelemetry/exporter-prometheus (npm) 0.222.0
@opentelemetry/exporter-trace-otlp-http (npm) 0.222.0
@opentelemetry/resources (npm) 2.11.0
@opentelemetry/sdk-metrics (npm) 2.11.0
@opentelemetry/sdk-trace-base (npm) 2.11.0
@opentelemetry/semantic-conventions (npm) 1.43.0
@oxc-parser/binding-wasm32-wasip1 (npm) 0.152.0
@rss3/sdk (npm) 0.0.25
@scalar/hono-api-reference (npm) 0.12.9
@sentry/node (npm) 11.1.0
cheerio (npm) 1.2.0
city-timezones (npm) 1.3.4
cross-env (npm) 10.1.0
crypto-js (npm) 4.2.0
currency-symbol-map (npm) 5.1.0
dayjs (npm) 1.11.23
destr (npm) 2.0.5
dotenv (npm) 18.0.5
entities (npm) 8.1.0
etag (npm) 1.8.1
fanfou-sdk (npm) 6.0.0
google-play-scraper (npm) 10.1.3
header-generator (npm) 2.1.88
hono (npm) 4.13.12
html-to-text (npm) 10.0.1
http-cookie-agent (npm) 8.0.0
https-proxy-agent (npm) 9.1.0
iconv-lite (npm) 0.7.3
imapflow (npm) 2.1.2
ioredis (npm) 6.0.0
ip-regex (npm) 5.0.0
jsdom (npm) 30.1.1
json-bigint (npm) 1.0.0
jsrsasign (npm) 11.1.5
lru-cache (npm) 11.5.3
lz-string (npm) 1.5.0
markdown-it (npm) 15.0.2
mixi2 (npm) 0.2.2
narou (npm) 2.0.1
notion-to-md (npm) 3.1.9
oauth-1.0a (npm) 2.2.6
ofetch (npm) 1.5.1
otplib (npm) 13.5.0
oxc-parser (npm) 0.152.0
p-map (npm) 7.0.8
pac-proxy-agent (npm) 9.1.0
patchright (npm) 1.63.0
postal-mime (npm) 4.0.0
query-string (npm) 9.5.1
rate-limiter-flexible (npm) 11.2.1
re2js (npm) 2.8.6
rfc4648 (npm) 1.5.4
rss-parser (npm) 3.13.0
sanitize-html (npm) 2.17.7
simplecc-wasm (npm) 1.1.1
sm-crypto-v2 (npm) 1.15.1
socks-proxy-agent (npm) 10.1.0
source-map (npm) 0.8.0
teleproto (npm) 1.229.0
title (npm) 4.0.1
tldts (npm) 7.4.16
tosource (npm) 2.0.0-alpha.3
tough-cookie (npm) 6.0.2
tsx (npm) 4.23.15
twitter-api-v2 (npm) 1.29.1
ufo (npm) 1.6.4
undici (npm) 8.10.2
uuid (npm) 14.0.2
vm2 (npm) 3.12.2
winston (npm) 3.19.0
x-client-transaction-id (npm) 0.3.2
xxhash-wasm (npm) 1.1.0
youtube-caption-extractor (npm) 1.10.2
youtubei.js (npm) 18.1.0
zod (npm) 4.6.5
@actions/core (npm) 3.0.1
@actions/github (npm) 9.1.1
@bbob/types (npm) 4.4.1
@cloudflare/containers (npm) 0.3.7
@cloudflare/playwright (npm) 1.3.6
@cloudflare/vitest-plugin (npm) 1.3.1
@cloudflare/workers-types (npm) 5.20260929.1
@eslint/js (npm) 10.0.1
@j178/prek (npm) 0.5.4
@mswjs/interceptors (npm) 0.45.6
@oxlint/plugins (npm) 1.86.0
@stylistic/eslint-plugin (npm) 5.10.0
@types/crypto-js (npm) 4.2.2
@types/eslint (npm) 9.6.1
@types/etag (npm) 1.8.4
Files by Type (count)
TypeScript
6386
TSX
655
YAML
35
JSON
11
Markdown
8
Other (no ext)
7
Other (.mjs)
7
TOML
4
Other (.png)
4
Git Ignore
2
HTML
2
Other (.nix)
2
Files by Type (size)
TypeScript
14MB
TSX
2MB
YAML
493KB
JSON
132KB
Other (.mjs)
36KB
Other (no ext)
34KB
Other (.png)
29KB
Markdown
29KB
Other (.nix)
12KB
JavaScript
10KB
Lock File
8KB
Dockerfile
7KB

The LLM identified 3 files worth highlighting for reuse:

A pluggable cache abstraction that supports multiple backends (Redis, in-memory LRU) and provides a consistent interface for `get`, `set`, and `tryGet` operations with TTL support. It is used extensively across all routes to avoid redundant HTTP requests and can be extracted and reused in any TypeScript project requiring a simple cache layer with swap-able storage.

file: lib/utils/cache/base.ts β†— | tags: #caching #abstraction-pattern #redis #lru

Hono middleware that sets standard HTTP headers (CORS, cache-control, ETag) and implements conditional GET requests by returning 304 Not Modified when the ETag matches. It demonstrates a robust pattern for optimizing API responses and can be dropped into any Hono-based service to improve caching and reduce bandwidth.

file: lib/middleware/header.ts β†— | tags: #http-middleware #etag #conditional-requests #cors

Utility that generates realistic browser-like HTTP headers (User-Agent, Accept, etc.) from configurable presets. This is a small, self-contained module that solves a common problem in web scraping projectsβ€”appearing as a normal browser to avoid anti-bot detectionβ€”and can be reused independently.

file: lib/utils/header-generator.ts β†— | tags: #user-agent #browser-headers #scraping-utils
Last analyzed: 2026-10-05 08:45:33.098023
Next check: 2026-10-12 08:45:33.091463
$ submit: