A personal RSS feed reader that uses AI to filter posts based on your interests and saves the good stuff to your Obsidian vault.
What it does:
- Fetches new posts from RSS feeds (blogs, newsletters, YouTube channels)
- Uses GPT-4o-mini to filter posts that match your interests
- Writes relevant posts to a file in your Obsidian vault
Before you start, you'll need:
-
An OpenAI API key - Get one at platform.openai.com/api-keys
- You'll need to add a payment method and add some credits (~$5 is plenty to start)
- The app uses GPT-4o-mini which costs about $0.15 per million tokens (very cheap)
-
Obsidian (optional but recommended) - Download at obsidian.md
- Know where your vault folder is located on your computer
Open Terminal (on Mac: press Cmd + Space, type "Terminal", press Enter) and run:
git clone https://github.com/YOUR_USERNAME/nommer.git
cd nommerchmod +x setup.sh
./setup.shThis will:
- Install
uv(a Python package manager) if you don't have it - Install all required dependencies
- Create your
.envfile for the API key - Create your
config.yamlfrom the template
Open config.yaml in any text editor (TextEdit, VS Code, etc.) and customize:
# Where to save filtered posts
obsidian:
vault_path: "/Users/YourName/Documents/MyVault" # Your Obsidian vault path
output_file: "filtered-posts.md" # File name for saved posts
# Topics you're interested in (AI will filter based on these)
keywords:
- AI
- economics
- technology
- science
# RSS feeds to follow
blogs:
- name: "Marginal Revolution"
rss_url: "https://marginalrevolution.com/feed"
- name: "Hacker News"
rss_url: "https://news.ycombinator.com/rss"Finding your Obsidian vault path:
- On Mac: Open Finder, navigate to your vault folder, right-click → "Get Info" → copy the path shown under "Where"
- Or: In Obsidian, go to Settings → Files & Links → look at "Vault location"
Finding RSS feeds:
- Most blogs have an RSS link in the footer or sidebar
- e.g. for Substack: add
/feedto the newsletter URL (e.g.,https://example.substack.com/feed)
uv run nommerThat's it! Check your Obsidian vault for the filtered posts.
Want nommer to run automatically every day? Here's how:
- Create a wrapper script. Edit
run_nommer.sh:
#!/bin/bash
cd /path/to/your/nommer
/path/to/uv run nommerFind your uv path by running which uv in Terminal.
- Create a launch agent file at
~/Library/LaunchAgents/com.nommer.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.nommer</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/your/nommer/run_nommer.sh</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>9</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StandardOutPath</key>
<string>/path/to/your/nommer/logs/nommer.log</string>
<key>StandardErrorPath</key>
<string>/path/to/your/nommer/logs/nommer.error.log</string>
</dict>
</plist>- Load the agent:
launchctl load ~/Library/LaunchAgents/com.nommer.plistcrontab -eAdd this line to run at 9 AM daily:
0 9 * * * cd /path/to/nommer && /path/to/uv run nommer
If you prefer to set things up manually:
-
Install uv (if you don't have it):
curl -LsSf https://astral.sh/uv/install.sh | sh -
Install dependencies:
uv sync
-
Set up your API key:
cp .env.example .env # Edit .env and add your OpenAI API key -
Configure the app:
cp config.example.yaml config.yaml # Edit config.yaml with your settings -
Run:
uv run nommer
nommer/
├── config.yaml # Your personal configuration (not in git)
├── config.example.yaml # Template configuration
├── .env # Your API key (not in git)
├── .env.example # Template for API key
├── data/
│ └── posts.db # Database of seen posts (prevents duplicates)
├── logs/ # Log files
└── src/ # Source code
"command not found: uv"
- Run the install script again, or add uv to your PATH:
source $HOME/.local/bin/env
"No module named 'openai'"
- Make sure you ran
uv syncto install dependencies
"Invalid API key"
- Check your
.envfile has the correct key (starts withsk-) - Make sure there are no extra spaces or quotes around the key
Posts not appearing in Obsidian
- Check that
vault_pathin config.yaml points to the correct folder - Make sure the folder exists and you have write permissions
No posts being filtered
- Check the
logs/nommer.logfile for details - Try broadening your keywords