念念不忘
必会回响

利用GitHub Action自动提交网站链接

由于百度对于新站或者一些他们认为质量不高的站点,关闭了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推荐的插件,例如RankMathYoast等都会自动生成这个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即可看到。

赞(0) 打赏
未经允许不得转载:堆上小栈 » 利用GitHub Action自动提交网站链接

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册