はてなダイアリーキーワード自動リンクAPIの公開について

本日、任意のテキストを送信すると、はてなダイアリーのキーワードを抽出し、キーワード部分を自動的にリンクして返信するAPIを公開しました。
APIXML-RPC APIを用いて実装を行っており、メソッド名および指定可能な各属性は、以下の通りです。

uri
http://d.hatena.ne.jp/xmlrpc
encoding
utf8
methodName
hatena.setKeywordLink
parameters
以下を参照
  • body(string): キーワードを抽出するテキストを指定します。
  • score(int): 0〜50。キーワードスコアのしきい値を指定します。指定された値よりもスコアが大きいキーワードのみが抽出されます。
  • cname(array): キーワードのカテゴリーを指定します。指定があった場合、「一般」と指定されたカテゴリーのキーワードが抽出されます。指定が無かった場合は、全カテゴリーとなります。book,music,movie,web,elec,animal,anime,food,sports,game,comic,hatena,clubが指定可能です。
  • a_target(string): アンカー(a)タグのtarget属性値を指定します。例:_blank
  • a_class(string): アンカー(a)タグのclass属性値を指定します。例:keyword

このAPIを用いてやり取りを行った場合のサンプルは以下のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<methodCall>
   <methodName>hatena.setKeywordLink</methodName>
   <params>
     <param>
        <value>
          <struct>
             <member>
               <name>body</name>
               <value>はてなダイアリーのキーワードをリンクして!</value>
             </member>
             <member>
               <name>score</name>
               <value><i4>20</i4></value>
             </member>
             <member>
               <name>cname</name>
               <value>
                 <array>
                   <data>
                     <value><string>book</string></value>
                     <value><string>movie</string></value>
                   </data>
                 </array>
               </value>
             </member>
             <member>
               <name>target</name>
               <value>_blank</value>
             </member>
             <member>
               <name>class</name>
               <value>keyword</value>
             </member>
          </struct>
        </value>
     </param>
   </params>
</methodCall>
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
  <params>
    <param>
      <value>
        <string><a href="http://d.hatena.ne.jp/keyword/%a4%cf%a4%c6%a4%ca%a5%c0%a5%a4%a5%a2%a5%ea%a1%bc">はてなダイアリー</a>の<a href="http://d.hatena.ne.jp/keyword/%a5%ad%a1%bc%a5%ef%a1%bc%a5%c9">キーワード</a>をリンクして!</string>
      </value>
    </param>
  </params>
</methodResponse>

サンプルプログラム

外部アプリケーションにおいて、あるテキストに対してキーワードの自動リンク処理を行う場合のPerlサンプルスクリプトは以下のようになります。

#!/usr/bin/perl -w
use strict;
use XMLRPC::Lite;
use Jcode;
my $rpc = XMLRPC::Lite->new;
$rpc->proxy('http://d.hatena.ne.jp/xmlrpc');
my $body = 'はてなダイアリーのキーワードをリンクして!';
my $res = $rpc->call(
  'hatena.setKeywordLink',
  {
    body => XMLRPC::Data->type('string',Jcode->new($body,'euc')->utf8),
    score => 20,
    cname => ['book','movie'],
    a_target => '_blank',
    a_class => 'keyword',
  }
);
if (my $fault = $res->fault){
  for (keys %{$fault}){
    warn $_."=>".$fault->{$_};
  }
} else {
  $body = $res->result;
  $body =~ s/&lt;/</ig;
  $body =~ s/&gt;/>/ig;
  $body =~ s/&quote;/"/ig;
  print Jcode->new($body,'utf8')->euc;
}