由于百度对于新站或者一些他们认为质量不高的站点,关闭了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文件,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 import requestsimport xml.etree.ElementTree as ETSITE_DOMAIN = "your domain" SITEMAP_URL = f"https://{SITE_DOMAIN} /post-sitemap.xml" 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) 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 ): 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 ): 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: submit_to_bing(all_urls) submit_to_baidu(all_urls) else : print ("未发现有效 URL,请检查 Sitemap。" )
编写完成后,先执行一次确认没问题。
配置GitHub Action 在刚才那个Python文件的同级目录,创建.github/workflows目录,并且创建一个seo_submit.yml的文件,其内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 name: SEO Auto Submission on: schedule: - cron: '0 1 * * *' 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即可看到。