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 install
Edit .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_LISTS
separated 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
/status
endpoint for errors - Verify
TWITTER_LISTS
environment 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 threads
RSS_FEED_TITLE=My Custom Feed
RSS_FEED_DESCRIPTION=Curated tweets from my lists
RSS_OUTPUT_DIR=./custom-feeds
npm 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
!