winsorllc/upgraded-carnival109 installs
rss-monitor
Monitor RSS/Atom feeds and blogs for new content using feedparser.
How do I install this agent skill?
npx skills add https://github.com/winsorllc/upgraded-carnival --skill rss-monitorIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill is safe for its intended use of monitoring RSS feeds, but it performs network operations to external domains and presents a surface for indirect prompt injection from untrusted feed content.
- Socketpass
No alerts
- Snykwarn
Risk: MEDIUM · No issues
- ZeroLeakspass
Score: 93/100 · 2 sections analyzed
What does this agent skill do?
RSS Monitor
Track RSS and Atom feeds for new content.
Installation
npm install feedparser
Quick Start
Basic Feed Fetch
const { fetchFeed } = require('./rss-monitor');
const items = await fetchFeed('https://example.com/feed.xml');
console.log(items); // Array of feed items
Track Multiple Feeds
const { trackFeeds } = require('./rss-monitor');
const feeds = [
{ url: 'https://blog1.com/rss', name: 'Blog 1' },
{ url: 'https://blog2.com/atom.xml', name: 'Blog 2' }
];
const results = await trackFeeds(feeds);
console.log(results);
Check for New Items
const { checkForNewItems } = require('./rss-monitor');
const lastCheck = new Date('2024-01-01T00:00:00Z');
const newItems = await checkForNewItems('https://example.com/feed.xml', lastCheck);
console.log(`Found ${newItems.length} new items`);
Common Operations
Fetch Latest Items
const items = await fetchFeed('https://xkcd.com/atom.xml', { limit: 10 });
Get Feed Metadata
const feed = await fetchFeedMetadata('https://example.com/feed.xml');
console.log(feed.title, feed.link, feed.description);
Parse Feed with Options
const items = await fetchFeed('https://example.com/feed.xml', {
limit: 20,
includeContent: false,
timeout: 5000
});
Compare with Previous Check
const newItems = await checkForNewItems(
'https://example.com/feed.xml',
lastCheckDate,
{ limit: 50 }
);
Output Format
Each feed item contains:
title- Item titlelink- Item URLdescription- Item summary/descriptionpubDate- Publication date (ISO string)author- Author name (if available)content- Full content (if available and includeContent: true)categories- Tags/categoriesenclosures- Media attachments (images, audio, video)
Examples
RSS Feed Reader
const rssMonitor = require('./rss-monitor');
async function readFeeds() {
const feeds = [
'https://xkcd.com/atom.xml',
'https://blog.github.com/feed/',
'https://news.ycombinator.com/rss'
];
for (const feedUrl of feeds) {
try {
const items = await rssMonitor.fetchFeed(feedUrl, { limit: 5 });
console.log(`\n📰 ${feedUrl}`);
items.forEach(item => {
console.log(` • ${item.title}`);
console.log(` ${item.link}`);
});
} catch (err) {
console.error(`Failed to fetch ${feedUrl}:`, err.message);
}
}
}
Monitor for New Content
const rssMonitor = require('./rss-monitor');
const fs = require('fs').promises;
const STATE_FILE = './last-check.json';
async function monitorFeeds() {
// Load last check times
let lastChecks = {};
try {
lastChecks = JSON.parse(await fs.readFile(STATE_FILE, 'utf8'));
} catch (e) {
// No state file yet
}
const feeds = [
{ url: 'https://xkcd.com/atom.xml', name: 'XKCD' },
{ url: 'https://blog.github.com/feed/', name: 'GitHub Blog' }
];
for (const feed of feeds) {
const lastCheck = lastChecks[feed.url] ? new Date(lastChecks[feed.url]) : null;
const newItems = await rssMonitor.checkForNewItems(feed.url, lastCheck);
if (newItems.length > 0) {
console.log(`\n🆕 ${feed.name}: ${newItems.length} new items`);
newItems.forEach(item => {
console.log(` • ${item.title}`);
});
}
lastChecks[feed.url] = new Date().toISOString();
}
await fs.writeFile(STATE_FILE, JSON.stringify(lastChecks, null, 2));
}
Notes
- Supports both RSS 2.0 and Atom 1.0 formats
- Automatically detects feed format
- Handles redirects and common feed variations
- Default timeout: 10 seconds
- Items sorted by publication date (newest first)
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/winsorllc/upgraded-carnival/rss-monitor">View rss-monitor on skillZs</a>