還記得前一陣子令人悲傷的消息嗎?
Google 說暫時不能提交網址給 Google Search Console 了
已經可以在 Google Search Console 提交網址囉,不過還是可以參考看看此做法喔。
此消息一出,SEOer 們紛紛表示晴天霹靂。
以往網站內容只要有更新,或是新增新的頁面,通常提交給 Google 後都能很快速的找來 Google 爬蟲來爬取並且索引。
但至從這個功能關掉後,無論是透過『測試網址』,還是提交『Sitemap.xml』,Google 彷彿還是不理你一樣。
這種苦苦等待的感覺的確讓人難受。
那進入今天的主題前,建議讀者先理解 Google 的檢索及索引喔,請先參閱 Frank 的『如何確認網頁被 Google 索引(index)了?三個確認方法及強化作法,搞定索引問題!』
什麼是 Google Index API?
Google Index API 就是網站更新或刪除內容時,你可以直接通知 Google 的一項工具,以往我們在 Google Search Console 上都是一項一項提交網址,但有了 Google Index API,就能一次將較大量的網址提交給 Google。
在這幾天觀察發現,我的轉址式 404 文章是什麼這篇文章,寫完好幾天了,可是 Google 遲遲不肯索引。
然後在我透過 WordPress 外掛與 Google Index API 串接,並且提交後,這是以下出現的成功畫面。
然後可以發現,在我提交後的 10 分鐘內,Google就來爬取了,而且還索引了,可喜可賀。
但比較可惜的是,原本我有去伺服器下載 log 檔來確認是否在提交後 Google 爬蟲來爬取,原本要做個對照圖,結果忘記弄了,大家可以自己檢查看看。
然後我在 github 上看到 google-indexing-api-bulk 相關教學,後面也會用中文教大家使用,於是乎 debug 一段時間後,也成功的在本機端提交網址囉。
那再來就是教大家如何使用 Google Index API。
如何使用 Google Index API
創立一個 Index API 專案
步驟一,你必須到 Google API Console 中建立一個專案,並點擊前往憑證。
步驟二,點擊右下角的管理服務帳戶。
點擊上方『建立服務帳戶』。
接著為專案建立名稱,然後角色選擇角色管理員並按下完成。
然後點擊你新增的帳戶。
滑到最下方,點選新增金鑰,金鑰類型以『Json』為主,建立後應該就會有個檔案被下載下來了。
步驟三,需要將你的服務帳戶 email 加到 Google Search Console 作為擁有者。首先到 Google Search Console 中的 設定 > 使用者和權限。(你必須是網站擁有者才行)
再來,這邊很重要千萬要選擇『管理資源擁有者』,不能選擇新增使用者喔。
接著回到剛剛帳戶資料那邊把你的電子郵件複製下來。
新增擁有者,將剛剛複製的 email 貼上。
接著在使用者和權限這邊有看到你剛剛輸入的 email 就代表初步設定成功囉。
WordPress 串接 Index API
在前面的步驟,申請完金鑰,也將使用者信箱授權至 Google Search Console 後,就可以來進行串接了,那如果你是 WordPress,建議安裝『Instant Indexing』這個外掛。
接著到外掛設定的部分,還記得前面有下載一份『金鑰檔案』嗎,把他上傳上來,或是用記事本點開裡頭的內容,複製貼到下方空格中,並且保存。
接著在分頁頁籤『console』中,將你要提交的新網址放上,並提交,可根據你要移除網址或是提交網址選擇,並且 Send to API。
一旦提交成功就會出現下面畫面囉,建議過20分鐘後到 Google Search Console 上檢查是否正確收錄喔。
本機端 API 提交
因為我是本身沒程式底子,所以覺得這部分會比較難一些,那如果你也是沒程式底子的讀者,遇到問題的話能找身邊工程師朋友幫忙解決看看哦。
這個操作方式參考 github 上 google-indexing-api-bulk 之專案。
首先,你需要在電腦裡安裝 node.js:https://nodejs.org/en/download/
接著將專案下載下來並解壓縮:https://github.com/swalker-888/google-indexing-api-bulk
接著,還記得那個金鑰檔案嗎,用記事本或 sublime 打開他,將它貼到『service_account.json』這個檔案中,service_account.json 檔案原本的東西都刪除只放金鑰 json 內容喔。
接著,
- 打開你的終端機(terminal)
- 進入專案資料夾,執行指令的那個地方
- 執行 『node index.js』指令
如果完全沒用過可能需要人協助,這邊也附上一些教學網址希望幫助沒程式底子的朋友。
打開 terminal:
移動資料夾到專案:
假設我的專案資料夾在 download > google-indexing-api-bulk-master ,我就『cd Downloads/google-indexing-api-bulk-master/』
確定進入資料夾後,也確定金鑰有放入 service_account.json 這個檔案後,打開 urls.txt 的檔案,裡面只放你要提交的網址,原本的備註跟空行也都要刪除喔,只放你要的 url 並且儲存。
接著在你的 terminal 上打上 node index.js,如果有跑出下面畫面說明你提交成功囉。
中間可能會遇到一些 bug,可能不一定會好處理,大家要多花點耐心 debug,祝大家提交網址順利。
測試提交本篇
寫完立馬提交,沒想到也是10分鐘左右的時間便索引了。
log 檔記錄時間也是差不多。
谢谢以上的教程,刚尝试了Node 运行 Index API 的方法果然闪电的快,前后不到10秒。
有帮上你的忙就好,不客气的^^
請問一般虛擬主機的也可以嗎? 先行感謝
搜尋了很多文章,只有您的完整,不過還是很多細節不太懂
這跟虛擬主機那塊比較沒關係~
C:\Users\a0133\google-indexing-api-bulk-master>node index.js
node:internal/modules/cjs/loader:998
throw err;
^
Error: Cannot find module ‘C:\Users\a0133\google-indexing-api-bulk-master\index.js’
[90m at Module._resolveFilename (node:internal/modules/cjs/loader:995:15)[39m
[90m at Module._load (node:internal/modules/cjs/loader:841:27)[39m
[90m at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)[39m
[90m at node:internal/main/run_main_module:23:47[39m {
code: [32m’MODULE_NOT_FOUND'[39m,
requireStack: []
}
Node.js v18.12.1
一直顯示這樣的錯誤
用了大半天還是相同,可請教這該如何修正
你在終端機輸入
npm install request
讓它安裝這個後再執行一次看看
謝謝老哥,可以了,由衷感謝
客氣了,有幫上忙就好
老哥 您好 抱歉我又來跟您請教 昨天都一直顯示這樣 請問這會是哪邊的出錯呢 先行感謝大大的幫忙
FetchError: request to https://www.googleapis.com/oauth2/v4/token failed, reason: connect ETIMEDOUT 2404:6800:4012:2::200a:443
at ClientRequest. (D:\google-indexing-api-bulk-master\node_modules\node-fetch\lib\index.js:1455:11)
at ClientRequest.emit (node:events:514:28)
at TLSSocket.socketErrorListener (node:_http_client:501:9)
at TLSSocket.emit (node:events:514:28)
at emitErrorNT (node:internal/streams/destroy:151:8)
at emitErrorCloseNT (node:internal/streams/destroy:116:3)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
type: ‘system’,
errno: ‘ETIMEDOUT’,
code: ‘ETIMEDOUT’,
config: {
method: ‘POST’,
url: ‘https://www.googleapis.com/oauth2/v4/token’,
data: {
grant_type: ‘urn:ietf:params:oauth:grant-type:jwt-bearer’,
assertion: ‘eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJ0d2xhdy04MEB0d2xhdy0zOTYwMjAuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLCJzY29wZSI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2F1dGgvaW5kZXhpbmciLCJhdWQiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9vYXV0aDIvdjQvdG9rZW4iLCJleHAiOjE2OTIxMzU2NjYsImlhdCI6MTY5MjEzMjA2Niwic3ViIjpudWxsfQ.F3qhTQUrWyJ4__bFJYLWGfdefH0dFijx-bDvhRLpEbjHO7FtzFlrY41m0dGEKEKfEBfsjbLKPww7eUaC_Dh3Ov-1-WeMDxEfbzoDxPO1TOyBLxKMbBel_4AHRE0zhUCaSH2rWlB0jP520rDDWPELfAx4_eP8xQo3oKpmvHjDJWi_FUSMaw9ce3TNLdFbQBt8XI9d74iL4eWvm1uB7pMwKMO9Zq81goZqXtOj_dvr-WxVu8DbjbHQ5wy0x-fbCh-9xJsT8dyyvtv2Pcq-I0R4Ier4Ey8RU-fHJ-ZSIqRF8ctkLzz9u3i63sgVj2CFWyuYoIcY59fCrdBlKEabIF-U-w’
},
headers: { ‘Content-Type’: ‘application/json’, Accept: ‘application/json’ },
responseType: ‘json’,
params: [Object: null prototype] {},
paramsSerializer: [Function: paramsSerializer],
body: ‘{“grant_type”:”urn:ietf:params:oauth:grant-type:jwt-bearer”,”assertion”:”eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJ0d2xhdy04MEB0d2xhdy0zOTYwMjAuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLCJzY29wZSI6Imh0dHBzOi8vd3d3Lmdvb2dsZWFwaXMuY29tL2F1dGgvaW5kZXhpbmciLCJhdWQiOiJodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9vYXV0aDIvdjQvdG9rZW4iLCJleHAiOjE2OTIxMzU2NjYsImlhdCI6MTY5MjEzMjA2Niwic3ViIjpudWxsfQ.F3qhTQUrWyJ4__bFJYLWGfdefH0dFijx-bDvhRLpEbjHO7FtzFlrY41m0dGEKEKfEBfsjbLKPww7eUaC_Dh3Ov-1-WeMDxEfbzoDxPO1TOyBLxKMbBel_4AHRE0zhUCaSH2rWlB0jP520rDDWPELfAx4_eP8xQo3oKpmvHjDJWi_FUSMaw9ce3TNLdFbQBt8XI9d74iL4eWvm1uB7pMwKMO9Zq81goZqXtOj_dvr-WxVu8DbjbHQ5wy0x-fbCh-9xJsT8dyyvtv2Pcq-I0R4Ier4Ey8RU-fHJ-ZSIqRF8ctkLzz9u3i63sgVj2CFWyuYoIcY59fCrdBlKEabIF-U-w”}’,
validateStatus: [Function: validateStatus]
}
}
PS D:\google-indexing-api-bulk-master>
又可以使用了 先行謝謝 老哥