The AI that snoops your RSS feeds so you don't have to.
Nosey is a lightweight, zero‑cost framework that turns your curated RSS feeds into a daily, AI‑ranked digest. It fetches, deduplicates, ranks, and delivers the most relevant stories — all via GitHub Actions and the Gemini free tier.
Why Nosey? Because it pokes into every feed, sniffs out duplicates, and digs up the stories that actually matter. The included agents are just examples — swap in your own feeds and rules, and Nosey adapts instantly.
Before we you start if you want to set up Nosey for yourself check Support.md and Setup.md
Nosey is a collection of independent agents. Each one:
- Pulls articles from your RSS feeds
- Removes near‑duplicates across sources
- Ranks content with Google Gemini 2.5 Flash
- Generates a structured Markdown digest
- Optionally sends a responsive HTML email via Resend
- Archives every edition in the repository
All agents share a common engine (core.js). Individual agents are defined by simple configuration files — no advanced coding required.
Important
You are not required to use the five default agents. They are working examples. To create your own Nosey, just open any agent file (e.g. index.js), replace the FEEDS array with your favourite RSS URLs, and let Nosey do the rest — the LLM handles everything automatically.
These pre‑built examples are ready to run. Swap their feeds and rules to make them your own.
| Agent | File | Coverage |
|---|---|---|
| Tech | index.js |
Consumer tech, gadgets, AI, software, hardware |
| Finance | finance-agent.js |
Markets, central banks, earnings, macro |
| Gold & Commodities | gold-agent.js |
Precious metals, mining, oil, gas, minerals |
| Health & Medicare | health-agent.js |
FDA, drug pricing, clinical trials, policy |
| EdTech | edtech-agent.js |
AI in education, LMS, research, certifications |
Each agent runs independently. Enable one, several, or all of them.
- Near‑duplicate detection — groups similar stories using Jaccard similarity.
- AI ranking — Gemini picks the 8–15 most important stories per your criteria.
- Email delivery — clean, responsive HTML via Resend (optional).
- Markdown archive — every digest saved as
YYYY-MM-DD.mdand committed. - Auto‑generated index — each agent maintains its own
README.mdarchive. - Low‑code — edit a config object; never touch the core engine.
- Zero operating cost — free tiers of Gemini, GitHub Actions, and Resend.
nosey/
├── core.js # Shared engine (don't touch)
├── index.js # Tech agent (example – edit this)
├── finance-agent.js # Finance agent (example)
├── gold-agent.js # Gold & commodities agent (example)
├── health-agent.js # Health agent (example)
├── edtech-agent.js # EdTech agent (example)
├── package.json
├── .github/
│ ├── dependabot.yml
│ └── workflows/
│ └── daily-digest.yml # GitHub Actions schedule
└── digests/ # Created on first run
├── tech/
├── finance/
├── commodities/
├── health/
└── edtech/
Note
You might want to check Support.md and Setup.md
- Clone or fork this repository.
- Get a Gemini API key from Google AI Studio (free tier works).
- Add secrets in your GitHub repo:
GEMINI_API_KEY(required)RESEND_API_KEYandEMAIL_TO(optional)
- Push to GitHub.
- Run the workflow manually from the Actions tab.
Your first digest will appear in digests/ within minutes.
Open any agent file and edit the CONFIG object. Key fields:
| Key | Purpose |
|---|---|
FEEDS |
List of RSS URLs |
EXCLUDE_KEYWORDS |
Drop articles containing these terms |
RANK_CRITERIA |
Ordered priorities for Gemini |
INCLUDE_RULES / EXCLUDE_RULES |
Extra prompt instructions |
CATEGORIES |
Pipe‑separated labels |
THEME_COLOR |
Accent for HTML email |
TIME_WINDOW_HOURS |
How far back to look |
MIN_STORIES / MAX_STORIES |
Digest size |
You don't have to keep the default agents. To repurpose one:
- Open an agent file (e.g.
index.js). - Replace the
FEEDSarray with your own RSS URLs. - Tweak
RANK_CRITERIAand other fields if you like. - Save and push.
Nosey will automatically fetch, deduplicate, rank, and deliver from your new sources.
- Sign up at Resend and verify a domain.
- Add
RESEND_API_KEYandEMAIL_TOto GitHub secrets. - In the agent config, set
EMAIL_FROMto a verified address.
No email? No problem — Nosey still saves Markdown digests.
| Service | Free Tier | Nosey Usage |
|---|---|---|
| Gemini 2.5 Flash | 1,500 req/day | 1 req/agent/day |
| GitHub Actions | 2,000 min/month | ~1 min/run |
| Resend | 3,000 emails/month | up to 5/day |
| Total | — | $0 / month |
Edit .github/workflows/daily-digest.yml and add a step for each agent. Example:
- name: Run Finance agent
env:
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
run: node finance-agent.jsRepeat for gold-agent.js, health-agent.js, edtech-agent.js, etc.
You can also locally test it by running the following:
npm install
echo "GEMINI_API_KEY=your_key_here" > .env
node index.js # Tech
node finance-agent.js # Finance
# ... etc.Digests appear in digests/.
- Repository: browse
digests/<agent>/YYYY-MM-DD.md. - Email: if configured, get a formatted newsletter.
- Archive:
digests/<agent>/README.mdlists all past editions.
PRs are welcome. Fork, branch, change, open a pull request. Bug reports and new agent configs are especially appreciated.
MIT – do whatever you want with it.
- ⭐ the repo if you like it.
- 🐛 open an issue for bugs or questions.
- 📢 share your custom Nosey agents with the world.


