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

2026Q1

気が付けば今年もあっという間に3か月が過ぎてしまった。 転職した 1月から新しい会社に勤めてる。転職といいつつ社内制度を利用したグループ会社への転籍だから、世間一般の「転職」とはだいぶ違うかな。知り合いもそれなりにいる。でも、雇用契約は巻き直しだったので公的には転職。健康保険組合も変わって、一時的にマイナ保険証が使えなくて不便だった。オフィスが違うからなのか、文化もけっこう違うし環境の変化はそれなりにあった。 転籍した理由はいろいろあるけれど、40歳目前にしてそろそろソフトウェアエンジニアとして錆びてくる部分が出てくるなと思っていた。それに抗うための一番の方法は環境を変えることだと思った。会社を変える方法以外にそれを回避する手段はあったのだろうけど、会社を変えるのが一番効率のいい手法だと思ってるし、これまで経験もそれを肯定していたから。とはいえ、子育て中のサラリーマンが全く知らない新しい会社に飛び込むのはいろいろとハードルが高く、ある程度は転職先の状況が読めるこの形に落ち着いた。 いくつか変化はあったが、より AI に近いところで仕事できるようになった。前職でも AI は使っ

2025年の冬

今年ももう終り。読んだ本などのメモ。 『三体0【ゼロ】 球状閃電』 三体0【ゼロ】 球状閃電 (ハヤカワ文庫SF) | 劉 慈欣, 大森 望, 光吉 さくら, ワン チャイ | 中国の小説・文芸 | Kindleストア | AmazonAmazonで劉 慈欣, 大森 望, 光吉 さくら, ワン チャイの三体0【ゼロ】 球状閃電 (ハヤカワ文庫SF)。アマゾンならポイント還元本が多数。一度購入いただいた電子書籍は、KindleおよびFire端末、スマートフォンやタブレットなど、様々な端末でもお楽しみいただけます。このブランドからフォロー これまでに三体シリーズの Ⅰ、Ⅱ、Ⅲ はすでに読んでいて、また三体っぽい重めの雰囲気の小説が読みたいと思っていたところ、三体シリーズの前日譚という触れ込みで Amazon のおすすめに出てきたから手に取ってみた。 著者は三体シリーズと同じ劉慈欣。出版の時系列としては、原著は劉慈欣が三体を執筆する直前に出版されていて、三体の人気があって日本語訳が最近になって出版された。原著のタイトルは「球状閃電」であり、

2025年の秋

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

2025の夏

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