An ElizaOS-powered agent that monitors Twitter lists and generates RSS feeds using the agent-twitter-client library. No Twitter API keys required!
- π¦ Monitor Multiple Twitter Lists: Track unlimited Twitter lists simultaneously
- π° Generate RSS Feeds: Clean XML feeds with metadata and engagement metrics
- β° Scheduled Updates: Automatic refresh every 30 minutes (configurable)
- π Manual Triggers: Update feeds on-demand via chat commands
- π HTTP Server: Built-in server for RSS feed access
- π Status Monitoring: Real-time metrics and monitoring dashboard
- π― Content Filtering: Remove retweets, replies, set minimum lengths
- π€ ElizaOS Integration: Full Actions, Providers, and Services architecture
npm installEdit .env with your credentials:
# Twitter Account (REQUIRED - no API keys needed!)
TWITTER_USERNAME=your_twitter_handle
TWITTER_PASSWORD=your_twitter_password
TWITTER_EMAIL=your_email@example.com
# AI Provider (REQUIRED - choose one)
OPENAI_API_KEY=sk-your_openai_key
# Twitter Lists (REQUIRED)
TWITTER_LISTS=1234567890,9876543210,1111111111- Visit any Twitter list:
https://twitter.com/i/lists/[LIST_ID] - Copy the number from the URL (that's the List ID)
- Add multiple IDs to
TWITTER_LISTSseparated by commas
npm run build
npm start- RSS Feed: http://localhost:3001/rss
- Status Dashboard: http://localhost:3001/status
- Manual Update: POST http://localhost:3001/update
- What: Your regular Twitter account credentials
- Where: Use existing account or create at https://twitter.com
- Why: No Twitter API keys needed - uses web scraping
- OpenAI: Get API key from https://platform.openai.com/api-keys
- Anthropic: Get API key from https://console.anthropic.com/
- Groq: Get API key from https://console.groq.com/ (has free tier)
| Variable | Required | Default | Description |
|---|---|---|---|
TWITTER_USERNAME |
β | - | Your Twitter username |
TWITTER_PASSWORD |
β | - | Your Twitter password |
TWITTER_EMAIL |
β | - | Your Twitter email |
TWITTER_LISTS |
β | - | Comma-separated list IDs |
OPENAI_API_KEY |
β * | - | OpenAI API key |
RSS_UPDATE_INTERVAL |
β | 30 | Update interval (minutes) |
MAX_TWEETS_PER_LIST |
β | 50 | Max tweets per list |
RSS_API_TOKEN |
β | - | Bearer token required for HTTP API |
RSS_SERVER_PORT |
β | 3001 | HTTP server port |
FILTER_RETWEETS |
β | false | Filter out retweets |
FILTER_REPLIES |
β | false | Filter out replies |
FETCH_TWEET_THREADS |
β | false | Include conversation threads |
*Required: One AI provider API key
UPDATE_RSS_FEED: Manually trigger RSS updatesGET_RSS_STATUS: Check feed status and statistics
TWITTER_LIST_PROVIDER: Supplies context about monitored lists
TwitterRSSService: Core RSS generation and Twitter monitoringRSSServerService: HTTP server for feed access
All endpoints (except /health) require an Authorization: Bearer token if RSS_API_TOKEN is set.
GET /rss- Main RSS feedGET /status- Monitoring dashboard with statisticsPOST /update- Trigger manual RSS updateGET /health- Health check endpoint
"Update my RSS feed" β Triggers RSS update
"What's the RSS feed status?" β Shows current status
"How many tweets processed?" β Displays statistics
"Refresh RSS" β Manual update trigger
# Get RSS feed
curl http://localhost:3001/rss
# Check status
curl http://localhost:3001/status
# Manual update
curl -X POST http://localhost:3001/update- Authentication: Uses your Twitter credentials (cached for efficiency)
- List Monitoring: Fetches tweets from specified lists using
fetchListTweets() - Content Processing: Filters tweets based on your preferences
- RSS Generation: Creates clean XML with metadata and engagement metrics
- HTTP Serving: Provides feeds via built-in HTTP server
- Duplicate Prevention: Tracks processed tweets to avoid duplicates
The agent provides detailed monitoring:
- Last update timestamp
- Total tweets processed
- RSS file size and location
- List monitoring status
- Server uptime and health
Authentication Issues
- Verify Twitter credentials in
.env - Check username (no @ symbol needed)
- Ensure email matches your Twitter account
No Tweets Found
- Verify List IDs are correct numbers
- Check if lists are public
- Ensure lists contain active accounts
RSS Feed Empty
- Run manual update:
POST /update - Check
/statusendpoint for errors - Verify
TWITTER_LISTSenvironment variable
FILTER_RETWEETS=true # Remove retweets
FILTER_REPLIES=true # Remove replies
MIN_TWEET_LENGTH=20 # Minimum tweet length
MAX_RSS_ENTRIES=1000 # Maximum feed entries
FETCH_TWEET_THREADS=true # Include conversation threadsRSS_FEED_TITLE=My Custom Feed
RSS_FEED_DESCRIPTION=Curated tweets from my lists
RSS_OUTPUT_DIR=./custom-feedsnpm start- Start the TwitterRSSAgentnpm run dev- Development mode with hot reloadnpm run build- Build TypeScript to JavaScriptnpm test- Run testsnpm run lint- Format code
src/
βββ plugin.ts # Main ElizaOS plugin implementation
βββ index.ts # TwitterRSSAgent character & project config
__tests__/ # Test files
e2e/ # End-to-end tests
rss-feeds/ # Generated RSS files
.elizadb/ # Agent database
MIT License - Feel free to modify and distribute
Your Twitter RSS Agent is now configured and ready to:
- Monitor your chosen Twitter lists automatically
- Generate clean RSS feeds for feed readers
- Provide HTTP endpoints for easy access
- Integrate seamlessly with ElizaOS ecosystem
Just configure your .env file and run npm start!