Mastobot — Mastodon Feed Automation Service
Automatically syncs RSS feeds from Finnish and international sources to your custom Mastodon instance.
Features
- 7 RSS feed rotors - Pull updates from news, weather, and community sources
- Custom content formatting - Each feed has tailored message formatting (e.g., hashtags for Finnish feeds)
- Intelligent tagging - Uses OpenAI API to generate or translate hashtags for Yle.fi English news
- Static embed page - Generate personalized Mastodon profile pages via S3 upload
- Health monitoring - Built-in health check endpoint
Available Feed Rotors
| Router | Source | Language | Features |
|---|---|---|---|
yle_fi |
Yle.fi News | fi | Includes hashtags, custom cleaning |
yle_en |
Yle.fi News | en | AI-generated translated tags |
the_local |
The Local | en | Includes hashtags |
taloustaito |
Taloustaito | fi | First 3 articles only |
sur |
Sur Weather News | en | Includes hashtags |
hn |
Hacker News | en | Title + link only |
embed |
Your Mastodon | any | Static profile page generator |
Tech Stack
- Backend: FastAPI (Python)
- Database: None (state stored in memory per request)
- Deployment: Docker Compose with development hot-reload
- AI Integration: OpenAI API for tag translation/generation
- Storage: Amazon S3 for embed pages
- External APIs: RSS feedparser, Mastodon v1 API, BeautifulSoup
Setup
Prerequisites
- Docker (compose)
- Custom Mastodon instance with API access
- OpenAI API key (for
yle_enrotor only) - AWS credentials (for
embedrotor S3 upload)
Development
# Load environment variables
# Copy .env.example to .env and fill in:
# - mastodon_server: https://your.mastodon.local
# - feeds__: {source_name: {url, account_id, token}}
# - openai_api_key: sk-your-api-key
# - aws_access_key_id / aws_secret_access_key (optional)
# Run development server with hot-reload
uvicorn app.main:app --host 0.0.0.0 --port 8000
# Or use Docker Compose
docker compose up --build
Configuration Example
feeds__ :
fuengirola__ :
url: https://fuengirola.fi/fi/rss/
account_id: 12345678
token: your_mastodon_token
hn__ :
url: https://hacker-news.ycombinator.com/hlnews.xml
account_id: 12345678
token: your_mastodon_token
Usage
Health Check
curl http://localhost:8000/health
Returns: {"status": "healthy"}
Trigger Manual Feed Update
Call specific rotors via HTTP:
curl http://localhost:8000/rss?source=fuengirola
See individual router docs for endpoints.
API Endpoints
| Endpoint | Description |
|---|---|
/ |
Welcome message |
/health |
Health check |
/embed/generate |
Generate static embed page at S3 key |
/rss?fource=fuengirola |
Fuengirola weather news |
/rss?source=yle_fi |
Yle.fi Finnish news |
/rss?source=yle_en |
Yle.fi English news (AI tags) |
/rss?source=the_local |
The Local articles |
/rss?source=taloustaito |
Taloustaito economics |
/rss?source=sur |
Weather news with hashtags |
/rss?source=hn |
Hacker News |
License
Proprietary - All Rights Reserved for John Ahlroos
Languages
Python
91.3%
CSS
7.1%
Dockerfile
1.6%