2月初めにアマゾンからPA-API v5への移行を勧めるメールが届いていた。このまま放置すると2020年3月9日で現行PA-APIが使えなくなってしまうらしい。
現在はWordPressのCocoonテーマ付属のショートコード、AmazonJSとWPアソシエイトポストR2のプラグインを3種類併用している。とりあえずAmazonから新しくアクセスキーとシークレットキーを取得して、3つとも再設定してみた。
AmazonアソシエイトのAPI変更に関する対策と、今後の展望についてまとめてみたい。
(2020年4月24日更新)
Amazonからのメール内容
[重要なお知らせ]というタイトルで届いたメールは、以下のような内容だった。
ご登録のサイトから現行のPA-API v4のCallを少なくとも1回以上検知したためご連絡致しました。
既にご案内させて頂いておりますように、お客様において、PA-API v5への移行を2019年3月9日までに実施しなかった場合、現行のPA-APIをご利用いただけなくなります。
バージョン5への移行期限が2019年となっているが、文面から察すると2020年の間違いだろう。
「あと1か月でAmazonアソシエイトが使えなくなってしまう」というおそろしい告知だった。
PA-APIとは何なのか?
そもそもAmazonのPA-APIとは何なのだろう。
正式名称はAmazon Product Advertising API。
Amazonの商品データベースにアクセスできるAPI(Application Programming Interface)を意味する。公式サイトの日本語訳は「商品情報API」。
WordPressのテーマやプラグインに認証キーを入れて使っているだけなら、普段は意識することのない技術だ。Cocoonの「Amazon商品リンクショートコード」やWPアソシエイトポストR2の中で使われている。
Amazonウェブサイトから「アソシエイト・ツールバー」を使って商品リンクを直接生成している場合は、このPA-APIを経由していないことになる。
PA-API以外の方法で商品リンクを作ることはできますか?
もちろんです。Amazon.co.jpサイト内の好きなページでリンクを作成することができる、アソシエイト・ツールバーの利用もご検討ください。
ツールバーしか使っていない場合は、今回の仕様変更に関する対応は不要だろう。警告メールも届いていないと推測される。
リンクタイプレポートの確認
Amazonアソシエイトの管理画面で「レポート>リンクタイプレポート」を選択すると、紹介料の発生したPA-APIの種類を見ることができる。
直近ではPA-API5経由が大半で、従来型の商品リンクもある程度は売上に貢献している。そして1%以下のわずかな割合で、v5でないPA-APIからも注文が生じている。
これが警告メールにあった「現行のPA-API v4のCallを少なくとも1回以上検知したため…」というメッセージの意味だろう。
CocoonのAmazonショートコード
古いPA-APIが使われている原因を調べてみた。
まずWordPressのテーマは無料のCocoon。2020年2月16日時点で最新のバージョン2.0.9.4を使用している。コクーンのAmazonショートコード機能はv1.9.7ですでにPA-API v5に対応済み。
(参考)PA-API v5に移行する際の注意点。Cocoon 1.9.6.4以降へアップデートする前に。
上記サイトで注意されているように、AWS(Amazon Web Service)経由のアクセス/シークレットキーは使っていない。現在使用中のキーはAmazonアソシエイトで生成したものなので、AWS関連の部分は再設定不要と思われる。
サーバー側のPHP.ini設定もConoHaならデフォルトのままで問題ないはず。Amazon商品リンクに管理者用のエラーメッセージも出ていない。
するとCocoon設定のAPI機能を用いてリンクを生成している部分は、すでに新規格PA-API v5に適合していると考えられる。
WPアソシエイトポストR2の不具合
続いてチェックしたのは使用中のWordPressプラグイン2種類。
WPアソシエイトポストR2はPA-API5に対応した最新バージョン4.0にアップデートしてある。
リンクも正常に表示されているようだが、記事中に新規追加しようとすると、なぜか「挿入してウインドウを閉じる」ボタンが押せない。
Amazonだけでなく楽天市場、楽天ブックスの場合も同様。これでは商品リンクの新規追加がまったくできない。
これはプラグインの不具合なのか、WordPressの編集画面やテーマの問題なのか原因がわからない。とりあえず最近はCocoonのショートコードしか使っていないので、対策は後回しにした。
さらにアソシエイトポストの現行バージョンでは、楽天・ヤフーのボタンを消してAmazonのリンクだけ有効にすると、アフィリエイトのタグ自体が消えてしまう。これもバグなのかどうかはっきりしない。
昨年までは安定して使えていたが、どうも最近のWPアソシエイトポストR2は挙動がおかしい。
AmazonJSはPA-API5対応不明
AmazonJSはバージョン0.10。古くから使っているWordPressプラグインのひとつだ。
商品がリンク切れすると、画像の部分にグルグルマークがずっと出ていたりする。その場合は個別にリンクを消したり、別商品に差し替えたりすることで対応してきた。
AmazonJSの公式サイトで「最終更新:3か月前」となっており、最近になっても更新は続いているように見える。しかし内部的にPA-API5に対応しているかどうかは定かでない。
警告の原因となっているのはAmazonJS経由のアクセスだろうか。
アソシエイト認証キーの確認
各ツールに設定してあるAmazonの認証キーを再確認してみた。
2017年と2018年に取ったキーが2つあり、調べたところ管理中のサイトやツールはすべて古い方を利用している。少々古いがどちらもAmazonアソシエイトの管理画面から生成したもので、状態はActive。
もし認証キーが古いことが原因だとしたら、PA-API経由の売上はすべてエラーになるはずだ。これが理由とは考えにくいが、念のため使っていない方のキーを削除して、新たな認証情報を取得してみた。
アクセスID・シークレットキーの再生成
アクセスキーIDは管理画面でいつでも確認できる。だがシークレットキーの方は取得時に一度しか表示されない。
ID生成時にCSVファイルに書き出して、ローカル環境にファイルを保存することもできる。もしシークレットキーを忘れてしまうと、そのIDは放棄して新しく取り直すしかない。
生成できるアクセスキーは2個まで。
すでに2つある状態だと「認証情報を追加する」というボタンが無効化され、押すことができなくなる。どちらか1つ削除するとボタンは再び有効化される。
認証キーな90日更新推奨
認証キーの管理画面には以下のように書かれている。
「アクセスキーは90日ごとに変更することを推奨しております」
古いキーを数年も使いまわしているのは、もともと良くない状態だったようだ。
サイトをいくつも運営している場合は更新が手間だが、たまには生成・取得し直した方がセキュリティー上の懸念は減らせる。
原因不明なまま様子見
ほかのサイトで調べた限り、AmazonJS関連の不具合はAPIキーを取得し直せば解決する場合があるようだ。
PA-API v4以前の紹介料が生じている原因は不明なままだが、とりあえず各ツールのキーを最新版に差し替えた。このまましばらく運用して、Amazonアソシエイトに出るレポートの変化をチェックしてみたい。
そもそも旧PA-APIによる売上はごくわずか。3月9日にこのチャンネルだけ無効化されたとしても、ダメージは少ないといえる。
PA-APIの変更以前に、複数のプラグインやテーマでリンクを生成しているのは気持ち悪い気もしていた。今後のメンテナンスを楽にするためにも、Amazonの商品リンク作成方法について見直してみたい。
(追記)問題は解決せず…
その後数日様子を見てみたが、やはりバージョン5以外のPA-APIが記録されてしまう。相変わらず割合は少なく、売上への貢献度も小さいのは救いだ。
そしてAmazonからはしつこくメールが送られてくる。今度は英語版で前と同じ内容が警告されていた。
“… at least one of your applications was making calls to PA API 4.0.”
打つ手は尽くしたのでもうお手上げ。利用しているテーマ機能やプラグインのバグだとしたら、全体を差し替えるしかない。
ほかに見落としている商品リンクがあったりするのだろうか。長年運用を続けていると記憶が曖昧。
旧はてなブログ自体の記事がどこかにキャッシュされているとか、知らないところでアクセスされている可能性もある。
Amazonアソシエイトのリンク生成方法
現在自分がAmazonアソシエイトのリンクを生成している方法は、以下の4パターンある。
- Cocoonショートコード(テーマ付属機能)
- WPアソシエイトポストR2(プラグイン)
- AmazonJS(プラグイン)
- アソシエイト・ツールバーから生成したテキストリンク
過去にAmazonJS→WPアソシエイトポストR2→Cocoonショートコードの順で乗り換えてきたため、記事を書いた時期によって使っているツールが異なる。
AmazonJS以外の2つは、楽天市場とYahoo!ショッピングのリンクも同時に生成できるのが便利だ。テキストリンクもWPアソシエイトポストR2を使っていた時期があるが、現在はAmazon純正のツールバー生成に戻している。
今後ツールが廃止されたり更新停止されたりする可能性を考えると、いくつか組み合わせてリスク分散を図るのもありとはいえる。
Amazon Associates Link Builderは終了
たとえばWordPress向けのプラグイン”Amazon Associates Link Builder”も、PA-API v5移行とともに提供終了・機能停止されることになった。
Amazonが公式にリリースしているツールでさえ途中で打ち切られるのだから、何が起こっても不思議ではない。
現在WPアソシエイトポストR2に出ている不具合(リンクを新規追加できない、Amazon単独だと表示されない)も致命的な問題。
長年にわたって安定稼働しているのはアソシエイト・ツールバー、もしくはアソシエイトのサイトから生成する「商品リンク」だけだ。
公式サイトの商品リンク3種
もしAmazon物販リンクをノーメンテで長く使いまわすなら、現段階で最も確実なのはツールバーも使わず、アソシエイトサイトの商品リンクを利用すること。
Amazonアソシエイトのウェブサイトに「商品リンク」というメニューがあり、ここからテキストや画像形式のリンクを生成できる。
今は面倒で使っていないが、昔はこの方法でこつこつリンクを作っていた。
1. テキストリンク
読み込み負荷も少なく安心して利用できるのは、やはりシンプルなテキストリンク。
普段は適当な文字列に対してツールバーから生成したリンクを貼り付けている。しかしアソシエイトの規約上、最も安全なのは「商品リンク」から生成されたリンク付きテキストをそのままコピペすることだ。
たとえばこんな感じで、リンク付きの書籍や商品タイトルを表示できる。
2. 画像のみリンク
商品リンクからは「画像のみ」というリンクも生成できる。
ただしこれだと単なる装飾的な画像なのか商品へのリンクなのか、見た目で判断がつきにくい。読者に対しては不親切な気がする。
3. テキストと画像リンク
そして今では見かけることも少なくなった「テキストと画像」リンク。
amazon.co.jpのロゴと「今すぐ購入」ボタンの間に、商品画像・タイトル・価格が挟まれる形式で、ソースコードは<iframe>タグで表現される。
縦型なため左右の余白がもったいないうえ、これがあるだけでウェブサイトが古くさい印象を与えてしまう。
デザイン重視なサイトであれば、まず使いたくないパターン。
しかしAmazonへのリンクであることを示すうえで、これ以上分かりやすい表現形式はない。そして20年近くこのフォーマットで存続しているという実績もある。
見た目はともかく読者に便宜を図るなら、旧型リンクの方が効果は高いかもしれない。
プラグインが生成した見慣れない物販リンクより、一目でAmazonとわかって公式提供の安心感も得られる。
短縮URLを使わない理由
Amazon公式の商品リンクやツールバーからテキストリンクを生成すると、「通常URL」のほかに「短縮URL」も選べる。
通常URLだと異様に長い文字列になってしまうので、短縮版を使った方が便利な気がする。HTMLのコード量もわずかに減って、ページ読み込みの時間短縮に貢献するだろう。
ただしリンクをクリックする読者にとっては、どちらの表現方式でも変わらない。
短縮版でも商品ページに飛ぶと長いURLに復元される。そのため強いてウェブサイトのソースコードでも見なければ、気づかれることのない違いだ。
楽天の短縮URLには期限あり
以前は短縮URLをメインで使っていたが、最近は通常URLに切り替えた。
その理由は楽天アフィリエイトの短縮URLに「作成から3年間」という有効期限があることを知ったからだ。
3年も経てば商品在庫がなくなったり販売中止になったりするかもしれない。紹介記事の内容も古くなって、賞味期限が切れてしまう可能性が高い。
しかしモノによっては3年以上売れ続けるロングセラーもある。ブログを長期間続けるなら、「3年で切れる物販リンク」というのは明らかに使い勝手が悪い。
Amazonの短縮リンクには、今のところ使用期限が定められていない。ただし楽天の例を見ると、いつかは廃止されたり期限が設けられたりする可能性もありそうだ。
その点では昔から使われている通常URLの方がロバストだと感じる。下手に情報圧縮しない生データなだけに、復元処理のコストや手間も少ない。
リンクを一括検索・置換できない
通常URLが持っているもうひとつの利点は、リンク先の文字列を見て中身がわかる点だ。
短縮URLでは暗号化されたようなランダムな文字列になるため、リンク先がどこなのかまったく推測できない。商品名が直接出ない点では通常URLでも同じだが、トラッキングIDが何なのかは確認できる。
Amazonアソシエイトを長く使っていると、ウェブサイトや商品ジャンルごとにレポートを分けて効果測定したいことがある。そのためにはトラッキングIDを別々に割り振るのが手っ取り早い。
通常URLであれば、Search RegexやBetter Search Replaceといった検索・置換プラグインを使ってIDだけ一括変換できる。
”tag=○○-22”に該当する文字列を検索して任意のIDに置き換えればいい。短縮URLでは、あとからこうした細かい編集が効かない。
ブログを長年続けていると、物販リンクも数百の数に及ぶ。何かあったときにリンクを差し替えるのは面倒なので、目に見えないURLは冗長でもよさそうな気がする。
通常URLは長いとはいえ、ツールバーや商品リンクからコピペすれば使い勝手は変わらない。
今後のリンク生成方針
いろいろ考えた結果、Amazonアソシエイトのリンクは当面以下の2種類で統一しようと思う。
- テキストリンク…アソシエイト・ツールバーから生成した通常URL
- 画像付きのリンク…CocoonのAmazon商品リンクショートコード
テキストリンクを生成するために、Amazonアソシエイトにログインして「商品リンク」ページを経由するのはさすがに面倒だ。ツールバーも公式提供されているものなので、生成されるリンクは品質に問題ないだろう。
元の商品名とあまりにかけ離れたテキストでなければ、自作のテキストリンクを作っても規約違反になるおそれは少ないと思われる。
10年後の業界事情は読めない
画像付きのリンクについて、アソシエイトのデフォルト形式はやはりダサい。WordPressで外部ツールを使う場合は、テーマかプラグインのどちらかに依存することになる。
現在無料で使わせてもらっているCocoonも、いつかは廃れて開発更新がストップするかもしれない。前作のSimplicityから乗り換えるのは、それなりに手間がかかった。
一方でWordPressのプラグインも安泰とは言いがたい。
テーマが変わってもそのまま移せる安心感はあるが、AmazonJSもWPアソシエイトポストR2も挙動が不安定。昨年からPA-APIまわりのアップデートが相次いだせいかもしれない。
そもそも10年も経てばWordPressや各テーマ・プラグインのバージョン・仕様は大幅に更新されているはず。Amazonアソシエイトの紹介料率や仕組み自体が、がらっと変わっているかもしれない。
ブログ文化は続きそうな気がするが、アフィリエイトというマネタイズ手段は年々厳しくなっている。いずれAmazon自体がアソシエイトの提供をやめてしまうおそれもある。
そこまで考えると、10年先でも安定稼働する物販リンクを想定するのは不可能に近い。
現時点で見栄えと作業効率、少なくとも2~3年までは使えそうな安定感を総合的に評価して、少しでもましなツールを選ぶしかない。
Cocoonのショートコードが便利な点
Cocoonのショートコードが他のプラグインより便利なのは、価格やロゴ表示、Amazon・楽天・ヤフーの3種ボタン表示を設定画面から一括オンオフできる点だ。
各社のボタン表示に関しては、WPアソシエイトポストR2でもプラグイン設定から制御できる。
しかし価格情報を表示するか否かについては、個別にリンクを埋め込むときしか設定できない。もし後からいじりたくなっても、ひとつずつリンクを生成し直すしかない。
またCocoonのAmazon商品リンクに関するショートコードは、以下のように単純なテキストで表現される。
[amazon asin="○○○" kw="○○○"]
タグやオプションの意味も明快なので、あとから検索・置換ツールで編集することができる。たとえば上記リンクでamazonをamazonjsに置換すれば、asinが同じAmazonJSリンクに変換できる。
AmazonJSとの相互変換が可能
万が一コクーンでトラブルが発生した場合に、物販リンクをそのままAmazonJSに変更できるのは安心材料。AmazonJSからCocoonへの逆変換も同様だ。
ためしにデフォルト生成されるコードのamazonjs→amazonに修正しただけでも、Cocoonのショートコードとして問題なく機能した。
(変更前)[amazonjs asin="○○○" local=”JP” title="□□□"] (変更後)[amazon asin="○○○" local=”JP” title="□□□"]
titleオプションは共通なので、そのまま反映される。localはCocoon側にないオプションなので、単純に無視されるようだ。
おそらく既存のAmazonJSとの互換性を意識して設計されているのだろう。
WPアソシエイトポストR2とは互換性がないが、簡単なテキスト置換でプラグインと相互変換できるショートコードは使い勝手がいい。
Search Regexで一括変換
AmazonJSで設定した商品リンクが数100個もある場合、手動でCocoonショートコードに替えていくのは手間がかかる。その場合は正規表現で検索・置換できるSearch Regexを使うのが定石だ。
何年も前に開発が止まっており、WordPressの現行バージョンでは実行するとエラーが出るこのプラグイン。代替ツールを探したが、正規表現が使えて記事ごとの結果をプレビューできるのは、いまだにこれしか見つからなかった。日本語の解説情報も充実している。
AmazonJSからCocoonショートコードに変換するには、次の正規表現を使う。
※以下の例では誤作動を避けるため「amazon -> amazon」と全角英数字で表現しています。
Search pattern: /\[amazonjs asin=(.*?) locale="JP" title=(.*?)\]/ Replace pattern: [amazon asin=$1 kw=$2] ※下側のオプション「Regex:」にチェック
商品を識別するASIN番号は共通なので、「local=”JP”」を外し「title -> kw」「amazonjs -> amazon」に書き換えるだけの変更で済む。
titleをCocoonショートコードのkwオプション(検索キーワード)に流用すれば、楽天市場やYahoo!ショッピングのボタンも表示できる。
ショートコードの一括コメントアウト
同様にもしCocoonショートコードを一時的にコメントアウトしたい事情があれば、以下の正規表現で一括置換できる。
Search pattern: /\[amazon asin=(.*?)\]/ Replace pattern: <!--[amazon asin=$1]--> ※下側のオプション「Regex:」にチェック
Cocoonのショートコードに対してHTMLのコメントタグ<!–○○–>は有効。逆にコメントを外したい場合は、
Search pattern: /\<!--\[amazon asin=(.*?)\]--\>/ Replace pattern: [amazon asin=$1] ※下側のオプション「Regex:」にチェック
Amazonアソシエイトの追加URL承認を受けていない別サイトに、ショートコード付きの既存記事を転送する際、このテクニックが使える。
一時的に物販アフィリエイトのリンクを外して、承認を受けたあとに一括置換で戻すことができる。正規表現をアレンジすれば、Amazon商品のテキストリンクにも適用可能。
古いSearch Regexを使うのはいろいろ不安だが、とりあえず現在最新のWordPress5.4では問題なく動くようだ。