在开发自动化内容更新工具时,将多个独立脚本整合为一个交互式命令行入口,可以简化操作流程。本文介绍创建一个main.py,运行时显示菜单,提供自动抓取资讯更新网站和根据标题生成文章更新网站两个选项,并支持预览模式。

核心问题

如何将多个自动化脚本整合为一个带菜单的交互式命令行工具?


背景

在维护一个内容网站时,我们经常需要执行两类操作:从外部来源(如 RSS)自动抓取资讯并更新到网站,或者根据一个给定的标题生成完整的文章并发布。这两项任务最初可能由独立的脚本或模块完成,每次使用时需要记住不同的命令和参数。为了简化日常操作,我们可以创建一个交互式的主程序文件 main.py,将现有流水线整合成一个带有菜单的 CLI 工具,用户只需运行一个命令,就能通过选择菜单项来执行不同功能。

交互式入口设计

新的 main.py 是一个纯 Python 脚本,启动后立即显示一个清晰的文本菜单,等待用户输入数字选择。菜单结构如下:

============================================================
           圆圈网内容更新工具(交互模式)
============================================================

请选择功能:

  1. 自动抓取资讯并更新网站
  2. 输入标题,生成文章并更新网站
  3. 退出

用户输入对应的数字后,程序会引导进入具体的功能流程。这种设计让非技术用户也能轻松使用,不必记忆任何命令行参数。

菜单功能详解

选项 1:自动抓取资讯并更新网站

该功能对应原有的 RSS 抓取 → 摘要 → 发布流程,主要针对 AI/ComfyUI 相关资讯。选择后,程序会进一步询问:

  • 是否仅预览:如果选“是”,则只生成本地预览文件(存放在 preview/ 目录),不会真正调用网站接口发布;如果选“否”,则会正式将内容更新到线上。
  • 最多处理几条:可以控制本次抓取并处理的条目数量,避免一次性处理过多内容。

这个功能适合定期从指定信息源批量获取最新动态,自动生成摘要并更新网站。

选项 2:输入标题,生成文章并更新网站

该功能允许用户手动指定一个文章标题,由程序自动生成一篇长文(可能包含配图)并发布。选择后,会询问:

  • 是否仅预览:同样支持先预览再决定是否发布。
  • 是否跳过配图:如果只想快速生成纯文本文章,可以选择跳过配图步骤,节省时间。
  • 还可以指定文章的分类和关键词,以便更精准地生成内容。

这个功能适用于需要针对某个主题快速产出文章的场景,比如突发新闻或专题策划。

选项 3:退出程序

选择后退出交互循环,程序结束运行。每次执行完一项任务后,程序会按回车回到主菜单,便于连续操作多个任务,最后再退出。

预览与正式发布

无论是抓取资讯还是生成文章,都内置了预览模式。预览时生成的内容会保存在本地 preview/ 目录,用户可以打开检查质量、标题、正文、配图等是否满意。确认无误后,可以再次运行同一选项并选择“否”(即正式发布模式),程序才会调用网站的 API 进行实际发布。这种两步操作的设计有效避免了错误内容直接上线。

运行与配置

使用交互式主程序的方法非常简单,只需在项目目录下激活虚拟环境并执行脚本:

cd d:\python_project\自动更新圆圈网
.\.venv\Scripts\activate
python main.py

首次使用前需要配置环境变量,复制示例文件并根据实际情况填写令牌和 API 密钥:

copy .env.example .env
# 编辑 .env,填写 CIRCLER_API_TOKEN、LLM_API_KEY 等

原有的命令行模式(通过 python -m src.cli ... 调用)仍然保留,供需要脚本自动调用的场景继续使用。日常交互操作则统一使用 python main.py。

总结

通过一个简单的交互式菜单入口,我们将复杂的自动化工具变得对用户更加友好。这种设计不仅降低了使用门槛,还通过预览机制增强了安全性。如果你手头有多个独立脚本,也可以借鉴这种方式,用 input() 循环和条件分支快速构建一个统一的操作界面,让日常任务处理更加高效。