MCP集成新闻旁白系统
该系统使用MCP(模型上下文协议)服务器获取实时新闻标题,为每个标题生成AI驱动的图像,并提供具有暂停/恢复功能和智能问答功能的交互式叙述体验。
🚀 特性
- 实时新闻获取:使用MCP服务器从主要新闻来源获取实时头条新闻
- AI图像生成:使用稳定扩散为每个标题创建相关图像
- 互动叙事:具有实时用户交互的暂停/恢复功能
- 智能问答:询问有关头条新闻的问题,并获得人工智能的答案
- 优雅的退路:即使MCP服务器发生故障,示例标题也能正常工作
📋 先决条件
- Python 3.12+
- Node.js(用于MCP服务器)
- OpenAI API密钥
- uv包管理器
🛠️ 安装
- 克隆存储库
git clone
cd news-narrator- 使用uv安装依赖项
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install project dependencies from pyproject.toml
uv sync- 设置环境变量
# Create .env file manually with your OpenAI API key
echo "OPENAI_API_KEY=your_api_key_here" > .env- 安装Playwright浏览器(如果需要)
# If you don't have Chrome or Chromium installed
uv run playwright install chromium🚀 用法
运行应用程序
uv run python main.py⏰ 首次运行注意事项: 初始执行大约需要 10分钟 下载稳定扩散模型(~4GB)。由于模型在本地缓存,后续运行将开始得更快。
交互流
- 选择标题计数:输入标题数量(1-20,默认值:5)
- 等待取回:系统使用MCP获取实时头条新闻
- 查看标题:请参阅要叙述的标题列表
- 交互式控制:
- 按 Enter 暂停/继续叙述 - 键入问题以获得AI支持的答案 - 每个标题都会自动生成图像
示例会话
📊 How many headlines would you like? (1-20, default: 5): 3
📰 Fetching 3 latest headlines...
✅ Successfully fetched 3 headlines!
🟢 Narration starting. Press ENTER to pause/resume or type questions.
📰 Headline 1: Major breakthrough in renewable energy storage announced
🛠️ Generating image...
🖼️ Image saved at: generated_images/major_breakthrough_renewable_energy.png
[Press Enter to pause, type questions, or let it continue...]🔧 配置
环境变量
OPENAI_API_KEY:您的OpenAI API密钥(必需)LOG_LEVEL:日志记录级别(默认值:INFO)IMAGE_OUTPUT_DIR:生成图像的目录(默认:generated_images)MCP_TIMEOUT:MCP服务器超时(秒)(默认值:60)
🧪 测试
测试标题来源
uv run python -c "
import asyncio
from main import fetch_latest_headlines
async def test_headlines():
print('Testing headline fetching...')
try:
headlines = await fetch_latest_headlines(3)
print(f'✅ Fetched {len(headlines)} headlines:')
for i, h in enumerate(headlines, 1):
print(f' {i}. {h}')
except Exception as e:
print(f'❌ Error: {e}')
asyncio.run(test_headlines())
"使用开发依赖关系运行
# Install development dependencies
uv sync --group dev
# Run linting and formatting
uv run black main.py
uv run flake8 main.py
uv run mypy main.py🐛 故障排除
常见问题
MCP服务器连接失败
- 确保已安装Node.js:
node --version - 如果您遇到与浏览器相关的错误,请安装Playwright浏览器:
uv run playwright install chromium - 检查网络连接
图像生成错误
- 第一轮需要时间:初始设置下载稳定扩散模型(约4GB,约10分钟)
- 后续运行:模型在本地缓存时速度更快
- 系统默认使用CPU进行优化
- 检查输出目录中的磁盘空间
- 为了更快地生成,请确保您有足够的RAM
OpenAI API错误
- 在中验证API密钥
.env文件 - 检查API配额和账单
- 确保稳定的互联网连接
浏览器/编剧问题
- 安装所需的浏览器:
uv run playwright install chromium - 在某些系统中,您可能需要:
uv run playwright install chrome
调试模式
启用调试日志记录:
export LOG_LEVEL=DEBUG
uv run python main.py📁 项目结构
news-narrator/
├── main.py # Final polished version with all features
├── FullMCPNarratorImage.py # Full integration (development step 4)
├── NarratorImage.py # Basic narrator with Q&A (development step 3)
├── image.py # Image generation component (development step 2)
├── MCP.py # MCP integration component (development step 1)
├── pyproject.toml # Project configuration with dependencies
├── .env # Environment variables (create manually)
├── README.md # This file
└── generated_images/ # Generated images (created at runtime)🚀 发展历程
该项目是逐步构建的,展示了解决复杂问题的系统方法:
- MCP.py -从用于网页浏览的基本MCP服务器集成开始
- image.py -添加了稳定扩散图像生成功能
- NarratorImage.py -创建了具有问答功能的基本叙述者系统
- FullMCPNarratorImage.py -集成MCP标题提取和叙述者
- main.py -经过改进的用户体验和错误处理的最终抛光版本
每个文件都代表开发过程中的一个工作里程碑,显示了项目是如何从单个组件演变为一个完整的集成系统的。
🔧 发展
代码的风格
# Format code
uv run black main.py
# Type checking
uv run mypy main.py🤝 贡献
- 分叉存储库
- 创建要素分支:
git checkout -b feature-name - 通过适当的测试进行更改
- 确保代码质量:
black,flake8,mypy - 用描述性消息提交
- 推送并创建拉取请求
📝 许可证
该项目根据MIT许可证获得许可。
🙏 致谢
- 用于GPT模型和API的OpenAI
- 稳定扩散的稳定性AI
- MCP(模型上下文协议)项目
- Astral紫外包装管理器
______________________________________________________________________
版本: 1.0.0\ Python版本: 3.12+\ 程序包管理器:紫外线
