Add Mastobot documentation with feed rotors
This commit is contained in:
111
README.md
Normal file
111
README.md
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
# 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
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 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
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
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
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl http://localhost:8000/health
|
||||||
|
```
|
||||||
|
|
||||||
|
Returns: `{"status": "healthy"}`
|
||||||
|
|
||||||
|
### Trigger Manual Feed Update
|
||||||
|
|
||||||
|
Call specific rotors via HTTP:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
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
|
||||||
Reference in New Issue
Block a user