09-image-choices
This commit is contained in:
49
README.md
49
README.md
@@ -141,11 +141,56 @@ Analytics loading is consent-gated:
|
||||
| `RETENTION_DAYS` | No | `30` | Days to keep news before archiving |
|
||||
| `UMAMI_SCRIPT_URL` | No | — | Umami analytics script URL |
|
||||
| `UMAMI_WEBSITE_ID` | No | — | Umami website tracking ID |
|
||||
| `ROYALTY_IMAGE_PROVIDER` | No | `picsum` | Royalty-free image source (`picsum`, `wikimedia`, or MCP) |
|
||||
| `ROYALTY_IMAGE_MCP_ENDPOINT` | No | — | MCP endpoint for image retrieval (preferred when set) |
|
||||
| `ROYALTY_IMAGE_PROVIDER` | No | `picsum` | Legacy: single provider selection (deprecated, use `ROYALTY_IMAGE_PROVIDERS`) |
|
||||
| `ROYALTY_IMAGE_PROVIDERS` | No | `pixabay,unsplash,pexels,wikimedia,picsum` | Comma-separated provider priority chain |
|
||||
| `ROYALTY_IMAGE_MCP_ENDPOINT` | No | — | MCP endpoint for image retrieval (highest priority when set) |
|
||||
| `ROYALTY_IMAGE_API_KEY` | No | — | Optional API key for image provider integrations |
|
||||
| `PIXABAY_API_KEY` | No | — | Pixabay API key (get from pixabay.com/api/docs) |
|
||||
| `UNSPLASH_ACCESS_KEY` | No | — | Unsplash API access key (get from unsplash.com/developers) |
|
||||
| `PEXELS_API_KEY` | No | — | Pexels API key (get from pexels.com/api) |
|
||||
| `SUMMARY_LENGTH_SCALE` | No | `3` | Summary detail level from `1` (short) to `5` (long) |
|
||||
|
||||
## Image Provider Configuration
|
||||
|
||||
ClawFort retrieves royalty-free images for news articles using a configurable provider chain.
|
||||
|
||||
### Provider Priority
|
||||
|
||||
Providers are tried in order until one returns a valid image:
|
||||
|
||||
1. **MCP Endpoint** (if `ROYALTY_IMAGE_MCP_ENDPOINT` is set) — Custom endpoint, highest priority
|
||||
2. **Provider Chain** (from `ROYALTY_IMAGE_PROVIDERS`) — Comma-separated list, tried in order
|
||||
|
||||
Default chain: `pixabay,unsplash,pexels,wikimedia,picsum`
|
||||
|
||||
### Supported Providers
|
||||
|
||||
| Provider | API Key Variable | Attribution Format |
|
||||
|----------|------------------|-------------------|
|
||||
| Pixabay | `PIXABAY_API_KEY` | "Photo by {user} on Pixabay" |
|
||||
| Unsplash | `UNSPLASH_ACCESS_KEY` | "Photo by {name} on Unsplash" (required by TOS) |
|
||||
| Pexels | `PEXELS_API_KEY` | "Photo by {photographer} on Pexels" |
|
||||
| Wikimedia | None (no key needed) | "Wikimedia Commons" |
|
||||
| Picsum | None (always available) | "Picsum Photos" |
|
||||
|
||||
### Configuration Examples
|
||||
|
||||
```bash
|
||||
# Use Unsplash as primary, fall back to Pexels, then Picsum
|
||||
ROYALTY_IMAGE_PROVIDERS=unsplash,pexels,picsum
|
||||
UNSPLASH_ACCESS_KEY=your-unsplash-key
|
||||
PEXELS_API_KEY=your-pexels-key
|
||||
|
||||
# Use only Pixabay
|
||||
ROYALTY_IMAGE_PROVIDERS=pixabay
|
||||
PIXABAY_API_KEY=your-pixabay-key
|
||||
|
||||
# Disable premium providers, use only free sources
|
||||
ROYALTY_IMAGE_PROVIDERS=wikimedia,picsum
|
||||
```
|
||||
|
||||
Providers without configured API keys are automatically skipped.
|
||||
|
||||
## Architecture
|
||||
|
||||
- **Backend**: Python (FastAPI) + SQLAlchemy + APScheduler
|
||||
|
||||
Reference in New Issue
Block a user