<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ananke on Keyuki Blog</title>
    <link>https://blog.keyuki.net/tags/ananke/</link>
    <description>Recent content in Ananke on Keyuki Blog</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Wed, 06 May 2026 19:00:00 +0900</lastBuildDate>
    <atom:link href="https://blog.keyuki.net/tags/ananke/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Xのリンクカードに画像が出ない原因を調べたら、featured_imageだけでは足りなかった</title>
      <link>https://blog.keyuki.net/posts/x-card-og-image-hugo-ananke/</link>
      <pubDate>Wed, 06 May 2026 19:00:00 +0900</pubDate>
      <guid>https://blog.keyuki.net/posts/x-card-og-image-hugo-ananke/</guid>
      <description>&lt;p&gt;こんなブログでも流入数を多少は増やしていきたいなという、気持ちで、試しに記事をXに投稿したとき、リンクカードに画像が出ませんでした。&lt;/p&gt;&#xA;&lt;p&gt;リンクカードというのは、XにURLを貼ったときに自動で表示される、タイトルと画像がセットになったあのプレビューのことです。ちゃんと出ると見栄えがいいし、クリックされやすくなる気がして、できれば表示させたいやつです。&lt;/p&gt;&#xA;&lt;p&gt;記事ページ自体を開くとアイキャッチ画像はちゃんと表示されていました。なのにXのカードには画像がない。「またX側の気まぐれか？」とも思ったのですが、せっかくなので原因をちゃんと調べることにしました。&lt;/p&gt;&#xA;&lt;h2 id=&#34;まずhtmlのソースを確認しました&#34;&gt;まずHTMLのソースを確認しました&lt;/h2&gt;&#xA;&lt;p&gt;Webページの裏側にはHTMLというファイルがあって、その中に「この記事のSNSカード用画像はこれです」という情報を埋め込む仕組みがあります。&lt;code&gt;og:image&lt;/code&gt; や &lt;code&gt;twitter:image&lt;/code&gt; といった「メタタグ」と呼ばれる記述がそれにあたります。&lt;/p&gt;&#xA;&lt;p&gt;まずそのメタタグが正しく出力されているかを確認しました。Hugo（このブログで使っている静的サイトジェネレーター）でサイトを一時的にビルドして、出力されたHTMLを調べました。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;hugo --destination /private/tmp/keyuki-og-check --environment production&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rg -n &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;og:image|twitter:image|twitter:card&amp;#34;&lt;/span&gt; /private/tmp/keyuki-og-check/posts&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;結果を見て、最初は「あ、タグ自体は出てる」と思いました。必要なメタタグは全部ありました。&lt;/p&gt;&#xA;&lt;p&gt;ところがよく見ると、どの記事もまったく同じURLを指していました。&lt;/p&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;meta property=&amp;#34;og:image&amp;#34; content=&amp;#34;https://blog.keyuki.net/images/default-og.jpg&amp;#34; /&amp;gt;&#xA;&amp;lt;meta name=&amp;#34;twitter:image&amp;#34; content=&amp;#34;https://blog.keyuki.net/images/default-og.jpg&amp;#34; /&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;記事ごとの画像ではなく、全記事共通の &lt;code&gt;default-og.jpg&lt;/code&gt; という1枚の画像を指していました。&lt;/p&gt;&#xA;&lt;p&gt;「メタタグがない」のではなく、「メタタグはあるけど、指している画像が全部同じ共通画像だった」という状態でした。&lt;/p&gt;&#xA;&lt;h2 id=&#34;原因は-featured_image-と-images-の役割の違い&#34;&gt;原因は &lt;code&gt;featured_image&lt;/code&gt; と &lt;code&gt;images&lt;/code&gt; の役割の違い&lt;/h2&gt;&#xA;&lt;p&gt;このブログはHugo + Anankeというテーマで動いています。記事を書くとき、ファイルの先頭に設定を書く欄（「フロントマター」と呼びます）があって、そこにアイキャッチ画像のURLを指定していました。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;featured_image&lt;/span&gt;: &lt;span style=&#34;color:#ae81ff&#34;&gt;https://images.keyuki.net/uploads/2026/05/example-eyecatch.png&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;これで記事ページにはちゃんと画像が表示されます。ところがXのリンクカードはここを見ていませんでした。&lt;/p&gt;&#xA;&lt;p&gt;Hugoには &lt;code&gt;featured_image&lt;/code&gt; とは別に、SNSカード用のメタタグを生成するための &lt;code&gt;images&lt;/code&gt; という設定項目があります。HugoのOGP（Open Graph Protocolの略で、SNSにURLを貼ったときの見え方を制御する仕組みです）は、&lt;code&gt;featured_image&lt;/code&gt; ではなく &lt;code&gt;images&lt;/code&gt; を参照して動きます。&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;featured_image&lt;/code&gt; → 記事ページ上のアイキャッチ表示に使われる（Anankeテーマ固有の機能）&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;images&lt;/code&gt; → SNSカード用メタタグの生成に使われる（Hugo本体の機能）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;code&gt;images&lt;/code&gt; を設定していなければ、Hugoはサイト全体のデフォルト画像（&lt;code&gt;default-og.jpg&lt;/code&gt;）で埋めます。今回まさにその状態でした。&lt;/p&gt;&#xA;&lt;h2 id=&#34;画像サイズにも落とし穴がありました&#34;&gt;画像サイズにも落とし穴がありました&lt;/h2&gt;&#xA;&lt;p&gt;共通の &lt;code&gt;default-og.jpg&lt;/code&gt; を確認してみたら、解像度が &lt;code&gt;7200x4800&lt;/code&gt;、ファイルサイズが約7.6MBもありました。&lt;/p&gt;&#xA;&lt;p&gt;Xのリンクカードには画像のサイズ制限があります。大きすぎる画像はカードに表示されません。共通画像はその条件を超えていたため、仮にフォールバックとして読み込まれていたとしても表示されなかった可能性が高いです。&lt;/p&gt;&#xA;&lt;p&gt;SNSカード用の画像は &lt;code&gt;1200x630&lt;/code&gt;（横1200px × 縦630px）のJPEGで、ファイルサイズは数百KB以内に抑えるのが安全とされています。&lt;/p&gt;&#xA;&lt;h2 id=&#34;修正した内容&#34;&gt;修正した内容&lt;/h2&gt;&#xA;&lt;h3 id=&#34;各記事のフロントマターに-images-を追加しました&#34;&gt;各記事のフロントマターに &lt;code&gt;images&lt;/code&gt; を追加しました&lt;/h3&gt;&#xA;&lt;p&gt;公開済みの記事のフロントマター（ファイル先頭の設定欄）に &lt;code&gt;images&lt;/code&gt; を追加しました。SNSカード用の画像はアイキャッチとは別に、1200x630で作り直したものを使っています。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
