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

『スタッフエンジニアの道』Tanya Reilly 著

『スタッフエンジニアへの道』を読んだ。 スタッフエンジニアの道キャリアアップを目指すシニアソフトウェアエンジニアには、2つの異なる道があります。一つは、管理職への道。マネジメントスキルを磨き、チームや組織を導く道です。この道については、多くの研究がなされ、スキルを向上させるための書籍も数多く存在します。もう一つは、技術専門職の道。エンジニアリングのスキルを極め、専門性を深めていく道です。近年、技術専門職のキャリアパスを用意する企業は増えてきているものの、まだ明確な指針が確立されているとは言えません。 本書は、技術専門職としてのキャリア成長に必要な考え方やスキルを詳細に解説します。上級技術専門職に求められる役割、大局的な視点を持って自らの仕事に取り組む方法、大規模プロジェクトを成功に導く手法、自身の専門性を深めながらチームメンバーの成長を支援する方法を学びます。 技術専門職としてのキャリアを目指すエンジニア必携の一冊です。O'Reilly logoTanya Reilly 著、島田 浩二 訳 似たような本で『スタッフエンジニア - マネジメントを超えるリーダーシップ』と『エンジニアの

『ヒルビリー・エレジー』、『教養としての金利』、『正しい家計管理』

いくつか本を読んだので感想を書いておく。 ヒルビリー・エレジー(J・D・ヴァンス著) Amazon.co.jp: ヒルビリー・エレジー~アメリカの繁栄から取り残された白人たち~ (光文社未来ライブラリー) eBook : J・D・ヴァンス, 関根 光宏, 山田 文: KindleストアAmazon.co.jp: ヒルビリー・エレジー~アメリカの繁栄から取り残された白人たち~ (光文社未来ライブラリー) eBook : J・D・ヴァンス, 関根 光宏, 山田 文: Kindleストアフォロー J・D・ヴァンスというアメリカ人が自分の生い立ちについて語った回想記。彼の故郷がアメリカの「ラストベルト」だったことが話題となり「アメリカの実情をかたる本」としてベストセラーとなった。その後は彼は上院議員になり、今やアメリカ合衆国の副大統領となった。 彼は高校を卒業し海兵隊に行き、州立大学を卒業後にイェール大学のロースクールを修了している。その後、

小学生の子供に Apple Watch を持たせて感じたこと

小学生の子供との連絡用にセルラー Apple Watch を持たせた話シリーズ。持たせるようにしてから3ヶ月ちょっと経つので感じたことを書いておく。 過去記事は👇からどうぞ。 小学生の子供に Apple Watch を持たせた小学生の子供との連絡用に Apple Watch SE2 持たせるようにしました、という話。 みまもり GPS 小学校に入学してからみまもりのために GPS を持たせていた。使っていたのはみてねのみまもりサービス。月額500円くらい。 【公式】みてねみまもりGPS-CMで話題!子どもを見守るGPS2023年新規利用者数No.1。みてねの子供向けGPS端末。長持ちバッテリー搭載で最大2ヶ月充電不要。最高水準の位置情報精度で登下校の移動履歴、出発到着の通知をスマホで簡単に見守り。簡単操作のお知らせボタン付き(第3世代)で緊急時も安心安全。未就学児から小学生の子供まで持ち運びしやすい小型で精度の高いGPSトラッカー「みてねみまもりGPS」家族アルバム みてね これはなかなか使い勝手がよくてアプリの出来や位置の精度含めて不満はなかった。ただ、子供が高学年にさしかかって

Apple Watch で au ウォッチナンバープランを契約する

小学生の子供に Apple Watch を持たせた小学生の子供との連絡用に Apple Watch SE2 持たせるようにしました、という話。 みまもり GPS 小学校に入学してからみまもりのために GPS を持たせていた。使っていたのはみてねのみまもりサービス。月額500円くらい。 【公式】みてねみまもりGPS-CMで話題!子どもを見守るGPS2023年新規利用者数No.1。みてねの子供向けGPS端末。長持ちバッテリー搭載で最大2ヶ月充電不要。最高水準の位置情報精度で登下校の移動履歴、出発到着の通知をスマホで簡単に見守り。簡単操作のお知らせボタン付き(第3世代)で緊急時も安心安全。未就学児から小学生の子供まで持ち運びしやすい小型で精度の高いGPSトラッカー「みてねみまもりGPS」家族アルバム みてね これはなかなか使い勝手がよくてアプリの出来や位置の精度含めて不満はなかった。ただ、子供が高学年にさしかかってきて習い事や塾、友達と遊びに行くという機会が増えてきたので、通話したりメッセージをやりとりしたくなってきた。というわけで、うちもそろそろスマホかケータイか何か持たせた方がいいかなと