Greasy Fork is available in English.
Amazon.co.jpの商品ページに固定URL、サクラチェッカー、keepaなどのリンクを追加します
// ==UserScript==
// @name Amazon.co.jpの商品ページに各種リンク追加
// @namespace https://www.amazon.co.jp/dp/
// @version 1.12
// @description Amazon.co.jpの商品ページに固定URL、サクラチェッカー、keepaなどのリンクを追加します
// @match https://www.amazon.co.jp/dp/*
// @match https://www.amazon.co.jp/*/dp/*
// @match https://www.amazon.co.jp/gp/product/*
// @match https://www.amazon.co.jp/*/ASIN/*
// @match https://www.amazon.co.jp/product-reviews/*
// @match https://www.amazon.co.jp/*/product-reviews/*
// @match https://www.amazon.co.jp/kindle-dbs/product/*
// @grant GM_addStyle
// @license MIT
// ==/UserScript==
(() => {
"use strict";
// フレーム内(iframeなど)なら終了
if(window != window.parent) return;
// 外部リンクのアイコンをスタイルシートで設定(クラス名は衝突を避けるためにわざとダサくしてる)
GM_addStyle(
".gaiburinku::after{" +
" content: url(\'data:image/gif;base64,R0lGODlhDAAMAIABADMzM////yH5BAEAAAEALAAAAAAMAAwAAAIajB+gmgvnookPrVYnw3Dr/nnWI4JlSDlaahQA\');" +
" opacity: 0.7;" +
" margin-left: 2px;" +
"}"
);
// メイン関数
const mainFunction = () => {
// すでに追加済みなら終了
if(document.getElementById("various_links")) return;
// ASIN取得
let asin = null;
let element_asin = document.getElementById("ASIN");
if(element_asin){
let t = String(element_asin.getAttribute("value")).match(/[0-9A-Za-z]{10}/);
if(t) asin = t[0];
}
if(!asin){
let t = location.href.match(/\/(dp|gp\/product|kindle\-dbs\/product|product-reviews|ASIN)\/([0-9A-Za-z]{10})/i);
if(t) asin = t[2];
}
if(!asin) return;
// 追加先取得(querySelectorを使うなら一括でも良いのだが、セレクタの優先順がよく分からないのでこうした)
const csslist = ["#Northstar-Buybox", "#buybox", "#cm_cr-buy_box", "#quick-buy-widget", "#a-page #hulk_buy_box, #a-page div.atf-dp > div.atf-dp-content > div.atf-dp-action"];
let element_buybox = null;
for(let i=0; i < csslist.length; i++){
element_buybox = document.querySelector(csslist[i]);
if(element_buybox) break;
}
if(!element_buybox) return;
// 追加要素の外枠作成
const div_outer = document.createElement("div");
div_outer.id = "various_links";
div_outer.style.marginTop = "0.5em";
div_outer.style.marginBottom = "0.5em";
div_outer.style.textAlign = "left";
// リンクを作成して追加していく関数
const createLinkElement = (url, text, bExternal) => {
const d = document.createElement("div");
const a = document.createElement("a");
a.setAttribute("href", url);
a.textContent = text;
if(bExternal){
a.setAttribute("target", "_blank");
a.setAttribute("class", "gaiburinku");
}
d.appendChild(a);
div_outer.appendChild(d);
};
// 固定URL
createLinkElement("https://www.amazon.co.jp/dp/" + asin + "/", "固定URL", false);
// 販売元Amazon.co.jpを優先(固定URLにsmid=AN1VRQENFRJN5を付けたもの)
createLinkElement("https://www.amazon.co.jp/dp/" + asin + "/?smid=AN1VRQENFRJN5", "商品URL(販売Amazon優先)", false);
// サクラチェッカー
createLinkElement("https://sakura-checker.jp/search/" + asin + "/", "サクラチェッカーで検索", true);
// keepa
createLinkElement("https://keepa.com/#!product/5-" + asin, "keepaで検索", true);
// キセケン(kindle用としてKindle本のページの場合だけ表示する)
// 2025年9月30日にサービス終了したのでコメントアウト
//if(document.querySelector("*[id*=\"booksInstantOrderUpdate\"],#cm_cr-buy_box a[href^=\"/\"][href*=\"-ebook/dp\"]")){
// createLinkElement("https://www.listasin.net/kndlsl/search/r/1---" + asin, "キセケンで検索", true);
//}
// 作成した要素を追加
element_buybox.parentNode.insertBefore(div_outer, element_buybox.nextElementSibling);
};
// 動的更新の監視対象
const desktop_buybox = document.querySelector("#dsv_buybox_desktop, #desktop_buybox_feature_div, #desktop_buybox, #combinedBuyBox, #Northstar-Buybox");
if(desktop_buybox){
(new MutationObserver(mainFunction)).observe(desktop_buybox, {childList:true});
}
// 初回実行
mainFunction();
})();