跳转到正文
技术教程·

内容自动化发布教程:用 GitHub Actions 定时生成并发布文章

内容自动化发布教程:用 GitHub Actions 定时自动生成文章、更新 sitemap 并构建部署,含 secrets 安全与推送收录配置说明。

这篇教程做什么

内容站想要"定时自动生成文章 → 更新 sitemap → 构建 → 部署"一条龙,GitHub Actions 是最常见的免费方案。本教程带你配置一条定时发布流水线。先理解工作流的概念,看 AI 工作流是什么

认识 GitHub Actions

GitHub Actions 是 GitHub 提供的 CI/CD 服务,用一个 YAML 文件定义"触发条件 + 执行步骤"。仓库里的 .github/workflows/publish.yml 会被 GitHub 自动识别。它最大的价值是"全托管":不需要自己维护构建服务器,定时、触发、执行都由平台负责。

一个定时任务的基本骨架:

name: scheduled-publish

on:

schedule:

- cron: "30 2 "

workflow_dispatch:

jobs:

build:

runs-on: ubuntu-latest

steps:

- uses: actions/checkout@v4

- name: Generate content

run: npm run generate

- name: Build static site

run: npm run build

- name: Deploy

run: ./deploy.sh

注意 cron 使用的是 UTC 时区。"30 2 " 表示每天 2:30(UTC)运行,对应北京时间 10:30。

触发方式详解

  • schedule:按 cron 定时运行,适合"每天固定时间发布"的场景。
  • workflow_dispatch:手动触发,适合调试流水线或临时发布。
  • push / pull_request:代码变更时触发,适合"提交内容就自动构建"的场景。

三种触发方式可以组合。内容站常用的是 schedule + workflow_dispatch 组合:平时定时跑,需要手动补发时也能手动触发。注意 schedule 的触发可能因为仓库长时间不活跃而被 GitHub 暂停,偶尔手动触发一次可以保持流水线活跃。

流水线的稳定性

实际项目中,内容生成可能依赖外部 API,API 不稳定时流水线会失败。建议把内容生成和构建部署拆成两个 job,生成成功后再部署,避免生成失败导致线上内容被部分更新。还可以在关键步骤后加重试逻辑,一次失败不一定要中断整个流程。

关键步骤

1. 内容生成

在流水线里调用你的内容生成脚本,把生成的 Markdown 写入内容目录。脚本可以是本地 Node 脚本,也可以调用 LLM API。如果调用海外模型 API,需要留意网络条件与合规,详见文末合规提醒。

2. 更新 sitemap

内容新增后,运行站点的 sitemap 生成插件,确保新文章进入 sitemap.xml。sitemap 的作用和生成方式见 sitemap 网站地图是什么

3. 构建与部署

npm run build 产出静态文件,再用部署步骤推送到服务器或对象存储。部署目标在自有机房时,整个流程都可以自主控制。服务器上的 SSH 密钥要放到 secrets 里,不要写进仓库。

4. 推送收录

部署完成后,可以调用各平台的收录推送接口,把新 URL 告诉搜索引擎。需要明确:推送不保证收录,更不保证排名,收录由搜索引擎算法决定。

推送收录的几种方式

  • 资源平台 API:调用百度的主动推送接口,把新 URL 批量提交。
  • IndexNow 协议:部分搜索引擎支持,一个请求同时通知多个参与引擎。
  • 更新 sitemap 并重新提交:让爬虫按清单重新抓取,适合低频更新的站点。

推送可以在流水线里作为独立步骤,也可以部署后用脚本手动触发。要注意推送频率,新 URL 推送一次即可,重复推送没有额外收益。推送只是让搜索引擎尽快知道新页面的存在,是否收录仍由算法决定。

Secrets 安全管理

不要把 API key、服务器密码写进 YAML 或代码。正确做法是:

  • 在仓库 Settings → Secrets 里保存敏感信息。
  • 在流水线里用 ${{ secrets.XXX }} 引用。
  • 日志里不要打印密钥,避免泄露。

关于 API key 的完整安全实践,看 AI API Key 安全教程。另外要检查构建日志,有些工具会在日志里输出环境变量,一旦发现立刻撤回并轮换密钥。

常见问题

  • 免费额度:公共仓库的 Actions 免费额度对个人内容站足够;私有仓库有月度时长限制,超出计费。
  • cron 时区:GitHub Actions 的定时任务使用 UTC,换算北京时间要加 8 小时。
  • 失败告警:在关键步骤后加失败检查,或在仓库设置里配置构建失败邮件通知。

合规提醒

GitHub 及 GitHub Actions 属于海外服务,其访问和使用可能受所在地网络条件与法律约束,请遵守所在地法律法规和服务条款。访问 GitHub 受限时,可考虑国内代码托管平台的 CI 服务或自建 Runner。

下一步

保障 API 调用稳定性

调用 OpenAI、Anthropic 等海外 API 时,网络波动可能导致请求超时或失败。稳定的网络环境有助于提升开发效率。

⚠️ 请遵守所在地的法律法规和服务条款。使用 AI API 时请遵守各平台的使用政策。

了解安全上网方案 →

常见问题

相关推荐

获取更多 AI 内容

订阅更新,第一时间获取新教程和工具推荐。