Mastodon News Center:自动化 Mastodon 新闻机器人管理系统
介绍 Mastodon News Center,一个基于 FastAPI 和 Docker 的新闻机器人管理系统,可以轻松管理多个 Mastodon Bot,自动抓取 RSS 新闻并发布到 Mastodon。
最近完成了一个有趣的项目:Mastodon News Center,一个用于管理和自动化多个 Mastodon 新闻机器人的后台系统。今天就来分享一下这个项目的使用方法和主要功能。
📋 项目简介
Mastodon News Center 是一个基于 FastAPI 和 Docker 的新闻机器人管理系统,可以让你轻松管理多个 Mastodon Bot,自动抓取 RSS 新闻并发布到 Mastodon。
核心功能
- 📰 自动抓取 RSS 新闻:支持多个 RSS 源,自动去重和格式化
- 🤖 多 Bot 管理:统一管理多个新闻 Bot(如 Daily、Tech、Finance 等)
- 📝 自定义模板系统:使用 Jinja2 模板自定义发帖格式
- 👁️ 内容预览:发布前预览内容,支持模板切换
- ⏰ 定时发布:基于 APScheduler 的灵活调度系统
- 🤖 AI 摘要:可选使用 OpenAI API 进行新闻摘要
- 📊 运行日志:完整的执行日志,支持筛选和分页
- ✅ 智能错误处理:自动检查内容长度,避免发布失败
🚀 快速开始
1. 克隆项目
git clone https://github.com/somincola/mastodon-news-center.git
cd mastodon-news-center
2. 配置环境变量
复制示例配置文件:
cp .env.example .env
主要配置项:
# 数据库密码(生产环境必须修改为强密码!)
POSTGRES_PASSWORD=your_strong_password_here
# Mastodon 实例地址
MASTODON_BASE_URL=https://m.somincola.org
# Mastodon 帖子最大字符数(默认 500)
MASTODON_MAX_LENGTH=500
# OpenAI API Key(可选,用于 AI 摘要)
OPENAI_API_KEY=sk-...
3. 启动服务
docker-compose up -d
启动成功后访问:http://localhost:8000/admin

📖 使用步骤
步骤 1:创建 Bot
- 访问 Dashboard 页面
- 点击”创建新 Bot”
- 填写基本信息:
- 名称:Bot 名称(如:Daily、Tech)
- Mastodon Token:从 Mastodon 实例获取的应用 Token
- Mastodon 账号:Bot 账号(格式:@[email protected])
步骤 2:配置 Bot
- 运行时间:设置每日执行时间(格式:HH:MM,每行一个)
- 示例:
09:00、18:00
- 示例:
- 最大新闻条数:每条动态包含的新闻数量(1-20)
- AI 摘要(可选):开启后使用 OpenAI 进行新闻摘要
- 发帖模板(可选):选择自定义模板或使用默认格式
步骤 3:添加 RSS 源
在 Bot 详情页面添加 RSS 源:
- 填写源名称和 URL
- 设置每次最大抓取条数
- 可单独启用/禁用某个源
步骤 4:预览和发布
在 Bot 详情页面点击”📋 预览发布内容”:
- 查看将要发布的内容
- 切换不同模板查看效果
- 确认无误后可以直接发布

✨ 特色功能
自定义发帖模板
系统支持使用 Jinja2 模板自定义发帖格式。你可以:
- 进入”Templates”页面创建模板
- 使用模板变量(
bot_name、news_items、items_count等) - 在 Bot 配置中选择该模板
模板示例:
📰 {{ bot_name }} 新闻简报
{% for item in news_items %}
{{ loop.index }}. {{ item.title }}
{{ item.link }}
{% if not loop.last %}
{% endif %}
{% endfor %}
智能错误处理
系统会自动检查内容长度,如果超过 Mastodon 的限制(默认 500 字符),会:
- 在合适位置(换行符处)自动截断
- 添加”…(内容过长,已截断)“提示
- 确保发布不会因为内容过长而失败
你可以在 .env 文件中修改 MASTODON_MAX_LENGTH 来调整限制。
运行日志
系统记录每次任务执行的详细日志:
- 执行时间、耗时、状态
- 发布的新闻条数
- 帖子 ID(自动转换为可点击的 Mastodon 链接)
- 错误信息(如果失败)
支持按 Bot、状态筛选,以及分页查看。

🛠️ 技术栈
- 后端:FastAPI
- 数据库:PostgreSQL
- 模板引擎:Jinja2
- 任务调度:APScheduler
- 容器化:Docker + docker-compose
- UI 设计:现代化设计风格(类似 shadcn/ui)
🎯 项目特点
- 开箱即用:Docker Compose 一键启动,无需复杂配置
- 统一管理:Dashboard 集中管理所有 Bot,操作简单直观
- 灵活配置:支持模板系统、AI 摘要、定时任务等
- 错误容错:自动处理内容长度、网络错误等问题
- 完整日志:详细的运行日志,便于排查问题
🔑 获取 Mastodon Token
- 登录你的 Mastodon 实例
- 进入”设置” → “开发” → “新应用”
- 填写应用信息(权限选择”读写”)
- 复制生成的 Access Token
- 将 Token 粘贴到 Bot 配置中
📝 总结
Mastodon News Center 提供了一个完整的解决方案来管理多个 Mastodon 新闻机器人。通过简洁的 Web 界面,你可以轻松配置 Bot、管理 RSS 源、预览内容,并查看详细的运行日志。
系统支持自定义模板、AI 摘要、定时任务等功能,同时具备完善的错误处理机制,确保机器人稳定运行。
项目地址:https://github.com/somincola/mastodon-news-center
许可证:MIT License
如果你对这个项目感兴趣,欢迎 Star 和 Fork!如有问题或建议,也欢迎在 Issues 中提出。