从 Thinker 到 Coder:用 Qwen3-Coder 自定义全自动新闻视频生成器
main.py项目默认使用WhyTa API获取新闻,你可以在main.py"""从API获取新闻数据,并为每条新闻添加 raw_content 字段(正文纯文本)"""print(f"正在获取API数据:从API获取新闻数据,并为每条新闻添加 raw_content 字段(正文纯文本)""" api_url = "https://whyta.cn/api/tx/generalnews" prin
🎥 使用 AutoNewsVideo 自动生成每日新闻视频(开源项目教程)
#Qwen3-Code挑战赛#
本教程基于我的开源项目 AutoNewsVideo,欢迎 Star & Fork,一起打造更智能的新闻视频生成器!
✅ 第一步:克隆项目到本地
首先,使用 git clone 将项目拉取到本地:
git clone https://github.com/NebulaMao/AutoNewsVideo.git

然后进入项目目录:
cd AutoNewsVideo
📦 第二步:安装依赖(推荐使用 uv)
项目推荐使用 uv —— 一个超快的 Python 包管理器。如果你尚未安装 uv,可通过以下方式安装:
pip install uv
接着同步项目依赖:
uv sync
💡 如果你习惯使用
pip,也可以直接运行:pip install -r requirements.txt
🗂️ 项目结构概览
AutoNewsVideo/
├── autovideo/
│ ├── __init__.py
│ ├── autovideo.py # 核心视频生成类
│ ├── config.py # 配置文件管理
│ ├── llm_client.py # 大语言模型客户端
│ ├── tts_generator.py # 语音合成模块
│ ├── html_to_image.py # HTML 转图片工具
│ └── video_generator.py # 视频合成器
├── main.py # 主程序入口 ⭐(重点修改文件)
├── .env.example # 环境变量模板(复制为 .env 后填写)
├── pyproject.toml # 项目元数据 & 工具配置
├── requirements.txt # 传统依赖列表
└── templates/ # HTML 模板目录(用于生成字幕/画面)
🔧 第三步:自定义新闻源 —— 修改 main.py
项目默认使用 WhyTa API 获取新闻,你可以在 main.py 中找到如下函数:
def sample_news_data_fetcher(api_key: str = None) -> List[Dict[str, Any]]:
"""
从API获取新闻数据,并为每条新闻添加 raw_content 字段(正文纯文本)
"""
api_url = "https://whyta.cn/api/tx/generalnews"
print(f"正在获取API数据: {api_key}")
try:
response = requests.get(f"{api_url}?key={api_key}")
response.raise_for_status()
data = response.json()
# 提取新闻列表
news_list = data["result"]["newslist"]
# 初始化 HTML 转文本工具
h = html2text.HTML2Text()
h.ignore_links = True
h.ignore_images = True
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
}
# 逐条抓取新闻正文
for news in news_list:
if "url" in news:
try:
resp = requests.get(news["url"], headers=headers, timeout=10)
resp.raise_for_status()
news["raw_content"] = h.handle(resp.text)
except Exception as e:
print(f"⚠️ 获取新闻正文失败: {news['url']} | 错误: {e}")
news["raw_content"] = ""
return news_list
except Exception as e:
print(f"❌ 获取API数据失败: {e}")
return [] # 保持返回类型一致性
🛠️ 如何替换成你自己的新闻源?
你只需 重写或修改 sample_news_data_fetcher 函数,使其从你指定的 API 或爬虫源获取数据,并确保最终返回格式如下:
[
{
"title": "新闻标题1",
"url": "https://example.com/news1",
"raw_content": "这里是新闻正文纯文本内容..."
},
{
"title": "新闻标题2",
"url": "https://example.com/news2",
"raw_content": "这里是第二条新闻的正文..."
}
]
✅ 关键字段:
title、url、raw_content(纯文本正文)是后续视频生成必需字段。
🤖 不会代码?:让 Qwen3-Coder 帮你写爬虫!
如果你不想手动写爬虫逻辑,可以将以下提示词丢给 Qwen3-Coder(也可以在modelscope调用到,每日免费2000次):
你是一个 Python 专家,请帮我实现一个函数
sample_news_data_fetcher,用于从指定 API 获取每日新闻数据,并为每条新闻添加raw_content字段(正文纯文本)。示例结构如下:
def sample_news_data_fetcher(api_key: str = None) -> List[Dict[str, Any]]: ...最终返回格式:
[ { "title": "...", "url": "...", "raw_content": "..." }, ... ]我的新闻 API 文档如下(以 WhyTa 为例):
- 接口地址:
https://whyta.cn/api/tx/generalnews?key=你的KEY- 返回结构包含
result.newslist,每条新闻含title和url- 需要根据
url抓取网页并提取正文纯文本(可用html2text)
只需几分钟,Qwen3-Coder 就能为你生成完整可用的代码!

生成后,替换 main.py 中的函数,并确保在主程序中调用:
news_data = sample_news_data_fetcher(api_key=config.whyta_api_key)
🚀 下一步:配置 API 密钥 & 运行项目
-
复制
.env.example为.env:cp .env.example .env -
在
.env中填写你的 API Key等信息,详情查看我项目的README:WHYTA_API_KEY=your_api_key_here -
运行主程序:
python main.py
程序将自动:
- 获取新闻 → 生成摘要 → 合成语音 → 渲染画面 → 输出视频!
🌟 总结
通过本教程,你学会了:
✅ 如何快速部署 AutoNewsVideo 项目
✅ 如何自定义新闻数据源(支持任意 API 或爬虫)
✅ 如何利用 AI 编程助手(如 Qwen3-Coder)加速开发
✅ 如何一键生成带语音+字幕的新闻视频
📢 欢迎贡献!
如果你有更优的新闻源、更好的模板、或想支持更多 TTS/视频引擎,欢迎提交 PR 或 Issue!
🔗 GitHub 项目地址:https://github.com/NebulaMao/AutoNewsVideo
🎁 Bonus:搭配
crontab或 GitHub Actions,可实现 每日定时自动生成新闻视频,全自动发布到 B站/抖音/YouTube!
如有任何问题,欢迎留言交流 👇
让我们一起用 AI + 自动化,解放双手,专注创意!
更多推荐


所有评论(0)