Files
mastobot/README.md

3.2 KiB

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_en rotor only)
  • AWS credentials (for embed rotor 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