根据你设定的规则,通过 IndexNow 协议自动提交 URLs 的工具。
已经从 IndexNow 获取了 Key 文件并添加到了你的网站上。 如果你不知道如何获取 Key 文件,请看IndexNow 文档。
Tip
如果你的网站是存放在公开仓库 (例如 GitHub Pages),将 Key 文件直接保存在仓库中会泄露此文件的内容和位置,可能存在潜在的安全风险。如果你想避免这种情况,请使用在部署时生成 key 文件的方案。请参考 在部署时生成 IndexNow Key 文件一节。
steps:
- uses: bojieyang/indexnow-action@v2 # v2 is the latest major version following the action-versioning.
with:
# The location of your sitemap must start with http(s).
# Currently, XML Sitemap, Sitemap index, RSS and Atom formats are supported.
sitemap-location: 'https://example.com/sitemap.xml'
key: ${{ secrets.INDEXNOW_KEY }} # The key you get from IndexNow.
下面是在我的博客中使用的实际例子:
name: 'IndexNow'
on:
schedule:
# Set the schedule time
- cron: '0 2 * * *'
jobs:
check-and-submit:
runs-on: ubuntu-latest
steps:
- name: indexnow-action
uses: bojieyang/indexnow-action@v2
with:
sitemap-location: 'https://bojieyang.github.io/sitemap.xml'
key: ${{ secrets.INDEXNOW_KEY }}
浏览代码见这里.
-
sitemap-location
必填
。 设置网站中 sitemap 文件的路径。必须以 https 或 http 开头(示例:https://example.com/sitemap.xml)。 -
key
必填
。 设置你从搜索引擎处获取到的 IndexNow key。Note 不要将值以纯文本的方式存储在你的 workflow 文件中,而是使用 GitHub Secrets 来加密存储。 关于 GitHub Secrets 的更多信息,详见Encrypted Secrets。
-
key-location
可选
。 设置自定义的 IndexNow key 文件在网站的路径。 如果没有设置,则假定文件名为{your-indexnow-key}.txt
,存放在网站根目录下(示例:https://example.com/{your-indexnow-key}.txt)。Note 不要将值以纯文本的方式存储在你的 workflow 文件中,而是使用 GitHub Secrets 来加密存储。 关于 GitHub Secrets 的更多信息,详见Encrypted Secrets。
-
since
可选
。 设置距当前多长时间内的 URLs 会被提交给搜索引擎。sitemap 文件中的 URL,如果其lastmod
字段为最近 {since} {since-unit} 内,则会被提交。默认值是 1。 -
since-unit
可选
。 设置 since 对应的单位。可用的单位为minute
,hour
,day
,week
,month
和year
. 默认值是day
。 -
endpoint
可选
。 设置提交的搜索引擎。可用的值为api.indexnow.org
,www.bing.com
,search.seznam.cz
和yandex.com
。 更多内容请参考IndexNow FAQ. 默认值是www.bing.com
。 -
limit
可选
。 设置提交的 URLs 的数量上限。默认值是 100。 -
timeout
可选
。 设置获取 sitemap 和提交到搜索引擎的超时时间,单位为毫秒。默认值是 10000(10 秒)。 -
failure-strategy
可选
。 设置提交失败时的处理策略。可用的值为ignore
和error
。 设置为ignore
, 表示仅输出提醒信息。 设置为error
, 表示输出错误信息的同时会将 Action Status 设置为失败。默认值为ignore
。
- XML Sitemap
- Sitemap Index
- RSS 2.0
- Atom 1.0
在部署时动态生成 key 文件,可以避免将 key 文件存放在公开仓库中导致泄露的问题。不同的平台有各自的在部署流程中动态生成文件的方案。这里以 GitHub Pages 为例,介绍对应的解决方案。
部署方案具体步骤如下:
- 通过 GitHub Secrets 存储 IndexNow 的 key 的内容。
- 通过 GitHub Action 部署网站。
- 在对应 Action 的部署配置中加入一下内容:
jobs:
build:
steps:
### ... 省略其他步骤
- name: Setup IndexNow
# Generate files dynamically to prevent them from being leaked in public repositories.
# This example will put the file in the root directory of the site.You may change the location by yourself.
run: echo ${{ secrets.INDEXNOW_KEY }} > ${{ secrets.INDEXNOW_KEY }}.txt
### ... 省略其他步骤
完整部署文件详见这里。
v2 是当前维护版本,基于 Node.js v20。建议在可能的情况下尽量使用 V2 版本。
v1 版本为遗留版本,基于 Node.js v16。当无法使用 Node.js v20 版本时,可以使用此版本。
使用 lquixada/cross-fetch 在 Nodejs v16 版本中兼容 WHATWG Fetch API。
使用 @NaturalIntelligence/fast-xml-parser 解析 XML。
使用 @iamkun/dayjs 简化日期相关的计算。
欢迎贡献代码。请在编写代码之前创建一个issue
来说明相关意图。如果有必要,请附上设计方案。
本项目使用 MIT License 许可发行。