hexo使用hexo-submit-urls-to-search-engine插件後,可主動推送Hexo部落格新連結至谷歌、必應、百度搜尋引擎站長平台以提升網站收錄品質和速度。本插件允許你向各大搜尋引擎發送純天然、植物飼養的索引編製請求,一勞永逸。

比如,現在我的一篇文章有時剛發布 5 分鐘,即可在必應搜尋到(這是最佳情況,不保證長期穩定)。看吧,這就是 hexo-submit-urls-to-search-engine 的威力。百度與谷歌略慢一籌。

這三大搜尋引擎已佔據 97% 的全球搜尋引擎市場份額(包括元搜尋引擎 多吉、Duckduckgo 等;使用 Bing 索引的雅虎、 Ecosia 等)。

警告

非專業使用其他類似的推送代碼可能會導致危險的副作用,包括但不限於:安全缺陷症、冗餘代碼症、重新發明輪子症、啃文檔症、懷疑人生、憂鬱、頭疼,甚至死亡、魂飛魄散、湮滅。

Github地址

官方交流 QQ 群 及 Telegram group 已經停止服務。請前往 Github issue 頁面參與討論。

操作步驟

快速入門:

  1. 取得各站長平台密鑰
  2. 安裝並配置hexo-submit-urls-to-search-engine插件
  3. hexo clean && hexo g && hexo d,並查詢推送結果
  4. 如果推送成功,前往 Github 地址 點擊 Star 按鈕以支持
  5. 順便 watch Github 項目獲取插件升級提醒
  6. 還可以 點此去打賞

取得站長平台密鑰

本節所“記下”的密匙均填寫至 hexo 的 _config.yml ,格式在後文給出。

關於驗證網站:有的 Hexo 主題支持添加站長平台 html 驗證標籤,填寫有關設置後hexo g && hexo d即可驗證。通用詳細操作步驟請自行 谷歌 :hexo 站長平台 驗證

百度

百度是中國的一款搜尋引擎。除非在中國當局辦理複雜的網站備案手續,否則網站很難被收錄。

如果您的網站伺服器位於中國境外,基本不可能辦理網站備案手續。

請查看舊的說明文檔了解如何提交連結到百度

必應

必應站長平台有新舊之分。

  1. 註冊、登入必應新站長平台 Bing Webmaster Tools
  2. 添加網站
  3. 進入網站管理頁面,設定,API 訪問,API 密鑰 ,記下 API 密匙

從 URL 提交打開設定

API 訪問介面

從必應新站長平台取得 API 密匙

(近期必應站長平台升級,伺服器、版面不穩定,如果無法顯示 token ,可以過段時間再試) 現在已經升級到新的站長平台了。

這是從必應舊站長平台取得的示意圖:

從必應舊站長平台取得必應網站管理員 API 密匙

谷歌

如果您到伺服器位於中國境內,請注意您的伺服器需要能夠訪問國際網際網路,才能推送到谷歌。

谷歌站長平台也有新舊之分,但兩站關係沒有必應處理得好。另外,我們使用的 Google Indexing API 不是站長平台提供的,而是隸屬 google developers 谷歌開發平台。過程中,您可參考官方文檔(中國內地可訪問)進行配置。

使用步驟:

  1. 打開 官方文檔 ,按提示創建項目、創建服務帳號。只需要按提示在網站進行配置操作即可,不需要完成取得訪問權杖等後續操作
  2. 您僅按谷歌官方文檔在 Google 新的“搜尋控制台”中添加權限信箱還是會提示“無權限”。請轉到 舊的網站站長工具,點擊您的網站,把信箱地址添加到其中 現在直接在新的站長平台提交即可。
  3. 將取得到的 json 密匙檔案放於 hexo 根目錄(與hexo _config.yml檔案位置相同)

谷歌舊的網站站長工具:

舊的網站站長工具1

舊的網站站長工具2

另外,其官方文檔中有如下提示,請根據實際情況決定是否啟用向谷歌提交連結的功能:

目前,Indexing API 只能用於抓取包含 JobPostingBroadcastEvent(巢狀於 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.htmlhttps://yoursite.com/b.html,其更新時間與本插件執行時間之差分別為 800s 和 1000s(period 欄位設為 900),則 https://yoursite.com/a.html 會被提交,https://yoursite.com/b.html 不會
  • google_proxy:向谷歌提交網址所使用的系統 http 代理,格式:http://proxyhost:port,修改proxyhostport即可;Hexo 部署於境外可填 0 不使用。使用科學上網軟體,proxyhost一般為127.0.0.1port可在軟體中查看設定,一般為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 deployhexo 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 得到錯誤的“文章最後修改時間”,就無法正常判斷並提交最新的連結了。

  1. 請先在hexo_submit_urls_to_search_engine:的配置項baidu_token: bing_token: 處填寫0
  2. 設置環境變數BAIDU_TOKENBING_TOKEN,值為已取得的token
  3. 如果您使用 Github Action ,還需在 yml 檔案中設置環境變數,下方有例子
  4. 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 等,透過電子郵件發送

選擇 Releases only

升級操作

請在 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=

谷歌推送推送連結數查詢

我開發這個插件的參考資料

請查看舊的說明文檔