バリューコマースのAPIを使った商品リンク作成ツールのメモ

前回記事で別サイトに設置しているAmazonアソシエイトリンク作成ツールについて書きました。

こんなのをAmazon商品紹介ページ+ブックマークレットで一気に作成できるツールです。上記画像の大部分はAmazonのAPIから作っていますが、下部にある「BookLive!で見る」と「Renta!で見る」についてはバリューコマースのAPIを利用しています。

というわけで今回はバリューコマース(valuecommerce)のAPIを使って商品リンクを作るツールを自作した時の覚書です。バリューコマースのAPIを使いたいけどよくわからない!という方の参考になれば。なお具体的なソースコードはほとんどありません。あしからず。

スポンサーリンク
スポンサーリンク

やりたいこと

バリューコマースを使ったアフィリエイトリンクをできるだけ簡単に作る、というのがやりたいことです。

例えば電子書籍サイトBookLive!の商品につながるリンクを作成したいとします。バリューコマースでは「MyLink」という仕組みが提供されているので、それを使えばAPIを使わなくても任意のページにつながるリンクを作成することができます。

ですがその手順が少し手間のかかるもの。

  1. バリューコマースサイトにログイン
  2. BookLive!の広告ページを開く
  3. 「広告作成」をクリック
  4. MyLinkを選択
  5. BookLive!サイトでリンクを張りたいページを開き、URLをコピー
  6. MyLinkにURLとテキストまたは画像URLを貼り付けコードを生成

といった感じ。一つ二つならばこれでも問題ないのですが、大量にリンクを作りたい場合は時間がかかってしまいます。

そこでバリュコマのAPIを叩いて商品リンクを手軽に生成できないか?というわけです。

バリュコマのAPI仕様を確認

バリューコマースのアフィリエイトAPIについてはだいたい下記ページにまとめられています。

バリューコマース アフィリエイトが提供するAPIをご紹介します。リファレンスやガイド等をダウンロードいただけます。

「PDB」を提供している広告主と提携し、バリューコマースのAPIにリクエストを送るとXML・JSON・JSONP形式でレスポンスが返ってくる、というのはわかるのですが、ソースコードの具体的なサンプルや掲載例が見つからず、またWEBにもあまり具体例がなく苦労しました。

「各種パラメータの動作テスト」というテスト用CGIがアップされていたので、こちらで適当な値を入力、返ってきたXMLを確認することで少しずつ仕様が理解できました。

ツールの具体的な動作

PDBに対応したBookLive!やRenta!などの電子書籍サイトと提携し、任意のキーワードでAPI検索した結果からアフィリエイトリンクを埋め込んだHTMLソースを作成する、というのが動作目標です。

こちらもAmazonアソシエイトのツール同様、XAMPP+PHPでローカルPCで動けばよいものとします。XAMPPについては前回記事をご参照ください。

APIリクエスト前の準備

PDBに対応した広告主と提携したら、「広告作成」から広告スペースを作っておきます。これをしておかないとAPIを叩いてもレスがありません。これについて解説がなくって苦労した…。

PDB用のトークンを確認します。「広告作成」をクリックした時に確認できます。また特定の広告主からのレスのみを受けたい場合はeccodeを指定する必要があります。eccodeはこちらの「ec_code一覧表」から確認できます。

あとはキーワード。これはフォームから具体的な書籍名や作者名を指定して検索します。

APIをリクエスト

トークンとeccodeとキーワードの準備ができたら、バリューコマースAPIのURLに引数として設定し、PHPからリクエストします。

具体的なURLはマニュアルの中に記載があります。そのURLの後ろに

「?token=トークン&keyword=キーワード&ec_code=○○○’&page=1

のように引数をつけます。最後の「page」は検索結果が分割された時のページ数です。必要に応じて可変にしましょう(2ページ目以降の結果が欲しい時など)。

APIをパース

リクエスト用のURLが出来たらfile_get_contentsでXMLファイルを受け取り、simplexml_load_stringで配列化します。

この時に注意があるのですが、XMLの要素名が<vc:status>のようにコロンを含んだ形である場合があります。コロンが含まれていると普通のやり方では要素の中身が取り出せません。

例えばrss -> channel -> vc:statusの中身を取得したい場合は、

$vc =
$parsed_xml->channel->
children(‘http://valuecommerce.com/pdb/rss/’);
(※任意箇所で改行入れてます)

のようにchildren()メソッドで名前空間名を指定する必要があるとのことです。

PHPとSimpleXMLを用いて、バリューコマースウェブサービスを使ってみました。残念ながら、管理人には説明する能力はありません。このページは管理人のメモです。
この記事は自サイトでリライトしました。

こちらの解説を参考に処理をしました。

HTMLソースを整形

XMLが解析できたら、あとはループで処理をします。例えば「ハルロック」で検索するとハルロック全4巻のデータが返ってきます。

要素数分くりかえすとこんな感じ(上記はRenta!のレスポンス例)。画像は確認用に表示しているだけです。textarea内にバリューコマースのアフィリエイトリンクを含んだHTMLソースがあります。こちらはclipboard.jsを使って「クリップボードにコピー」をクリックすると、ワンクリックでクリックボードにHTMLソースがコピーされる仕組み。詳しくは前回記事の後半をご参照ください。

PV計測用の画像ソースを含める

上記ソースに関する補足ですが、HTMLソース内にはPV計測用イメージのURLを含めておいた方が良いと思います。バリューコマースのアフィリエイトリンクを作ったことのある方はご存知かと思いますが、いずれも高さ・幅1pxもしくは0pxのPV計測用画像が設定されています。

APIを使ったリンクにもそれが必要である、と書かれた資料は発見できなかったのですが、レスポンスにはその画像URLが要素「vc:pvImg」に含まれています。これは入れておいてね、ということだと判断できますのでこちらを整形したHTMLに入れておいた方が良いでしょう。

画像に関するメモ

基本的には以上で完成ですが、画像について少しメモ。バリューコマースのAPIではsmall・large・freeの三種類の画像要素を返してきます。

しかし三種類の全てにデータが入っているわけではなく、空の場合があります。例えばBookLive!はfreeの画像のみ、Renta!はlargeの画像のみに画像URLが入っています。

なので画像を表示させたりHTMLに埋め込みたい場合は、例えばlargeの要素が空ならばfreeを使う、などのように条件分岐の設定が必要です。

まとめ

こんな感じで作ったBookLive!やRenta!のリンクを、Amazonアソシエイトをベースに作ったアフィリエイトリンク内に設置しています。今のところ埋め込みは手動ですが、ソースの生成自体はキーワード検索→クリップボードへのコピーと2段階で済むようになりました。めっちゃ楽チン。

以上、バリューコマースのAPIを使った商品リンク作成ツールのメモでした。バリュコマのAPIを使いたいけどよくわからない、という方のご参考になれば。まだバリューコマースを使ったことがないけどAPIを利用してみたい、という方は下記リンクより詳細をご確認ください。

バリューコマース株式会社

スポンサーリンク
スポンサーリンク
スポンサーリンク

フォローする