From nanotars-freshrss
Configures self-hosted FreshRSS integration for NanoTars agents to access unread articles, news summaries, feed management, and daily digests via Google Reader API. Guides URL, username, API key setup and plugin install. Triggers on 'add freshrss', 'rss feeds'.
npx claudepluginhub terrifiedbug/nanotars-skills --plugin nanotars-freshrssThis skill uses the workspace's default tool permissions.
Configures RSS feed access for agent containers using a self-hosted FreshRSS instance and its Google Reader API.
Queries headlines and articles from self-hosted FreshRSS via Google Reader API. Supports filtering by category, time range, unread status, count. Use for RSS news, latest headlines, feed updates.
Adds n8n workflow automation integration to NanoTars agents, enabling webhook-triggered monitoring workflows to avoid token-intensive polling. Guides n8n MCP server setup, API key config, and env variables.
Share bugs, ideas, or general feedback.
Configures RSS feed access for agent containers using a self-hosted FreshRSS instance and its Google Reader API.
Before installing, verify NanoTars is set up:
[ -d node_modules ] && echo "DEPS: ok" || echo "DEPS: missing"
docker image inspect nanoclaw-agent:latest &>/dev/null && echo "IMAGE: ok" || echo "IMAGE: not built"
if grep -q "ANTHROPIC_API_KEY\|CLAUDE_CODE_OAUTH_TOKEN" .env 2>/dev/null || [ -f "$HOME/.claude/.credentials.json" ]; then echo "AUTH: ok"; else echo "AUTH: missing"; fi
If any check fails, tell the user to run /nanotars-setup first and stop.
grep "^FRESHRSS_URL=" .env 2>/dev/null && echo "ALREADY_CONFIGURED" || echo "NEEDS_SETUP"
ls plugins/freshrss/plugin.json 2>/dev/null && echo "PLUGIN_EXISTS" || echo "NO_PLUGIN"
If ALREADY_CONFIGURED, ask the user if they want to reconfigure or test the existing setup.
Ask the user for:
https://freshrss.example.com), no trailing slashadmin, fruity)Tell the user:
To get your FreshRSS API password:
- Log in to your FreshRSS instance
- Go to Settings (gear icon) > Profile
- Scroll to API Management
- Set an API password if you haven't already, then click Submit
- Copy the API password and paste it here
Wait for the user to provide all three values.
# Remove existing lines if present
sed -i '/^FRESHRSS_URL=/d' .env
sed -i '/^FRESHRSS_USER=/d' .env
sed -i '/^FRESHRSS_API_KEY=/d' .env
# Add FreshRSS credentials
echo 'FRESHRSS_URL=THE_URL_HERE' >> .env
echo 'FRESHRSS_USER=THE_USERNAME_HERE' >> .env
echo 'FRESHRSS_API_KEY=THE_API_KEY_HERE' >> .env
cp -r ${CLAUDE_PLUGIN_ROOT}/files/ plugins/freshrss/
Ask the user which groups should have access to this plugin:
mainIf restricting, update plugins/freshrss/plugin.json to set "groups" to the list of group folder names.
Also ask about channel types. Leave "channels": ["*"] for all, or set to specific types (e.g., ["whatsapp"]).
source .env
AUTH=$(curl -s "$FRESHRSS_URL/api/greader.php/accounts/ClientLogin" \
-d "Email=$FRESHRSS_USER&Passwd=$FRESHRSS_API_KEY" | grep -oP 'Auth=\K.*')
if [ -n "$AUTH" ]; then
UNREAD=$(curl -s "$FRESHRSS_URL/api/greader.php/reader/api/0/unread-count?output=json" \
-H "Authorization: GoogleLogin auth=$AUTH" | python3 -c "
import sys, json
r = json.load(sys.stdin)
total = sum(int(f.get('count', 0)) for f in r.get('unreadcounts', []))
print(f'OK - {total} unread articles')
")
echo "$UNREAD"
else
echo "FAILED - Could not authenticate. Check URL, username, and API password."
fi
If the test fails:
npm run build
nanotars restart # or launchctl on macOS
Send a WhatsApp message like "what's in my RSS feeds?" or "give me a news summary".
If this plugin is already installed and you want different credentials for a specific group (e.g., a work account for one group, personal for another):
Check which groups exist:
ls -d groups/*/
Ask the user which group should get separate credentials.
Collect the new FreshRSS credentials for that group.
Write to the group's .env file (creates if needed):
echo 'FRESHRSS_URL=https://other-freshrss.example.com' >> groups/{folder}/.env
echo 'FRESHRSS_USER=username' >> groups/{folder}/.env
echo 'FRESHRSS_API_KEY=api-key' >> groups/{folder}/.env
These values override the global .env for that group's containers only.
Restart NanoTars:
nanotars restart
rm -rf plugins/freshrss/sed -i '/^FRESHRSS_URL=/d' .env
sed -i '/^FRESHRSS_USER=/d' .env
sed -i '/^FRESHRSS_API_KEY=/d' .env