Ghost の Amazon リンクカードをなおす(1)

このブログは Ghost (Pro)というホスティングサービスを使っている。Ghost 自体はオープンソースのブログシステムで、それをフルマネージドで使えるサービスが Ghost (Pro) だ。

Ghost: The best open source blog & newsletter platform
Beautiful, modern publishing with email newsletters and paid subscriptions built-in. Used by Platformer, 404Media, Lever News, Tangle, The Browser, and thousands more.
GitHub - TryGhost/Ghost: Independent technology for modern publishing, memberships, subscriptions and newsletters.
Independent technology for modern publishing, memberships, subscriptions and newsletters. - TryGhost/Ghost

一つ前の記事でも言及したが Ghost で書いた記事に Amazon リンクを貼り付けると​カードが作成されるのだが、商品の画像が表示されない​問題がある。たとえばこんな感じ。

アフィリエイトを狙っているわけではないので不利益はないんだけど、単にかっこわるいというか、見栄えが悪いなぁと思ってなんとかしたいと感じていた。すでに問題としては認識されいてフォーラムに Issue をたてている人はいるのだけど、すでに4年間も放置されていて Ghost 側でなおす雰囲気はなさそうだ。

Images not visible in amazon link cards
naturanovit.net I use ghost pro, so assuming it’s the latest version Using the casper theme 4.1.1 I’m trying to include third party links in my post, including some amazon affiliate links. Here it is: Site unavailable (amazon link on the bottom) I just copied and pasted the links in the editor. For most non-amazon sites, you can see that the links auto-formatted to look quite nice, including an image. Their height is capped, etc. However, the amazon links look terrible. No image, and som…

フォーラムでも文句書いてる人がいたけどブログサービスとしてこれはけっこう致命的ではないか?とは思った。とはいえ、中の人が

Any PRs to Ghost or the upstream packages that improve the Amazon situation are very welcome 🙏

と書いていてたまには自分で直してみるかと思いコードをすこし眺めてみた。もしかしたら、なんとかなりそうな気もしてきたので対応してみることにした。

Metascraper を調べる

Ghost ではカードのためのメタデータは Metascraper というライブラリをつかっているらしい。それがこれ。

Metascraper: unified metadata from the web
Open Graph, Microdata, RDFa, Twitter Cards, JSON-LD, HTML, and more.

まずはこの Metascraper 単体で動作させてみて Amazon のメタデータがうまくとれるのかどうかを試してみる。調べてみると Metascraper には Amazon 用の package (plugin 的なものかな)もあるようだけど『それがあまりいい結果ではなかった』いうのが中の人の報告だった。また、関連する github issue もあって『これのせいでおかしいんだよ~』って話でまだ open のまま。とはいえ、これも数年前の issue だし改善してそうな気もする。まずは check out して Metascraper を動かしてみる。

--

手元で metascraper をただ動かすだけのコードを書いて試してみた。結果としてmetascraper-amazon package を使えば意図通りに動いているように思えた。例えばさきほどスクリーンショットした「三体Ⅲ」のリンクの metadata は次のようになっていた。

{
  lang: null,
  author: '劉 慈欣 (著), 大森 望 (翻訳), 光吉 さくら (翻訳), ワン チャイ (翻訳), 泊 功 (翻訳) & 2 その他 形式: Kindle版',
  title: '三体3 死神永生 上 (ハヤカワ文庫SF)',
  publisher: 'Amazon',
  image: 'https://m.media-amazon.com/images/I/81ATPl9QRHL._SL1500_.jpg',
  date: '2025-03-05T14:00:55.000Z',
  description: 'Amazon.co.jp: 三体3 死神永生 上 (ハヤカワ文庫SF) eBook : 劉 慈欣, 大森 望, 光吉 さくら, ワン チャイ, 泊 功: 本',
  logo: 'https://logo.clearbit.com/amazon.co.jp',
  url: 'https://www.amazon.co.jp/...(省略)'
}

image としてとれる URL にアクセスすると正しく本の画像が表示されている。

ただいろいろ動かして気づいたのが metascraper に与える package の順序で優先度が決まるため amazon のpackage を一番後ろにすると metadata がおかしくなった。

{
  date: '2025-03-05T14:03:37.000Z',
  description: 'Amazon.co.jp: 三体3 死神永生 上 (ハヤカワ文庫SF) eBook : 劉 慈欣, 大森 望, 光吉 さくら, ワン チャイ, 泊 功: 本',
  image: 'https://fls-fe.amazon.co.jp/1/batch/1/OP/A1VC38T7YXB528:356-1395144-8046230:KYE8M6D304DCB9AJWKRV$uedata=s:%2Frd%2Fuedata%3Fstaticb%26id%3DKYE8M6D304DCB9AJWKRV:0',
  logo: 'https://logo.clearbit.com/amazon.co.jp',
  publisher: 'Amazon',
  title: 'B0D6R268BJ?...(省略)',
  author: 'フォロー'
}

もしやこれに気づいてなくて package list の一番うしろ metascraper-amazon をいれてしまって「metadata がおかしかった」と思っていたただけなのでは?この部分の一番後ろにいれてしまって「おかしい」と思ってたのかな。

Ghost/ghost/core/core/server/services/oembed/OEmbedService.js at main · TryGhost/Ghost
Independent technology for modern publishing, memberships, subscriptions and newsletters. - TryGhost/Ghost

package は URL によって対象を決定する仕組みもあるので、一番上にいれても amazon 以外のドメインでなければ適用されないはず。というわけで、単に一番上に metascraper-amazon の package をいれるだけでいいように思えた。

次は実際に Ghost を check out してローカルで動かしてみる。再現確認できたら issue にしてまたここに記録を書きます。

Read more

2025年の秋・冬

いつのまにか11月になっていた。今年もあと一月しかない。読んだ本を書いていく。 『すごい物理学講義』 Amazon.co.jp: すごい物理学講義 : カルロ・ロヴェッリ, 竹内 薫, 栗原 俊秀: 本Amazon.co.jp: すごい物理学講義 : カルロ・ロヴェッリ, 竹内 薫, 栗原 俊秀: 本Amazonのストアでお買い物 ›フォロー 前の記事で少しふれた最新の理論物理学の本。ちゃんと最後まで読んだ。 著者はループ量子重力理論の研究者。本の内容は、古典力学、電磁気学、相対性理論、量子力学を経て量子重力理論に至るまでの解説。最初の章では古代ギリシアの原子論についても触れ、「最新の理論物理学的の視点で見ると、その時代の世界の捉え方はいい線いってた」みたいな話も。電磁気学、相対性理論、量子力学、それぞれについての解説本は軽く読んだことはあるけど(Newton とかね)、理論が発展してきた流れを知ることができてよかった。 この本の中でキャッチーなのは「第7章: 時間は実は存在しない」のところで、ループ量子重力理論では時間を扱うことなく理論を構築することができる、

2025の夏

月に一本はブログを書きたいから最近のできごとを書いておく。まとまりはないが書かないよりはよい。本当は8月中に投稿したかったけど、9月になってしまった。 『因果推論の科学 - なぜ?の問いにどう答えるか』 因果推論の科学 「なぜ?」の問いにどう答えるか | ジューディア・パール, ダナ・マッケンジー, 松尾 豊, 夏目 大 |本 | 通販 | AmazonAmazonでジューディア・パール, ダナ・マッケンジー, 松尾 豊, 夏目 大の因果推論の科学 「なぜ?」の問いにどう答えるか。アマゾンならポイント還元本が多数。ジューディア・パール, ダナ・マッケンジー, 松尾 豊, 夏目 大作品ほか、お急ぎ便対象商品は当日お届けも可能。また因果推論の科学 「なぜ?」の問いにどう答えるかもアマゾン配送商品なら通常配送無料。Amazonのストアでお買い物 ›フォロー 夏前から読んでた本。 因果推論という新しい統計的手法を解説した本。この分野の潮流として、「ドナルド・

『コンピュータシステムの理論と実装』を始めた

『コンピュータシステムの理論と実装 - モダンなコンピュータの作り方』を始めた。 コンピュータシステムの理論と実装コンピュータを理解するための最善の方法はゼロからコンピュータを作ることです。コンピュータの構成要素は、ハードウェア、ソフトウェア、コンパイラ、OSに大別できます。本書では、これらコンピュータの構成要素をひとつずつ組み立てます。具体的には、NANDという電子素子からスタートし、論理ゲート、加算器、CPUを設計します。そして、オペレーティングシステム、コンパイラ、バーチャルマシンなどを実装しコンピュータを完成させて、最後にその上でアプリケーション(テトリスなど)を動作させます。実行環境はJava(Mac、Windows、Linuxで動作)。 ● 本書のサポートサイト ● 本書で使用するツール「Nand2tetris Software Suite」 ● 「Nand2tetris Software Suite」のチュートリアルO'Reilly logoNoam Nisan、Shimon Schocken 著、斎藤 康毅 訳 本書では、これらコンピュータの構成要素をひとつずつ組み

『1984年』ジョージ・オーウェル著

ジョージ・オーウェルの『1984年』を読みました。 一九八四年 (ハヤカワepi文庫) | ジョージ・オーウェル, 高橋 和久, 高橋和久 | 英米の小説・文芸 | Kindleストア | AmazonAmazonでジョージ・オーウェル, 高橋 和久, 高橋和久の一九八四年 (ハヤカワepi文庫)。アマゾンならポイント還元本が多数。一度購入いただいた電子書籍は、KindleおよびFire端末、スマートフォンやタブレットなど、様々な端末でもお楽しみいただけます。Amazonフォロー 特に紹介するまでもない有名な本だからあらすじとかそういうのは書かなくていいかな。海外では『読んだことないけど読んだふりして語る本』の第一位らしい。だから、意外とみんな実際に読んだことはないのかもしれない。それでも、“BIG BROTHER IS WATCHING YOU” とか、“WAR IS PEACE” はよくオマージュされてるし、有名なのはたぶん間違いない。 大学生活の終わりのころ、ハヤカワから出てる旧訳を読んで感銘(?)を受けたけど記憶も薄れてきて、新訳もたくさん出てたからもう一度手に取った。訳