ブログにAmazonアソシエイトのリンクを貼っている方も多いと思いますが、よく見かけるのが「書籍紹介用ブログ・パーツ ヨメレバ」で作成されたもの。
こんなの。あらかじめブックマークレットをブラウザに用意しておき、Amazonで商品紹介をしたい書籍のページを開いてブックマークレットをクリック。すると一瞬でアソシエイトリンクを埋め込んだHTMLソースを生成してくれます。めちゃ便利。
そんなヨメレバに何の不満も無いのですが、自分用にHTMLソースをカスタマイズしたくなり、自前でヨメレバっぽいアソシエイトリンク生成ツールを作ってみました。以下はその時のメモです。なお私はプログラマーではないので、ソースの公開はしません。あしからず。
作りたいもの
ヨメレバと同じように、
「ブックマークレット(ブラウザのブックマークから起動する簡易なプログラム)から起動して、Amazonアソシエイトリンクを埋め込んだHTMLソースを生成するツール」
の作成を目指しました。
具体的なツールの動作としては
- amazon.co.jpで紹介したい書籍のページを開く
- ブックマークレットをクリック
- AmazonのAPI(Product Advertising API)を介してアソシエイトリンク生成
- コピペできるHTMLソースを表示
というものです。自分一人が使うものなのでローカルPCで動けばOK。プログラム言語はPHPを使用しました。
ちなみにヨメレバはYahooAPIを通してキーワードやISBNからAmazonの紙書籍・電子書籍データ、及びその他アフィリエイトのリンクを同時に生成していますが(スゴイ)、ここではAmazonの紙書籍リンクまたは電子書籍リンクどちらかを生成するものとします。
準備するもの
AmazonのアソシエイトID
「○○○-22」のようなAmazonのアソシエイトリンクを使える必要があります。ある程度の体裁のブログやWEBサイトを作ったあとAmazonに申請すれば、アソシエイトIDの使用許可が降りるでしょう。
AmazonのAPI使用準備
AmazonのProduct Advertising APIを使用するためには、別途API用のアクセスキーとシークレットアクセスキーを取得する必要があります。
私、これをだいぶ前に取ったので記憶があやふやなのですが…。Amazonのco.jpではなくcomでアカウントを作って取得した記憶があります。

上記の記事などをご参考いただければ(適当)。
「AmazonのAPI」ってそもそもなんじゃろ?という方のために補足。簡単に書くと、情報のリクエストを送ると、それに応じて必要な情報を返してくれるのがAPIです。例えば「この書籍の価格を教えて」とリクエストとすると、「○○○円だよ」とレスポンスをくれます。
XAMPPのインストール
ローカルPC上でPHPプログラムが動作するように、XAMPPをインストールします。他にも方法があるかもしれませんが、私はわかりやすいのでこれで。

インストールにはこちらの記事が詳しいかと。要はパッケージをPCにインストールし、終わったらXAMPPを起動、Apacheをスタートさせれば「http://localhost/~」でパソコン内に設置したPHPファイルを実行できる、ということです。
localhostの場所はXAMPPをインストールしたフォルダの「htdocs」以下になります。例えば「~/htdocs/amazon/」に「index.php」を設置すれば、「http://localhost/amazon/index.php」でphpファイルにアクセスできます(index.phpは省略可)。
プログラムの組み立て
準備ができたらプログラムを組んでいきます。HTMLやCSSについては省略。AmazonのAPIを呼び出して戻り値からアソシエイトリンクを組み込んだHTMLを生成する、を目指します。
ブックマークレットの作成
商品ページからURLを取り出してPHPに渡すために、ブックマークレットを作成します。
…といってもこれはヨメレバに設置してあるブックマークレット(下の方にあります)を参考にすればすぐに作れるかと。javascript内のURLを自分の作るphpファイルのURLに変更し、HTMLファイルとして保存。ブラウザで開いてURLをChromeなどのブックマークバーにドラッグ&ドロップすれば完成です。
ASIN/ISBNの取り出し
ブックマークレットから起動するPHPファイルには、前述のようにAmazonの書籍ページのURLを渡してやります。URLに埋め込まれているASIN/ISBNを取り出すためです。
ここで注意したいのが書籍には紙書籍と電子書籍(Kindle)があるということ。最初は紙書籍なら基本的に発行されているであろうISBNをAPIリクエストのキーにすれば良いかな、と考えていたのですが、調べてみると電子版にはISBNがない!勉強になりました。
というわけで紙書籍の場合はISBN(10桁)を、電子書籍の場合はASINを利用することにします。ASINとは「Amazon Standard Identification Number」の略で、Amazonで扱う紙書籍以外の商品に割り振られている一意のナンバーです。
といってもやることは簡単。紙書籍の場合はISBNが、電子書籍の場合はASINが商品紹介ページのURLに埋め込まれているので、それを抜き出すだけです。
例えば漫画「薄暮のクロニクル(11巻)」の紙書籍版のURLは
(略)/dp/4091895352/ref=pd_sim_14_2?(略)
Kindle版のURLは
(略)/dp/B073F54MNW/ref=tmm_kin_swatch_0?(略)
で、前者にはISBN、後者にはASIN(いずれも10桁の英数字)が埋め込まれており、ここからこの10桁の文字を取り出します。
最初は「/dp/」と「/ref=」の間の文字を抜き出そうと思ったのです、が「/dp/」を含まないURLも存在したので、「/ref=」の文字位置を検出し、そこからその前の10文字を抜き出すようにしました。
$num1 = strpos($str, ‘/ref=’);
$asin = substr($str, $num1-10, 10);
こんな感じ。ソースがダサいのはご容赦を。これでURLからASIN/ISBNが取得できました。
AmazonのAPIにリクエストを送る
では次に取得したASIN/ISBNを使ってAmazonのAPIにリクエストを送り、書籍に関するデータをXML形式で受け取ります。
…といってもこれは簡単。Amazon側でテストツールを用意してくれているからです。これを利用すれば、XMLを発行するまでのプログラムを自動で生成してくれます。便利。
上記ページの左側ナビ「LOOKUP」項目より「itemLookup」を選びます。「itemLookup」はASIN/ISBNその他の検索を行えます。
「Common parameters」にアクセスキーやアソシエイトタグなど必要項目を入力。この際、「Marketplace」項目をamazon.co.jpに合わせておきましょう。他の国ではエラーになります。
続いて「ItemLookup」項目の設定です。
「itemId」のValueに検索したい書籍のASINもしくはISBNを入力します。「idType」は「ASIN」で。ASINにISBNを入力しても期待した検索結果が返ります。「ResponseGroup」は特に希望がなければデフォルトの「Images,ItemAttributes,Offers」で問題ありません。
以上を入力し「Run request」をクリックすればページ下部に検索結果が表示されます。「Response」に書籍の情報は表示されましたか?
されていれば、その下「Code snippets」のPHPタブにPHPのソースコードが保存されています。このコードをコピーすれば、AmazonのAPIにリクエストを送ってXMLが返ってくるまでを記載したPHPコードが一瞬にして作成可能です。
XMLの処理
受け取ったXMLから必要な情報を抜き出す処理が必要です。

こちらのページの後半などを参考にしました。Amazonが生成したPHPに記載された$request_urlをfile_get_contentsしてsimplexml_load_stringでパースする、みたいな。
今回のケースではASIN/ISBNという一意の番号から書籍情報を得ているので、返ってくる情報も一意のもの。なので特にループ処理などは無し。書籍のタイトルや画像のパスを必要とするものを各変数に格納しHTMLに埋め込みます。
整形したHTMLはヨメレバのようにtextareaに表示し、コピーができるようにします。
JSでクリップボードにコピーできるように
通常であればtextareaのHTMLを選択しCtrl+Cなどでコピー、といった手順を取りますが、大量のリンクを生成するときにはそれすらダルい。というわけでボタンクリック一発でクリックボードにソースをコピーできるようにしてみます。

jqueryを利用したclipboard.jsという便利なライブラリがあったのでこちらを利用。上記ページを参考に設置しました。
textareaに一意のIDを付与し、ボタンクリックでtextarea内のHTMLソースがクリップボードにコピーされます。あとはブログ記事など貼り付けたい箇所にペーストするだけ。わずかではありますが作業時間が短縮できました。
完成
以上のようなプログラムを組み、上記のようなアソシエイトリンクを埋め込んだHTMLソースを生成することができるように。具体的には別サイト「漫画の虎」にて利用しています。

ここに記載のBookLive!などのリンクは、いろいろ理由があって別のプログラムで手動挿入していますw。
ヨメレバは超絶便利なWEBツールであることは間違いありません。私も引き続き利用させていただきます。ですがちょっと自分独自の要素を追加したい、といった時には上記のようにそれっぽいものも自作できます。特にAmazonのAPIテストツールは便利なので、また利用してみてください。
コメント