はてなブックマークと個別記事ごとのサマリを提供する Feed

http://hxxk.jp/2005/12/03/1813

記事データ

投稿者

望月真琴

投稿日時

2005-12-03T18:13+09:00

タグ
概要

はてなブックマークに description を取得してもらうために、 content:encoded を含まず、 FeedBurner を使わず、最新記事ではなくその記事ごとのサマリを提供する Feed を作りました。

リプライ

4 件のリプライがあります。

記事本文

はてなブックマークの概要取得の処理を naoya さんが発表してくれた

はてなブックマークと <$MTEntryExcerpt$>はてなブックマークと dc:descriptionはてなブックマークと RSS Auto-Discovery 、および Lucky bag::blog: はてなブックマークに概要が反映されなくなったなどで話題になっているっていうか自ら話題にしたはてなブックマークの概要取得についてですが、その処理がどのように行われているかを naoya さん ( naoyaのはてなダイアリー ) が直々に発表してくださいました。

処理の流れですが、

  1. 該当エントリーに Feed Auto-Discovery を実行する
  2. その中で最初に見つかった Feed (link タグで一番上にあるもの) を GET する
  3. Feed を parse して、ブックマークされた URI を link 要素にもつ要素を探す
  4. その要素に content 部分 (RSS 1.0 なら content:encoded、Atom なら content) があればそれを取得、なければ description を取得

という感じになっています。 このいずれかの流れでその取得に失敗した場合は、HTML コンテンツの中からそれっぽい部分を取得する、という感じになっています。

とのこと。 それなら、各記事のサマリだけを提供するような RSS ( 当然ながら content:encoded を含まないもの ) を記事ごとに rel="alternate" で提供すれば description を取得してくれるのでは ! と考えました。 その考えは naoya さん自身も記事中で

Permalink URI の中にはもう一つ別種類の、そのエントリーだけが格納されているフィードを探す Auto-Discovery な手段があるといいなと思いました。

はてなダイアリーみたいなフルに動的なコンテンツ管理ツールだと実装は結構簡単です。 Movable Type のような静的ファイルを作るものも、各エントリーごとにもう一つファイル(フィード)をはき出すようにして、一度全部 Rebuild してやれば ok だと思います。

と書いていますし、 nulog > 2005 > 12 > 03 - for Hatena::Bookmark でも 個別ページの alternate を設定して、個別ページ用の XSLT を書いといた。 という方法が提唱されていますので、間違ってはいないと思います。 けど微妙にうまくいってない気がする と書かれているのが気になりますが。

Individual Entry Summary Feed Template ( RSS 1.0 )

ということで、個別記事のサマリを提供する Feed のテンプレートを作ってみました。

<?xml version="1.0" encoding="<$MTPublishCharset$>"?>

<rdf:RDF
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:cc="http://web.resource.org/cc/"
  xmlns="http://purl.org/rss/1.0/">
  
  <channel rdf:about="<$MTEntryPermalink$>">
    
    <title><$MTBlogName encode_xml="1"$></title>
    <link><$MTEntryPermalink$></link>
    <description><$MTBlogDescription remove_html="1" encode_xml="1"$></description>
    <dc:language><$MTDefaultLanguage$></dc:language>
    <dc:creator><$MTEntryAuthor encode_xml="1"$></dc:creator>
    <dc:date><$MTEntryDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$></dc:date>
    <admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=<$MTVersion$>" />
    <MTBlogIfCCLicense>
      <cc:license rdf:resource="<$MTBlogCCLicenseURL$>" />
    </MTBlogIfCCLicense>
    
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="<$MTEntryPermalink$>" />
      </rdf:Seq>
    </items>
    
  </channel>
  
  <item rdf:about="<$MTEntryPermalink$>">
    <title><$MTEntryTitle encode_xml="1"$></title>
    <link><$MTEntryPermalink$></link>
    <description><$MTEntryExcerpt encode_xml="1"$></description>
    <MTEntryTags case_sensitive="1">
      <dc:subject><$MTTag encode_xml="1"$></dc:subject>
    </MTEntryTags>
    <dc:creator><$MTEntryAuthor encode_xml="1"$></dc:creator>
    <dc:date><$MTEntryDate format="%Y-%m-%dT%H:%M:%S" language="en"$><$MTBlogTimezone$></dc:date>
    <trackback:ping rdf:resource="<$MTEntryTrackbackLink$>" />
  </item>
  
</rdf:RDF>

これを通常の Permalink の URI の末尾に _summary.rdf が付くようにアーカイブ・マッピングを設定して、かつ Individual Entry Archive にて、最新記事の情報を含む Feed を読み込む行より上にこの Feed を読み込むように書き換えて個別記事を再構築。

ちなみに、 <MTEntryTags case_sensitive="1"> から </MTEntryTags> までの部分は Tagwire Plugin を使用している前提での記述なので、 Tagwire Plugin を使用していない場合は <dc:subject><$MTEntryCategory encode_xml="1"$></dc:subject> と書き換えてください。

検証結果

再構築作業の後に投稿したビール日記 2005/12/01 - 金しゃち名古屋赤味噌ラガーという記事をブックマークしてみましたが、 の限定品赤味噌ラガービールアルコール度数は 6.0% と決して高くはないのですが、ハイアルコールビールのように泡がほとんど立ちません。 色は暗い赤褐色で、スタウトに似た感じ。 で、飲むと本当に味噌の味わいがあります。 しかしこれはこれで楽しく飲めました。 ちょっと苦みが強いので万人におすすめできるものではありませんが。 のように、やはりヒューリスティクスなサマリになっています、うーむ。

とりあえず検証結果だけは得られたので、ここで一旦締めて近所の寄り合いの忘年会に行ってきます。

トラックバック送信先

Lucky bag::blog: はてなブックマークに概要が反映されなくなった

個別記事ごとに、その記事のサマリだけを提供する Feed のテンプレートを作成してみました。 hxxk.jp ではうまく description を取得してくれませんでしたが……。

naoyaのはてなダイアリー - はてなブックマークの概要取得の処理

個別記事ごとに、その記事のサマリだけを提供する Feed を提供してみましたが、やはりヒューリスティクスなサマリになっています。

nulog > 2005 > 12 > 03 - for Hatena::Bookmark

nulog の手法に倣って個別の Feed を提供してみましたが、こちらもうまくいきませんでした。

リプライ

4 件のリプライが送られています。

2006-01-14T08:22+09:00 - はてなブックマークに記事の概要を取得してもらう < this calm night.

Serene Bach で作成した記事が はてなブックマーク に登録された際に、本文の一部ではなく記事の概要を取得してもらう方法。

2006-01-14T08:22+09:00 - はてなブックマークに記事の概要を取得してもらう < this calm night.

Serene Bach で作成した記事が はてなブックマーク に登録された際に、本文の一部ではなく記事の概要を取得してもらう方法。

2006-01-14T08:29+09:00 - nagi

すみません、トラックバックが2重になってしまいました。お手数ですが一方の削除をお願い致します。 それと、こちらの記事を参考にさせて頂いたおかげで、Serene Bach でも はてブ に概要を提供することができました。ありがとうございます。

2006-01-15T21:35+09:00 - 真琴

トラックバックについては対処しました、ご報告ありがとうございます。 ところで、このはてなブックマークに概要を提供する手法ですが、 <a href="http://www.akatsukinishisu.net/itazuragaki/xml/metadata_of_entry.html">http://www.akatsukinishisu.net/itazuragaki/xml/metadata_of_entry.html</a> のような話もあるので、もう少し考えを整理しようと思っていました。もしかしたらまた違う手法や考え方を再度書くかもしれません。

この記事に対するご意見やご質問、ご感想などありましたらこのフォームに簡潔に記入して下さい。 簡潔に記入できない場合や、関連記事にてご意見をお寄せいただく場合は、ご自身の weblog にて記事を書かれた上で あてにトラックバックとして送信してください。

記入フォーム

補足情報

著作、講演、制作実績など