Skip to content

Octopress 通知搜尋引擎新文章發佈

Published: 5 分鐘

在部落格發佈新文章自然會希望讓別人能更快發現或搜尋到。之前使用的 WordPress 有相關的插件可以簡單做到這件事。幸好,Octopress 上面的方案也並不難,本文山姆鍋就來分享我是如何讓「影化身部落格」在發佈新文章時可以通知搜尋引擎。

讓 Octopress 俱備通知搜尋引擎的能力

為了讓 Octopress 可以通知搜尋引擎,需要在 Rakefile 中加入相關的程式腳本,這些腳本自然跟要通知的搜尋引擎種類相關。底下是分別針對 Ping-o-matic!、百度、Goole 以及 Bing 的腳本。

Ping-o-matic!使用的腳本

# Ping search engines
desc 'Ping pingomatic'
task :pingomatic do
  begin
    require 'xmlrpc/client'
    puts '* Pinging ping-o-matic'
    XMLRPC::Client.new('rpc.pingomatic.com', '/').call('weblogUpdates.extendedPing', 'Eavatar.com' , 'http://blog.eavatar.com', 'http://blog.eavatar.com/atom.xml')
  rescue LoadError
    puts '! Could not ping ping-o-matic, because XMLRPC::Client could not be found.'
  end
end

Baidu 通知腳本

desc 'Ping Baidu'
task :pingbaidu do
  begin
    require 'xmlrpc/client'
    puts '* Pinging Baidu search engine'
    XMLRPC::Client.new('ping.baidu.com', '/ping/RPC2').call('weblogUpdates.extendedPing', 'Eavatar.com' , 'http://eavatar.com', 'http://blog.eavatar.com', 'http://blog.eavatar.com/rss.xml')
  rescue LoadError
    puts '! Could not ping Baidu, because XMLRPC::Client could not be found.'
  end
end

Google 的通知腳本

desc 'Notify Google of the new sitemap'
task :sitemapgoogle do
  begin
    require 'net/http'
    require 'uri'
    puts '* Pinging Google about our sitemap'
    Net::HTTP.get('www.google.com', '/webmasters/tools/ping?sitemap=' + URI.escape('http://blog.eavatar.com/sitemap.xml'))
  rescue LoadError
    puts '! Could not ping Google about our sitemap, because Net::HTTP or URI could not be found.'
  end
end

Bing 的通知腳本

desc 'Notify Bing of the new sitemap'
task :sitemapbing do
  begin
    require 'net/http'
    require 'uri'
    puts '* Pinging Bing about our sitemap'
    Net::HTTP.get('www.bing.com', '/webmaster/ping.aspx?siteMap=' + URI.escape('http://blog.eavatar.com/sitemap.xml'))
  rescue LoadError
    puts '! Could not ping Bing about our sitemap, because Net::HTTP or URI could not be found.'
  end
end

上述的這些腳本,記得要將’blog.eavatar.com’或者’eavatar.com’換成您的部落格域名。透過這些腳本,您便可以透過執行指令來通知搜尋引擎,例如要通知 Google,只需要在命令列執行:

$ rake sitemapgoogle

當然,山姆鍋是不會想要一個一個去通知,因此,需要再增加一個腳本來同時通知上述的搜尋引擎或者通知服務。

desc "Notify various services about new content"
task :notify => [:pingomatic, :sitemapgoogle, :sitemapbing, :pingbaidu] do
end

這樣一來就可以執行下列指令一次通知所有搜尋引擎:

$ rake notify

您可以在 ‘:deploy’這個任務腳本中,自動執行通知的動作。但是山姆鍋習慣自行決定何時要進行通知,所以,就把這個當作是您的作業吧!

參考來源

郭信義 (Sam Kuo)

奔騰網路科技技術長,專長分散式系統、Web 應用與雲端服務架構、設計、開發、部署與維運。工作之餘,喜歡關注自由軟體的發展與應用,偶爾寫一下部落格文章。