序
hexo使用hexo-submit-urls-to-search-engine
插件後,可主動推送Hexo部落格新連結至谷歌、必應、百度搜尋引擎站長平台以提升網站收錄品質和速度。本插件允許你向各大搜尋引擎發送純天然、植物飼養的索引編製請求,一勞永逸。
比如,現在我的一篇文章有時剛發布 5 分鐘,即可在必應搜尋到(這是最佳情況,不保證長期穩定)。看吧,這就是 hexo-submit-urls-to-search-engine
的威力。百度與谷歌略慢一籌。
這三大搜尋引擎已佔據 97% 的全球搜尋引擎市場份額(包括元搜尋引擎 多吉、Duckduckgo 等;使用 Bing 索引的雅虎、 Ecosia 等)。
警告
非專業使用其他類似的推送代碼可能會導致危險的副作用,包括但不限於:安全缺陷症、冗餘代碼症、重新發明輪子症、啃文檔症、懷疑人生、憂鬱、頭疼,甚至死亡、魂飛魄散、湮滅。
官方交流 QQ 群 及 Telegram group 已經停止服務。請前往 Github issue 頁面參與討論。
操作步驟
快速入門:
- 取得各站長平台密鑰
- 安裝並配置
hexo-submit-urls-to-search-engine
插件 hexo clean && hexo g && hexo d
,並查詢推送結果- 如果推送成功,前往 Github 地址 點擊 Star 按鈕以支持
- 順便 watch Github 項目獲取插件升級提醒
- 還可以 點此去打賞
取得站長平台密鑰
本節所“記下”的密匙均填寫至 hexo 的 _config.yml
,格式在後文給出。
關於驗證網站:有的 Hexo 主題支持添加站長平台 html 驗證標籤,填寫有關設置後hexo g && hexo d
即可驗證。通用詳細操作步驟請自行 谷歌 :hexo 站長平台 驗證
百度
百度是中國的一款搜尋引擎。除非在中國當局辦理複雜的網站備案手續,否則網站很難被收錄。
如果您的網站伺服器位於中國境外,基本不可能辦理網站備案手續。
必應
必應站長平台有新舊之分。
- 註冊、登入必應新站長平台 Bing Webmaster Tools
- 添加網站
- 進入網站管理頁面,設定,API 訪問,API 密鑰 ,記下 API 密匙
(近期必應站長平台升級,伺服器、版面不穩定,如果無法顯示 token ,可以過段時間再試) 現在已經升級到新的站長平台了。
這是從必應舊站長平台取得的示意圖:
谷歌
如果您到伺服器位於中國境內,請注意您的伺服器需要能夠訪問國際網際網路,才能推送到谷歌。
谷歌站長平台也有新舊之分,但兩站關係沒有必應處理得好。另外,我們使用的 Google Indexing API 不是站長平台提供的,而是隸屬 google developers 谷歌開發平台。過程中,您可參考官方文檔(中國內地可訪問)進行配置。
使用步驟:
- 打開 官方文檔 ,按提示創建項目、創建服務帳號。只需要按提示在網站進行配置操作即可,不需要完成取得訪問權杖等後續操作
您僅按谷歌官方文檔在 Google 新的“搜尋控制台”中添加權限信箱還是會提示“無權限”。請轉到 舊的網站站長工具,點擊您的網站,把信箱地址添加到其中現在直接在新的站長平台提交即可。- 將取得到的 json 密匙檔案放於 hexo 根目錄(與hexo _config.yml檔案位置相同)
谷歌舊的網站站長工具:
另外,其官方文檔中有如下提示,請根據實際情況決定是否啟用向谷歌提交連結的功能:
目前,Indexing API 只能用於抓取包含 JobPosting
或 BroadcastEvent
(巢狀於 VideoObject
)的網頁。對於包含很多短效網頁(如招聘資訊或直播影片)的網站,Indexing API 會透過為不同的內容分別推送更新,使搜尋結果中的內容保持最新狀態。
Indexing API 快速入門 | Google 搜尋中心 | Google for Developers
反正我提交了。谷歌不抓取網站,怎麼知道您的網頁不包含
招聘資訊或直播影片
呢?既然抓了,即使沒發現招聘資訊或直播影片
,又有什麼原因浪費資源、把已抓取的資訊棄之不用呢?既然用,我們的目的就達到了。實際使用過程中,谷歌好像也沒有對此進行降權。也許是谷歌忘了改文檔?我目前就發現這個文檔中有兩處多年未改的嚴重錯誤。
配置hexo
安裝本插件
請在 hexo 根目錄運行:
當然,在大中華地區使用
cnpm
下載速度更快
npm install --save hexo-submit-urls-to-search-engine
本插件也支持yarn
安裝:
yarn add hexo-submit-urls-to-search-engine
編輯hexo的_config.yml
hexo-submit-urls-to-search-engine
配置 hexo-submit-urls-to-search-engine
插件,將下方貼上至 hexo 的_config.yml
。
提示
您當然可以利用環境變數設置記錄密匙,這樣即使原始碼放在公開倉庫,也不會洩露秘鑰
hexo_submit_urls_to_search_engine:
submit_condition: count #連結被提交的條件,可選值:count | period 現僅支援count
count: 10 # 提交最新的10個連結
period: 900 # 提交修改時間在 900 秒內的連結
google: 0 # 是否向Google提交,可選值:1 | 0(0:否;1:是)
bing: 1 # 是否向bing提交,可選值:1 | 0(0:否;1:是)
baidu: 1 # 是否向baidu提交,可選值:1 | 0(0:否;1:是)
txt_path: submit_urls.txt ## 文字文檔名, 需要推送的連結會保存在此文字文檔裡
baidu_host: https://cjh0613.github.io ## 在百度站長平台中註冊的網域
baidu_token: 請按照文檔說明取得 ## 請注意這是您的秘鑰, 所以請不要把它直接發佈在公眾倉庫裡!
bing_host: https://cjh0613.github.io ## 在bing站長平台中註冊的網域
bing_enable_indexnow: false # 是否用 indexNow 提交連結給必應: true (Yes) | false (No). 只有 2.1.1 及之後的版本才可以開啟這個功能。
bing_token: 請按照文檔說明取得 ## 請注意這是您的秘鑰, 所以請不要把它直接發佈在公眾倉庫裡!
google_host: https://cjh0613.github.io ## 在google站長平台中註冊的網域
google_key_file: Project.json #存放google key的json檔案,放於網站根目錄(與hexo _config.yml檔案位置相同),請不要把json檔案內容直接發佈在公眾倉庫裡!
google_proxy: http://127.0.0.1:8080 # 向谷歌提交網址所使用的系統 http 代理,填 0 不使用
replace: 0 # 是否替換連結中的部分字串,可選值:1 | 0(0:否;1:是)
find_what: http://cjh0613.github.io/blog
replace_with: https://cjh0613.com
將密鑰公開的後果
您的“冤家”、有自我意識的人工智慧、恐怖分子可能使用您的密鑰向搜尋引擎推送不存在的頁面連結。既消耗您的配額讓您無法正常推送,又因推送死鏈導致網站權重下降
註釋
- submit_condition:支援兩種是否提交連結的判斷方式,即 count | period 。分別應用下方 count | period 配置項
- period:一段時間,單位秒,若文章更新時間與本插件執行時間之差小於這個數值,其連結會被提交。例如:有兩個檔案 a.html 和 b.html,分別對應
https://yoursite.com/a.html
和https://yoursite.com/b.html
,其更新時間與本插件執行時間之差分別為 800s 和 1000s(period 欄位設為 900),則https://yoursite.com/a.html
會被提交,https://yoursite.com/b.html
不會 - google_proxy:向谷歌提交網址所使用的系統 http 代理,格式:
http://proxyhost:port
,修改proxyhost
、port
即可;Hexo 部署於境外可填 0 不使用。使用科學上網軟體,proxyhost
一般為127.0.0.1
,port
可在軟體中查看設定,一般為8080
。Win10 可在 設定->代理 處查看 - replace: 部分連結可能生成不正確(如中文網域,首頁位於
http://cjh0613.github.io/blog
等情況)。這是一個簡單粗暴的替換功能,將生成的全部連結中的指定字串以替換。範例中將http://cjh0613.github.io/blog
替換為https://cjh0613.com
。也可將中文網域替換為轉碼後的網域。
2020.7.12 更新本節註釋,感謝 liuyib 提供建議 2021.5.12 添加 google_proxy
完成上述配置後,你在 Hexo 根目錄下執行 hexo generate
指令時,會生成一個 .txt
檔案來儲存要推送的連結。
您可以打開此檔案查看連結是否正確,如不正確,請訪問 hexo 的 _config.yml
進行配置。您也可以手動修改此 .txt
檔案後再推送連結。
deploy
如果您之前沒有添加過 deploy:
配置項,直接將下方貼上至 hexo 的 _config.yml
,覆蓋預設的 deploy:
配置項。
deploy:
- type: cjh_google_url_submitter
- type: cjh_bing_url_submitter
- type: cjh_baidu_url_submitter
完成這一步之後,執行 hexo deploy
命令時就可以自動推送連結至搜尋引擎了。
- 您必須執行
hexo deploy
或hexo d
命令以觸發推送,無論您之前是否使用這條命令進行部署。
當然此前您需要執行 hexo generate
生成最新的 .txt 檔案來儲存要推送的連結。
如果可以推送成功,煩請至 Github 倉庫 Star 支持一下,謝謝!
如果已設定過 deploy:
配置項,直接貼上上述程式碼塊會提示 配置衝突,直接在已有 deploy:
配置項下添加即可。如:
deploy:
- type: git
repo:
coding: git@xxx
branch: master
#添加本插件的配置項:
- type: cjh_google_url_submitter
- type: cjh_bing_url_submitter
- type: cjh_baidu_url_submitter
注意:上面每個 type:
前都有 -
持續整合支援
本節為 hexo 存放於公開倉庫,且使用 CI (持續整合,如 Github action, travis, coding-ci, netlify 等)編譯發佈的部署方式提供參考。
百度、必應可利用環境變數記錄密匙,谷歌有其他解決辦法,參見下文
請注意,如果您使用 CI 自動部署,請務必在每個頁面的 Front-matter (.md
檔案最上方以 ---
分隔的區域,用於指定個別檔案的變數)中添加updated:
來告知 Hexo 修正“文章最後修改時間”,舉例來說:
---
title: Hello World
date: 2013/7/13 20:46:25
updated: 2020-08-25 9:36:00
---
這是因為,檔案放在本地電腦上時,如果沒有updated:
,Hexo 會讀取檔案屬性,使用“檔案最後修改時間”作為“文章最後修改時間”,可以正常判斷並提交最新的 10 個連結;而 CI 自動部署時,由於 Hexo 資源都是才 clone 到伺服器上的,如果沒有添加updated:
,Hexo 同樣會讀取檔案屬性,但此時屬性中最後修改時間是完全相同的 git clone 的時間,Hexo 得到錯誤的“文章最後修改時間”,就無法正常判斷並提交最新的連結了。
- 請先在
hexo_submit_urls_to_search_engine:
的配置項baidu_token:
與bing_token:
處填寫0
- 設置環境變數
BAIDU_TOKEN
,BING_TOKEN
,值為已取得的token
- 如果您使用 Github Action ,還需在
yml
檔案中設置環境變數,下方有例子 hexo clean && hexo generate && hexo deploy
享受生活
參考:
hexo_submit_urls_to_search_engine:
submit_condition: count #連結被提交的條件,可選值:count | period 現僅支援count
count: 10 # 提交最新的10個連結
period: 900 # 提交修改時間在 900 秒內的連結
google: 1 # 是否向Google提交,可選值:1 | 0(0:否;1:是)
bing: 1 # 是否向bing提交,可選值:1 | 0(0:否;1:是)
baidu: 1 # 是否向baidu提交,可選值:1 | 0(0:否;1:是)
txt_path: submit_urls.txt ## 文字文檔名, 需要推送的連結會保存在此文字文檔裡
baidu_host: https://en.cjh0613.com ## 在百度站長平台中註冊的網域
baidu_token: 0 ## 請注意這是您的秘鑰, 所以請不要把它直接發佈在公眾倉庫裡!
bing_host: https://en.cjh0613.com ## 在bing站長平台中註冊的網域
bing_token: 0 ## 請注意這是您的秘鑰, 所以請不要把它直接發佈在公眾倉庫裡!
google_host: https://en.cjh0613.com ## 在google站長平台中註冊的網域
google_key_file: Project.json #存放google key的json檔案,放於網站根目錄(與hexo _config.yml檔案位置相同),請不要把json檔案內容直接發佈在公眾倉庫裡!
google_proxy: 0 # 向谷歌提交網址所使用的系統 http 代理,填 0 不使用
replace: 0 # 是否替換連結中的部分字串,可選值:1 | 0(0:否;1:是)
find_what: http://cjh0613.github.io/blog
replace_with: https://cjh0613.com
Github Action ,還需在 yml
檔案中設定環境變數:
- name: xxxx #隨便填
env:
BAIDU_TOKEN: ${{ secrets.BAIDU_TOKEN }} # 注意這裡,其他的都是浮雲
BING_TOKEN: ${{ secrets.BING_TOKEN }} # 注意這裡,其他的都是浮雲
run: |
npm i -g hexo-cli # 安裝hexo
npm i
……
hexo deploy
至於推送連結至谷歌,json
密鑰檔案裡資訊那麼多,複製貼上設定環境變數……實在是麻煩。我將json
密鑰檔案放入一個私有倉庫, 再 clone ,複製到根目錄下解決。
插件升級
插件升級提醒
您安裝本插件後,請從 Github watch 本項目,以獲得插件升級提示(選擇 Releases only 僅獲取升級提示,選擇 Watching 還會推送 Issues ,Pull requests 等,透過電子郵件發送)
升級操作
請在 hexo 根目錄執行:
當然,在大中華地區使用
cnpm
下載速度更快
npm install --save hexo-submit-urls-to-search-engine@版本
我之前給出的是另一個命令:npm update --save hexo-submit-urls-to-search-engine
,但我實測時出現了問題。
yarn
升級:
yarn add hexo-submit-urls-to-search-engine@版本
不相容升級
警告
有時,插件升級不向下相容,可能會需要您修改 hexo 的_config.yml
中與本插件有關的配置項,或作其他修改。
此情況一般伴隨 版本號中第一個小數點前的數字增加 出現。如 ^1.0.0
升級至 ^2.0.0
。
1.x.x升級至2.x.x:
您需要給hexo_submit_urls_to_search_engine:
配置項添加以下三個配置項:
replace: 0 # 是否替換連結中的部分字串,可選值:1 | 0(0:否;1:是)
find_what: http://cjh0613.github.io/blog
replace_with: https://cjh0613.com
好吧,我發現這次升級是向下相容的,即使沒有這三個配置項也不會報錯……
返回資訊
成功推送資訊
必應
Bing response: { d: null }
谷歌
Google response: { urlNotificationMetadata:
{ url:
'https://cjh0613.github.io',
latestUpdate:
{ url:
'https://cjh0613.github.io',
type: 'URL_UPDATED',
notifyTime: '2020-06-12T05:37:25.701779228Z' } } }
其他
其他返回可參考它們的官方文檔,但一般翻譯一下返回就知道原因了。
有時是因為搜尋引擎每天只允許提交一定數量的連結。可登入它們的官網查詢。我站點網域cjh0613.github.io
換為 cjh0613.com 後,必應配額 10 條,連續推送 10 天後,配額突然從 10 變為 10000。
若部分連結推送失敗請人工處理:根據回饋來修改儲存提交連結的 txt (一般把成功推送的連結去掉),然後只執行 hexo deploy
重新推送,不必重新生成網站。
如果想每天向搜尋引擎推送連結,每天執行hexo d
即可,也可以設定 Github Action 每天執行hexo g && hexo d
,不必重造輪子。
查詢結果
查詢索引
以查詢本站索引為例,打開任一搜尋引擎,輸入 site:網域
,這裡即:
site:cjh0613.github.io
搜尋即可。
新站索引量 0→1 需要的時間可能很長,也許一個月……請耐心等待
實際收錄速度還與其他因素有關,網路上 SEO 資料很多,但都是以官方說明為中心的。
查詢推送記錄
必應
可登入必應新站長平台查到詳細的推送連結列表(即時更新):
https://www.bing.com/webmasters/submiturl?siteUrl=你的網站連結
谷歌
僅可在下方地址“錯誤”表格中查到一段時間內(最多近30天)累計推送連結數量及失敗推送所佔百分比(即時更新),雖然給了每天提交數據圖,但相當於沒給……
https://console.developers.google.com/apis/api/indexing.googleapis.com/metrics?project=