はじめに
楽天APIを利用し、楽天市場ランキングAPIで取得した売れ筋商品のアフィリエイトリンクをコマンドで取得する手順について紹介します。
利用コマンド
$ curl --version curl 7.52.1 (x86_64-pc-linux-gnu) libcurl/7.52.1 OpenSSL/1.0.2u zlib/1.2.8 libidn2/0.16 libpsl/0.17.0 (+libidn2/0.16) libssh2/1.7.0 nghttp2/1.18.1 librtmp/2.3
楽天商品ランキングAPI
API情報の詳細を公式ドキュメントで確認した通りですが、例えば以下のApplicationIDの欄にアプリID/デベロッパーID(applicationId)を入れると
curl https://app.rakuten.co.jp/services/api/IchibaItem/Ranking/20170628?format=json\&applicationId=xx\&genreId=101287\&period=realtime
書籍のランキングが取得できます。尚、ジャンルとして書籍が取れるのは「genreId」で指定している数値列が書籍に紐づくから。こちらは楽天ランキングで各ジャンルのURIを見るとその数値列が確認可能です。
また、同じく引数として利用するApplicationIDは自ら発行が必要で、このIDが誤っていると以下のようなエラーとなります。
{"error":"wrong_parameter","error_description":"specify valid applicationId"}
発行は以下から行えます。
curlのリクエストが成功すると値はJSON形式で表示されます。
アフィリエイトリンクを確認する
出力されるJSONを確認すると以下の形式となっており
{ "Items": [ { "Item": { "affiliateRate": "3.0", "affiliateUrl": "", "asurakuArea": "", "asurakuClosingTime": "", "asurakuFlag": 0, "availability": 1, "carrier": 0, "catchcopy": "【 楽 天 ブ ッ ク ス な ら い つ で も 送 料 無 料 】 ", "creditCardFlag": 1, "endTime": "", "genreId": "101937", "imageFlag": 1, "itemCaption": "森 巧 尚 翔 泳 社 パ イ ソ ン イ チ ネ ン セ イ タ イ ケ ン シ テ ワ カ ル カ イ ワ デ マ ナ ベ ル プ ロ グ ラ ミ ン "itemCode": "book:18843211", "itemName": "Python 1年 生 体 験 し て わ か る ! 会 話 で ま な べ る ! プ ロ グ ラ ミ ン グ の し く み [ 森 巧 尚 ]", "itemPrice": "2178", "itemUrl": "https://item.rakuten.co.jp/book/15197920/", "mediumImageUrls": [ { "imageUrl": "https://thumbnail.image.rakuten.co.jp/@0_mall/book/cabinet/3193/9784798153193.jpg?_ex=128x128" } ],
上で見ても分かる通りJSONの中にはアフィリエイトリンクが入っていません。
# cat hoge.json | jq .Items[].Item.affiliateUrl "" "" "" "" ...
同リンクを取得すべく、curlコマンドの末尾に\&affiliateId=xxx
とアフィリエイトID(affiliateId)を付与します。(このIDはapplicationIDと同じように一意に発行される)
同情報を入れて改めてcurlを打つと、JSONの中にてアフィリエイトが含まれるようになりました。
# cat hoge.txt | jq .Items[].Item.affiliateUrl "https://hb.afl.rakuten.co.jp/hgc/xxx..." ...
終わりに
楽天でアフィリエイトをする際は楽天アフィリエイトのページからブラウザ操作にてURLやHTMLを発行することもできますが、本記事のようにAPIを叩くことで自動でリンクの取得も可能です。
メディア運営をしている方のご参考になれば幸いです。