AmazonアソシエイトPA-API経由の商品リンクを作る

AmazonアソシエイトPA-API経由の商品リンクを作る

Amazonアソシエイトの広告を表示するために WordPress 上で「WPアソシエイトポストR2」というプラグインを使っているのですが、「APIリクエストの上限を超えました」と出て広告が表示できなくなりました。

01APIリクエストの上限を超えました

この症状は初めてというわけではなく、調べるのも面倒だなあとスルーしているうちにまた表示できるようになっていたといった感じで済ましてきたということです。今回はちょっとその気になりましたので(笑)Amazonアソシエイトについて調べてみました。

まず、「WPアソシエイトポストR2」のお知らせからです。もちろん過去にこの症状が出たときに読んではいますが、ああ、売上がなかったんだなあで済ましていたわけです。

で、やはり大もとを読んだほうがいいということで Amazonアソシエイトのヘルプです。

私の場合、リクエスト数が超えるということはなさそうですので、

発送済み商品売上が過去30日以内に発生していない場合、PA-APIをご利用いただけなくなる恐れがございます

2019/01/23 – Product Advertising API 利用ポリシーの変更について

これですね。

ん? いや、売上レポートを見てみますと、過去30日以内に発送済み商品売上があります。ということは、リクエスト数を超えたということでしょうか。まさか?ということで、さらに読みますとこんな記述があります。

PA-APIの継続的なご利用にはPA-APIから取得した商品リンク経由で成果が発生し続ける必要があります

(同上)

「リンクタイプレポート」を見ますと、PA-API経由の発送済み商品がありません。原因はこれかもしれません。ただ、今現在も過去30日以内には PA-API経由の発送済み商品はないんですよね。それでも復帰していますので、わからない…。

02過去の広告リンクも消える…

とにかく、PA-API を利用できなくなった原因ははっきりしないのですが、考えてみれば、この症状が出ていたときは過去の広告リンクも表示されていなかったということになります。その時に確認はしていませんが理屈からいけば当然そうなります。

実際に「WPアソシエイトポストR2」がどうやって広告リンクを挿入しているかをコードエディターで見てみますと、

<!-- wp:wp-associate-post-r2/product {"service":"amazon","id":"B0C7GKBS6Q","type":"detail","title":"湖の女たち(新潮文庫)"} /-->

Amazon の商品識別コードである ASIN をプラグインに送っているだけですので、どこかに商品データを保存して持っているか、その都度 PA-API にアクセスしているかになります。

ざっと「WPアソシエイトポストR2」のコードを見てみましたら、確かに商品の JSON データをデータベースに保存しています。保存期間は 1 日になっています。ですので、PA-API に 1 日アクセスできなくなりますと全て広告リンクが消えてしまうということになります。キャッシュ期間の 1 日というのは確か Amazonアソシエイトとの契約条項に入っていたような気がします。

ということは、過去30日以内に PA-API 経由の売上が発生しなかった場合は、PA-API 経由の広告リンクは表示できませんってことになり、じゃあ、どうやって PA-API 経由の売上を上げればいいの?(笑)。

これはどうにかしないといけません。

とにかく、「PA-APIから取得した商品リンク」とはなにかから調べましょう。

03PA-API から商品データを取得する

実際に PA-API を使って商品リンクを作ってみましょう。すでに認証キーはあるものとします。スクラッチパッドのアクセスします。

GetBrowseNodes をクリックし、トラッキングID、アクセスキー、シークレットキーを入力します。

GetItems をクリックし、ItemIds に商品の ASIN または ISBN-10 を入力し、Resources には必要なデータにチェックを入れます。とりあえずは Images.Primary.Large と ItemInfo.Title に入れておけば画像とタイトルデータが得られます。Run Request をクリックします。

実際の表示イメージが表示されます。

そして、JSON データ、

HTML コードが得られます。

その下に、Code snippets があり JAVA, PHP, curl のコードが表示されています。このコードを使えば Scratchpad を使わなくても、WordPress であれば PHP コードを使って自作の Amazonアソシエイトの広告リンク作成ツールを作ることができます。

04PA-API から取得した商品リンク

JSON データで商品リンクを見てみましょう。

{
 "ItemsResult": {
  "Items": [
   {
    "ASIN": "B0CKYM15RJ",
    "DetailPageURL": "https://www.amazon.co.jp/dp/B0CKYM15RJ?tag=imuza-22&linkCode=ogi&th=1&psc=1",
    "Images": {
     "Primary": {
      "Large": {
       "Height": 388,
       "URL": "https://m.media-amazon.com/images/I/31XtxsyATEL._SL500_.jpg",
       "Width": 500
      }
     }
    },
    "ItemInfo": {
     "Title": {
      "DisplayValue": "PlayStation 5(CFI-2000A01)",
      "Label": "Title",
      "Locale": "ja_JP"
     }
    }
   }
  ]
 }
}

6行目です。ASIN の後にクエリパラメータがついています。

https://www.amazon.co.jp/dp/B0CKYM15RJ?tag=imuza-22&linkCode=ogi&th=1&psc=1

linkCode あたりが PA-API 経由であることを示しているんじゃないでしょうか(未確認…)。アソシエイトツールバーで作成したリンクと比べてみましょう。

https://www.amazon.co.jp/dp/B0CKYM15RJ?th=1&linkCode=ll1&tag=imuza-22&linkId=099892570fd78b2606a8f88e25f02f35&language=ja_JP&ref_=as_li_ss_tl

ヘルプに「シンプルなテキストリンクの作り方」というページがあります。

https://www.amazon.co.jp/dp/ASIN/ref=nosim?tag=あなたのアソシエイトID

これですと linkCode はなしです。やはり linkCode が何を使ってリンクを作成したかの識別子になっているような気がします。いずれにしても未確認です。

05PA-API経由の商品リンクをつくってみる

JSON のデータを使って商品リンクを作ってみましょう。

<div class="p-amazon__content">
<a href="https://www.amazon.co.jp/dp/B0CKYM15RJ?tag=imuza-22&linkCode=ogi&th=1&psc=1" target="_blank" rel="noopener">
<img src="https://m.media-amazon.com/images/I/31XtxsyATEL._SL500_.jpg" alt="PlayStation 5(CFI-2000A01)">
<p>PlayStation 5(CFI-2000A01)</p>
<p class="button">Amazon</p></a>
</div>

Scratchpad が吐き出した HTML と同等の商品リンクができました。

これでリンク先は PA-API を使わなくてもできますが、問題は画像です。この商品の場合は、

http://images.amazon.com/images/P/B0CKYM15RJ.09.LZZZZZZZ

の定形パターンで画像も取得できますが、これでは取得できない場合も多いですので、やはり PA-API を使ってデータを保存しておくしかなさそうです。

次回は PHP のコードを使って自作の広告リンク作成ツールを作ってみましょう。