🎥 使用 AutoNewsVideo 自动生成每日新闻视频(开源项目教程)

#Qwen3-Code挑战赛#

本教程基于我的开源项目 AutoNewsVideo,欢迎 Star & Fork,一起打造更智能的新闻视频生成器!

✅ 第一步:克隆项目到本地

首先,使用 git clone 将项目拉取到本地:

git clone https://github.com/NebulaMao/AutoNewsVideo.git

git clone 示意图

然后进入项目目录:

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": "这里是第二条新闻的正文..."
  }
]

✅ 关键字段:titleurlraw_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,每条新闻含 titleurl
  • 需要根据 url 抓取网页并提取正文纯文本(可用 html2text

只需几分钟,Qwen3-Coder 就能为你生成完整可用的代码!

Qwen3-Coder 生成示意图

生成后,替换 main.py 中的函数,并确保在主程序中调用:

news_data = sample_news_data_fetcher(api_key=config.whyta_api_key)

🚀 下一步:配置 API 密钥 & 运行项目

  1. 复制 .env.example.env

    cp .env.example .env
    
  2. .env 中填写你的 API Key等信息,详情查看我项目的README

    WHYTA_API_KEY=your_api_key_here
    
  3. 运行主程序:

    python main.py
    

程序将自动:

  • 获取新闻 → 生成摘要 → 合成语音 → 渲染画面 → 输出视频!

🌟 总结

通过本教程,你学会了:

✅ 如何快速部署 AutoNewsVideo 项目
✅ 如何自定义新闻数据源(支持任意 API 或爬虫)
✅ 如何利用 AI 编程助手(如 Qwen3-Coder)加速开发
✅ 如何一键生成带语音+字幕的新闻视频


📢 欢迎贡献!

如果你有更优的新闻源、更好的模板、或想支持更多 TTS/视频引擎,欢迎提交 PR 或 Issue!

🔗 GitHub 项目地址:https://github.com/NebulaMao/AutoNewsVideo


🎁 Bonus:搭配 crontab 或 GitHub Actions,可实现 每日定时自动生成新闻视频,全自动发布到 B站/抖音/YouTube!


如有任何问题,欢迎留言交流 👇
让我们一起用 AI + 自动化,解放双手,专注创意!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐