カエレバの代替にAmazonAPIを使わない自動生成商品リンクサービスを自分用に作ってみた

 

カエレバがAmazonAPIの仕様変更により、Amazonを主軸にしたリンク生が成できなくなってしまい、SublimeTextのSnippet機能を使って簡易的なリンク作成ができるようにしていました。
その後いろいろと調べて、PHPとJavascriptで、はじめての自作サービスを作ってみました。

PA-APIが実績不足で使えない

以前、SublimeTextのSnippet機能を使って、カエレバの生成するリンクと同じ形式のものを、コピペのみで作れるようにしたという記事を書きました。

ASINと商品タイトル、検索ワードをコピペして作るというものですが、やはり毎回コピペしていくのは手間がかかるので、なんとか自動化できないかと考えていました。

いろいろと調べていくうちに、自サイトのサーバーにPHPファイルを置いて、自分専用のサービスを作ってみることにしました。
いままでEXCELのマクロ程度しかプログラミングの経験はありませんが、こちらのサイトを参考に自作を思い立ちました。

当初は、まるまる参考(丸パクリ?)にして、AmazonのAPIから情報を取得しようとしたのですが、うまくいきませんでした。

設定は間違ってないはずなのに、このようなエラーが出てしまい、上手くいきません。

RequestThrottled
AWS Access Key ID: <設定したアクセスキー>. You are submitting requests too quickly. Please retry your requests at a slower rate.

こちらも調べてみると、AmazonのPA-API規約の変更で、PA-API経由での実績がないため使用できない状態になっているようです。
こちらのサイトで、同様のエラーについてAmazonに問い合わせをされていました。

新規でAPIを使用しようとすると実績がないので制限に引っかかり、使用できなくなっている。動作するためには、Amazonのサイトで生成したリンクを使って、売上実績を積む必要があるということのようです。

これには困りました。これでは、作ったコードの動作確認すらできません。

しかし、よくよく考えると「自分で商品ページを探して表示させてからブックマークレットを発動させるのなら、そもそも検索機能はいらないのでは?」という結論に達しまして、それならば「AmazonのPA-APIを使わずに、表示させた商品ページから必要な情報を抜き出して、同じような表示をしてくれるもの」へ路線を変更して、作ってみることにしました。

PA-APIを使わずにカエレバと同等のリンクを自動生成する

リンク作成の流れは、

  1. Amazonで紹介する商品ページを表示させる
  2. Bookmarkletを発動
  3. 生成されたコードを表示するページが自動で立ち上がる
  4. コピーして貼り付け

となります。

自作する部分は、2のブックマークレットと、3の生成コードの表示部分です。

あまりん(amalin.php)

表示させるページの名称として、安直ですが「あまりん」と名付けました。
PHPで作成していきます。

作成したPHPの中身がこちらです。

<?php
// WordPress用の関数をここでも使いたいから読み込む
require_once( dirname( __FILE__ ) . '/wp-load.php' );
$getasin = $_GET["asin"];
$gettitle = $_GET["title"];
$getmaker = $_GET["maker"];
$getkw = $_GET["kw"];

// XXXXXXXXの箇所にアソシエイトタグを指定
  //AmazonアソシエイトID
  $Amazon_associate_tag = 'XXXXXXXX';
  //楽天アフィリエイトID
  $rakuten_affiliate_id = 'XXXXXXXX';
  //Yahoo!バリューコマースSID
  $sid = 'XXXXXXXX';
  //Yahoo!バリューコマースPID
  $pid = 'XXXXXXXX';

// 使用する商品データを取得して変数に格納
$page_url = 'https://www.amazon.co.jp/dp/'.$getasin.'/'.$Amazon_associate_tag;
$image_url = 'https://images-na.ssl-images-amazon.com/images/P/'.$getasin.'.09.MZZZZZZZ';

// 各種アフィリエイトのキーワード検索用URLをそれぞれの変数に入れる
$amazon_url = 'https://www.amazon.co.jp/gp/search?keywords='.$getkw.'&amp;tag='.$Amazon_associate_tag;
$rakuten_url = 'https://hb.afl.rakuten.co.jp/hgc/'.$rakuten_affiliate_id.'/?pc=https%3A%2F%2Fsearch.rakuten.co.jp%2Fsearch%2Fmall%2F'.$getkw.'%2F-%2Ff.1-p.1-s.1-sf.0-st.A-v.2%3Fx%3D0%26scid%3Daf_ich_link_urltxt%26m%3Dhttp%3A%2F%2Fm.rakuten.co.jp%2F';
$yahoo_url = 'https://ck.jp.ap.valuecommerce.com/servlet/referral?sid='.$sid.'&amp;pid='.$pid.'&amp;vc_url=http%3A%2F%2Fsearch.shopping.yahoo.co.jp%2Fsearch%3Fp%3D'.$getkw;
?>
<html>
<head>
    <title>あまりん</title>
</head>
<body>
  <h1>あまりん</h1>
WEBLOGでカエレバと同じようにリンクを作るためだけに作ったページ
<h2>使い方</h2>
まずは、このブックマークレットをブラウザに保存する。<br>
<!-- これがブックマークレットの本体。URL部分はphpファイルを置いたパスに変更する必要がある。 -->
<a href="javascript:(function(){var nakami;$nakami=location.pathname.replace(/.*\/(ASIN|dp|product|aw\/d)\/([0-9A-Z]+)\/.*/,'$2');var img = document.getElementById('landingImage');var taito;$taito=img.alt;var mkinfo = document.getElementById('bylineInfo');var maker;$maker=mkinfo.textContent;window.open('https://weblog10.com/amalin.php?asin='+$nakami+'&amp;title='+$taito+'&amp;maker='+$maker+'&amp;kw='+window.getSelection().toString())})();">あまりんブックマークレット</a><br>
<a href="javascript:(function(){var nakami;$nakami=location.pathname.replace(/.*\/(ASIN|dp|product|aw\/d)\/([0-9A-Z]+)\/.*/,'$2');var img = document.getElementById('landingImage');var taito;$taito=img.alt;var mkinfo = document.getElementById('bylineInfo');var maker;$maker=mkinfo.textContent;window.open('https://weblog10.com/amayome.php?asin='+$nakami+'&amp;title='+$taito+'&amp;maker='+$maker+'&amp;kw='+window.getSelection().toString())})();">あまりんkindleブックマークレット</a><br>
あとは、Amazonの商品ページで、楽天とYahoo!の検索キーワードにするワードを選択した状態でブックマークレットを実行する。<br>

<div class="cstmreba">
<div class="kaerebalink-box">
<div class="kaerebalink-image"><a href="<?php echo esc_url($page_url); ?>" target="_blank" ><img src="<?php echo esc_url($image_url); ?>" style="border: none;" /></a></div>
<div class="kaerebalink-info">
<div class="kaerebalink-name"><a href="<?php echo esc_url($page_url); ?>" target="_blank" ><?php echo esc_html($gettitle); ?></a></p>
<div class="kaerebalink-powered-date">posted with <a href="https://weblog10.com/amalin.php" rel="nofollow" target="_blank">あまりん</a></div>
</div>
<div class="kaerebalink-detail"><?php echo esc_html($getmaker); ?></div>
<div class="kaerebalink-link1">
<div class="shoplinkamazon"><a href="<?php echo esc_html($amazon_url); ?>" target="_blank" >Amazon</a></div>
<div class="shoplinkrakuten"><a href="<?php echo esc_html($rakuten_url); ?>" target="_blank" >楽天市場</a></div>
<div class="shoplinkyahoo"><a href="<?php echo esc_html($yahoo_url); ?>" target="_blank">Yahooショッピング</a></div>
</div>
</div>
<div class="booklink-footer"></div>
</div>
</div>
<textarea onclick="this.select()">
<div class="cstmreba">
<div class="kaerebalink-box">
<div class="kaerebalink-image"><a href="<?php echo esc_url($page_url); ?>" target="_blank" ><img src="<?php echo esc_url($image_url); ?>" style="border: none;" /></a></div>
<div class="kaerebalink-info">
<div class="kaerebalink-name"><a href="<?php echo esc_url($page_url); ?>" target="_blank" ><?php echo esc_html($gettitle); ?></a></p>
<div class="kaerebalink-powered-date">posted with <a href="https://weblog10.com/amalin.php" rel="nofollow" target="_blank">あまりん</a></div>
</div>
<div class="kaerebalink-detail"><?php echo esc_html($getmaker); ?></div>
<div class="kaerebalink-link1">
<div class="shoplinkamazon"><a href="<?php echo esc_html($amazon_url); ?>" target="_blank" >Amazon</a></div>
<div class="shoplinkrakuten"><a href="<?php echo esc_html($rakuten_url); ?>" target="_blank" >楽天市場</a></div>
<div class="shoplinkyahoo"><a href="<?php echo esc_html($yahoo_url); ?>" target="_blank">Yahooショッピング</a></div>
</div>
</div>
<div class="booklink-footer"></div>
</div>
</div></textarea>
</body>
</html>

「XXXXXXXX」の4箇所を、それぞれのアソシエイトタグに書き換えて使います。

このPHPファイルを、WordPressがインストールされているディレクトリの直下に配置してください。

生成されるHTMLコードは、カエレバと全く同じ構造です。クラス名も同じですのでカエレバ用のCSS設定がそのまま反映されます。過去に設置したカエレバリンクと同様に扱えます。

すべてのURLを「https://」にして、SSL化にも対応させました。

ブックマークレット

PHPに渡す情報を、Amazonの商品ページから抜き出すためのブックマークレットです。

javascript:(function(){var nakami;$nakami=location.pathname.replace(/.*\/(ASIN|dp|product|aw\/d)\/([0-9A-Z]+)\/.*/,'$2');var img = document.getElementById('landingImage');var taito;$taito=img.alt;var mkinfo = document.getElementById('bylineInfo');var maker;$maker=mkinfo.textContent;window.open('https://weblog10.com/amalin.php?asin='+$nakami+'&title='+$taito+'&maker='+$maker+'&kw='+window.getSelection().toString())})();

Javascript内のURLを、ご自身がPHPファイルを設置したURLへ書き換えて使用してください。
このまま使用すると、私のアフィリエイトIDでリンクが生成されますよ。

Amazonの商品ページから、ASIN、商品名、製造元を抜き出し、ブックマークレット実行時に「選択された文字列」を検索ワードとしてPHPファイルへ渡し、PHPで生成される画面を開きます。

使い方

Amazonで紹介したい商品ページを表示させます。

検索ワードにしたい文字列を選択して、ブックマークレットを実行すると、PHPで生成されたページが開きます。

楽天市場やYahooのリンクをクリックすると、それぞれ選択した文字列を検索ワードとした検索結果のページが開きます。もちろんアフィリエイトIDも反映されたページです。

一番下のテキストボックス内に、生成されたHTMLコードが表示されています。
カエレバ同様にコードをコピーして、ブログ記事などに貼り付けます。

結果

あまりんを使って作成したリンクがこちらです。

カエレバと全く同じ表示になっています。

CSSでの装飾もカエレバと同じですので、一括で変更できます。

まとめ

はじめてのプログラミングといいますか、javascriptやPHPを使って書いてみました。
普通にコード書いてる方からみると拙いものかもしれませんが、大変でした。

私のプログラミング歴なんて、小学生の頃の98BASIC以降は、何もしていませんでした。
ブログを始めて、簡単なHTMLやCSSをいじったり、仕事でEXCELマクロをいじる程度でしたので、本格的なプログラミング言語に触るのはこれが始めてでした。

ネットを調べればコマンドの意味や使い方はわかるのですが、そもそもどういうコマンドがあるのか知らないので、「ソースコードの中から任意の文字列を抽出する」だけでも一苦労でした。

PHPに至っては、動かないとデバッグの方法も知らないので途方に暮れていました。コンマ一つで動かないなんて・・・。

でも、動いたときは感動しましたね。

作っていくうちに、ああしたいこうしたいと言うのも出てきたので、もっと勉強していこうと思います。

スポンサーリンク

シェアする

フォローする

コメント

  1. とまじぃ より:

    はてなブログでAmazon商品系のリンクを貼りたい場合にカエレバが改変されてしまったことにより代替え案を探してここにたどり着きました。

    ワープレでも1サイトを持っておりPHPのアップロードもできるので試してみたところほぼカエレバライクなコードを出力してくれるので非常にありがたく使わせていただきました。

    せめてものお礼として「posted with あまりん」の部分は改変せず使わせていただきます(笑)

    • taks より:

      コメントありがとうございます。
      拙いコードで恥ずかしい限りですが、お役に立てれば嬉しいです。