由于百度对于新站或者一些他们认为质量不高的站点,关闭了sitemap的提交方式,为了让百度尽快收录,就需要手动将新的文章链接手动提交到百度站长平台,实在是过于麻烦,所以就想到利用GitHub Action,将站点URL自动提交到百度站长平台和Bing的IndexNow。
首先,确保你的站点已经添加到百度站长工具平台和bing webmaster tools,获取他们的密钥。
获取百度提交密钥
点击站点管理 -> 选择需要提交的域名 -> 普通收录,默认进去就是资源提交 -> API提交。此时会给你个推送接口,里面写明了你的密钥,将其记录下来。

获取Bing IndexNow密钥
打开 How to add IndexNow to your website | Bing Webmaster Tools,在下面有个Generate API Key,根据指引,将其作为文件名保存为yourapikey.txt,放置在网站根目录,懒得操作的话可以安装Bing推荐的插件,例如RankMath、Yoast等都会自动生成这个API Key,并且这些插件会在新文章发布时自动提交。当然,我们也可以督促Bing去主动爬取,因为一旦提交了IndexNow,Bing的蜘蛛会立马爬取,不像百度那么保守。
编写代码
由于Google不支持这种方式提交,所以就没必要照顾Google了,本身它也收录的比较勤快,基本都是当天收录。本次利用Python来实现提交URL,创建一个Python项目,创建一个main.py文件,内容如下:
import requests
import xml.etree.ElementTree as ET
# --- 配置参数 ---
SITE_DOMAIN = "your domain"
# 这里请换成你自己的sitemap地址
SITEMAP_URL = f"https://{SITE_DOMAIN}/post-sitemap.xml"
# Bing 配置
BING_KEY = "your api key"
BING_API = "https://www.bing.com/indexnow"
# 百度配置 更换成自己站点的
BAIDU_TOKEN = "your api key"
BAIDU_API = f"http://data.zz.baidu.com/urls?site=https://{SITE_DOMAIN}&token={BAIDU_TOKEN}"
def get_urls_from_sitemap():
try:
r = requests.get(SITEMAP_URL, timeout=10)
r.raise_for_status()
root = ET.fromstring(r.content)
# 提取所有 URL 命名空间处理
namespace = {'ns': 'http://www.sitemaps.org/schemas/sitemap/0.9'}
urls = [node.text for node in root.findall(".//ns:loc", namespace)]
return urls
except Exception as e:
print(f"解析 Sitemap 出错: {e}")
return []
def submit_to_bing(urls):
# Bing 全部提交,巨硬比较豪气
data = {
"host": SITE_DOMAIN,
"key": BING_KEY,
"keyLocation": f"https://{SITE_DOMAIN}/{BING_KEY}.txt",
"urlList": urls
}
try:
res = requests.post(BING_API, json=data)
print(f"Bing IndexNow 提交状态: {res.status_code}")
except Exception as e:
print(f"Bing 提交失败: {e}")
def submit_to_baidu(urls):
# 仅取前 10 个链接,我记得百度是数量限制的,就提交前十个吧。
target_urls = urls[:10]
print(f"正在向百度提交前 {len(target_urls)} 个链接...")
data = "\n".join(target_urls)
try:
res = requests.post(BAIDU_API, data=data, headers={'Content-Type': 'text/plain'})
print(f"百度返回结果: {res.text}")
except Exception as e:
print(f"百度提交失败: {e}")
if __name__ == "__main__":
all_urls = get_urls_from_sitemap()
if all_urls:
# 对 Bing 提交全部链接
submit_to_bing(all_urls)
# 对 百度 仅提交前 10 个
submit_to_baidu(all_urls)
else:
print("未发现有效 URL,请检查 Sitemap。")
编写完成后,先执行一次确认没问题。
配置GitHub Action
在刚才那个Python文件的同级目录,创建.github/workflows目录,并且创建一个seo_submit.yml的文件,其内容如下:
name: SEO Auto Submission
on:
schedule:
- cron: '0 1 * * *' # 每天北京时间早上 9:00 运行(注意时区)
workflow_dispatch: # 允许手动随时点击运行
jobs:
submit:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install Requests
run: pip install requests
- name: Run Submission Script
run: python main.py
然后将这个项目推送到Github,这样每天就可以定时提交URL了。

百度提交可以在数据反馈里看到提交信息,幸运的是本站的sitemap权限并未被关闭,每周也会自动提交一次全量的。Bing的直接打开IndexNow即可看到。




