Hexo 博客配置 GitHub Actions 推送 indexnow
什么是 indexnow?
API Key
找到 Indexnow 官网生成 API Key(每点击一次 Generate 都会生成一个新的 Key):
你需要点击下载按钮将该 5617c6a058f84405b90e2a0c6e99519a.txt
文件保存好。
然后把它放到你的网站根目录下,让它可以通过网址链接 https://www.example.com/5617c6a058f84405b90e2a0c6e99519a.txt
的形式访问,并得到明文 API Key:5617c6a058f84405b90e2a0c6e99519a
比如,将 5617c6a058f84405b90e2a0c6e99519a.txt
放在 source
目录下,并在_config.yml
中配置 skip_render
如下:
这样可以确保 Hexo 不会尝试渲染这些文件,而只是将它们直接复制到 public
目录。
这样就做好了第一和第二步。
GitHub Actions 配置
GitHub 的 Actions 允许你运行一些小文件,我们可以采用 Python 脚本的方式来提交 URLs
编写提交 URLs 的 Python 脚本
我的 Python 文件如下:index_now.py
脚本值得注意的点在于:
HOST = "userName.github.io"
KEY = "5617c6a058f84405b90e2a0c6e99519a"
sitemap_path = "sitemap.xml"
前面两个主要是配置成你自己的就行。
主要是第三个 sitemap 路径问题,我建议同样存放在网站根目录下。可以安装 hexo-generator-sitemap
插件,该插件在每次 hexo g
生成文件时重新生成新的 sitemap.xml
文件并放置在 public
目录下,这会使得它被推送时放置在仓库根目录下,符合我脚本的要求。
脚本编写好后,同样需要将其推送到仓库,我的是根目录。我将其同样放在 source
目录下,这样它会和 key.txt
一同被推送至仓库根目录。
本地创建 workflows
创建 GitHub workflow 一般是.github/workflows/xxx.yml
但是 Hexo 默认忽略以点(.example
)开头的文件和文件夹,所以我的做法是修改_config.yml
中的 include
项,将其添加进去:
本来我以为添加 include 就行,但实际还需要做以下操作:
此时还需要修改下 skip_render 这个配置,否则 hexo 会自动把 yaml 文件给转成 json 格式的,到时候 GitHub 是不识别的:_config.yml
最后需要配置下 hexo 的 deploy 配置,不要忽略隐藏文件。否则在最后部署到 GitHub 时,隐藏文件会被忽略掉:_config.yml
.github
隐藏目录相关配置项参考链接为:Hexo 博客使用 GitHub Actions 来自动提交 Sitemap
这样,Hexo 会将 source/.github
文件夹中的内容也复制到 public
目录中,再通过 hexo d
命令部署到 GitHub。
不过你得确保你的 .github
目录直接放在 source
目录下,即结构如下:
这样一来当你推送代码至仓库时,GitHub 会自动触发 Actions 运行你的 your-action.yml
文件,所以需要在这个文件中调用我们写的 Python 脚本。
我的 indexnow.yml
文件(名字可以随意,但请具有语义性)如下:
该文件值得注意的点在于:
branches: ["master"]
python index_now.py
注意修改成你的配置项就行。
至此准备工作已经完毕,你只需要推送新代码到仓库就会自动触发 actions 发请求给必应的 indexnow,最终你可以在必应网站管理员工具查看效果。