Twitter News Monitor 是一个智能的 Twitter 内容监控系统,能够自动监控指定的 Twitter List,使用 LLM(大语言模型)分析推文内容的相关性和价值,自动翻译英文内容为中文,并通过 Telegram 推送高价值推文。
- 🔍 智能监控:自动监控多个 Twitter List,实时获取最新推文
- 🤖 AI 分析:支持 Gemini、OpenAI、通义千问等多种 LLM,智能评估推文价值(0.0-1.0 评分)
- 🌐 自动翻译:英文推文自动翻译为中文,便于阅读理解
- 📱 Telegram 推送:高价值推文即时推送到 Telegram,不错过重要信息
- 🖥️ Web 控制台:美观的 Web 界面,查看历史推文、调整参数、手动刷新
- ⏰ 定时任务:可配置的自动检查间隔,灵活调整监控频率
- 🔐 安全认证:密码保护的管理后台
- 科技新闻追踪
- AI/机器学习领域动态监控
- 加密货币市场资讯
- 行业 KOL 观点聚合
- 竞品动态跟踪
- Python 3.8+
- Twitter 账号(用于获取认证 Token)
- Telegram Bot(用于消息推送)
- LLM API Key(Gemini/OpenAI/通义千问任选其一)
git clone https://github.com/yourusername/twitternews.git
cd twitternewspip install -r requirements.txt创建 .env 文件(或复制 .env.example):
# 安全配置
SECRET_KEY=your-secret-key-change-in-production
ADMIN_PASSWORD=your_admin_password
# 数据库
DATABASE_URL=sqlite:///./database/automation.db
# Twitter 认证(必需)⚠️ 重要:请参考 docs/TWITTER_AUTH_GUIDE.md 获取
TWITTER_AUTH_TOKEN=your_twitter_auth_token
TWITTER_CT0_TOKEN=your_twitter_ct0_token
TWITTER_LIST_URLS=https://x.com/i/lists/123456,https://x.com/i/lists/789012
# LLM 配置(三选一)
LLM_PROVIDER=gemini # 可选: gemini, openai, qwen
DEFAULT_LLM_MODEL=gemini-1.5-pro
# Gemini
GEMINI_API_KEY=your_gemini_api_key
# OpenAI
OPENAI_API_KEY=your_openai_api_key
# 通义千问
QWEN_API_KEY=your_qwen_api_key
# Telegram 推送(必需)
TELEGRAM_BOT_TOKEN=your_telegram_bot_token
TELEGRAM_CHAT_ID=your_telegram_chat_id
# 自动化配置
AUTOMATION_CHECK_INTERVAL_MINUTES=5
DEFAULT_SCORE_THRESHOLD=0.85python -m app.main或使用 uvicorn:
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000# 修改 twitternews.service 中的路径
sudo cp twitternews.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable twitternews
sudo systemctl start twitternews
# 查看状态
sudo systemctl status twitternews打开浏览器访问:http://localhost:8000
默认密码:admin123(请及时修改 .env 中的 ADMIN_PASSWORD)
简要步骤:
- 在浏览器中登录 Twitter/X
- 打开开发者工具(F12)
- 切换到 Network 标签
- 刷新页面,找到任意请求
- 在 Request Headers 中找到:
authorization: Bearer ...→ 复制整个值到TWITTER_AUTH_TOKENcookie中的ct0=...→ 复制值到TWITTER_CT0_TOKEN
详细文档:Twitter List 使用指南
- 支持多个 List,用逗号分隔
- 格式:
https://x.com/i/lists/LIST_ID - 运行中途可直接修改
.env并重启服务
| 提供商 | 设置 LLM_PROVIDER |
API Key 变量 | 推荐模型 |
|---|---|---|---|
| Google Gemini | gemini |
GEMINI_API_KEY |
gemini-1.5-pro |
| OpenAI | openai |
OPENAI_API_KEY |
gpt-4 |
| 阿里通义千问 | qwen |
QWEN_API_KEY |
qwen-turbo |
- 与 @BotFather 对话创建 Bot
- 获取
TELEGRAM_BOT_TOKEN - 与你的 Bot 对话,发送
/start - 访问
https://api.telegram.org/bot<YOUR_BOT_TOKEN>/getUpdates获取chat_id
twitternews/
├── app/
│ ├── __init__.py
│ ├── main.py # FastAPI 主入口
│ ├── config.py # 配置管理
│ ├── database.py # 数据库连接
│ ├── models.py # SQLAlchemy 模型
│ ├── routers/
│ │ ├── web.py # Web 界面路由
│ ├── services/
│ │ ├── llm.py # LLM 分析服务
│ │ ├── scheduler.py # 定时任务
│ │ ├── telegram.py # Telegram 推送
│ │ └── twitter.py # Twitter API 封装
│ └── templates/ # Jinja2 模板
│ ├── base.html
│ ├── index.html
│ ├── login.html
│ └── settings.html
├── database/ # SQLite 数据库目录
├── logs/ # 日志目录
├── docs/ # 文档目录
│ ├── TWITTER_AUTH_GUIDE.md
│ └── TWITTER_LIST_GUIDE.md
├── .env # 环境变量(需自行创建)
├── requirements.txt # Python 依赖
├── twitternews.service # Systemd 服务文件
└── README.md
-
推文浏览
- 按日期浏览历史推文
- 根据评分筛选(0.0 - 1.0)
- 查看 AI 翻译和摘要
-
设置面板
- 调整自动检查间隔(分钟)
- 实时生效,无需重启
-
手动刷新
- 点击右下角刷新按钮
- 立即触发一次推文抓取和分析
🚨 发现高价值推文 (评分: 0.92)
👤 Elon Musk (@elonmusk)
📝 翻译:特斯拉全自动驾驶系统将在下周推送重大更新...
🧾 摘要:特斯拉 FSD 更新,改进城市道路驾驶能力
🔗 https://x.com/elonmusk/status/123456789
修改 app/config.py 中的 DEFAULT_PROMPT:
DEFAULT_PROMPT: str = """
你是一名精通中英文的科技新闻编辑,需要按照以下步骤处理推文:
1. 判断推文语言;如果不是中文,请先将整段推文准确翻译成中文,写入 translation 字段,内容以"翻译:"开头。
2. 基于中文内容分析其与科技、人工智能或加密货币的相关性,给出 0.0~1.0 的评分,写入 score 字段(浮点数)。
3. 用中文撰写简洁要点,写入 summary 字段,内容以"摘要:"开头。
4. 仅返回严格的 JSON,字段顺序不限,不要额外文本。
Tweet: {tweet_text}
Output format (JSON):
{{"score": 0.8, "translation": "翻译:...", "summary": "摘要:..."}}
"""修改 .env 中的 DEFAULT_SCORE_THRESHOLD(默认 0.85):
DEFAULT_SCORE_THRESHOLD=0.75 # 降低阈值,接收更多推文- 症状:日志显示 GraphQL 请求失败
- 原因:Twitter 的 API Query ID 可能已变化
- 解决:
- 打开浏览器开发者工具
- 访问 Twitter List 页面
- 找到
ListLatestTweetsTimeline请求 - 复制新的
queryId - 更新
app/services/twitter.py中的QUERY_ID
- 检查 API Key 是否正确
- 检查网络连接(某些 LLM 可能需要代理)
- 查看日志:
journalctl -u twitternews -n 50
- 确认 Bot Token 正确
- 确认 Chat ID 正确
- 确认已与 Bot 对话并发送过
/start
# 测试 LLM 连接
python test_qwen.py
# 查看日志
tail -f logs/app.log- 遵循 PEP 8
- 使用类型提示
- 添加必要的注释
欢迎提交 Issue 和 Pull Request!
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情
如有问题或建议,请:
- 提交 Issue
- 发送邮件至 [email protected]
Twitter News Monitor is an intelligent Twitter content monitoring system that automatically monitors specified Twitter Lists, uses LLM (Large Language Models) to analyze tweet relevance and value, automatically translates English content to Chinese, and pushes high-value tweets via Telegram.
- 🔍 Smart Monitoring: Automatically monitor multiple Twitter Lists
- 🤖 AI Analysis: Support for Gemini, OpenAI, Qwen with intelligent scoring (0.0-1.0)
- 🌐 Auto Translation: Automatically translate English tweets to Chinese
- 📱 Telegram Push: Real-time notifications for high-value tweets
- 🖥️ Web Console: Beautiful web interface for browsing and management
- ⏰ Scheduled Tasks: Configurable automatic check intervals
- 🔐 Secure Authentication: Password-protected admin panel
See Chinese documentation above for detailed setup instructions.
⭐ If you find this project helpful, please give it a star!