AIショート動画サイト(Kurage)のアクセスログを見ていたら、奇妙なことが起きていました。1982年のトルコ映画「土の汗(Toprağın Teri)」を紹介しただけのショート動画1本が、サイト全体の動画アクセスの半分以上を占めていたのです。
この記事は、その原因分析から「偶然を仕組みに変える」自動化をローカルLLM(gemma・Ollama)で実装するまでの記録です。
何が起きたか: 実測データ
該当動画ページのアクセスを集計した結果がこれです。
- アクセス: 122件 / 2日(サイトの動画ページ全体は約120件/日)
- ユニークIP: 105、botゼロ(UA判定)
- 流入元: Google検索 98件(80%)、Yahoo検索 9件、サイト内回遊 12件
Search Consoleにはまだ出ていませんでした(GSCは集計に1〜2日遅れる)が、リファラログが検索流入を直接証明していました。
なぜ伸びたのか: 「バズった固有名詞 × 情報の空白」
流れを再構成するとこうなります。
- X(旧Twitter)で、この映画のワンシーンを貼ったポストがバズった(本文は「あっ」だけ)
- 見た人が「映画 土の汗」でGoogle検索する
- ところがこの映画は超マイナーで、日本語のWebにほぼ情報が存在しない
- 競合ゼロなので、タイトルに「土の汗」を含むうちの動画ページが即座に上位表示
重要なのは、この動画ページのSEOメタデータ(seo_title/description/keywords)が全部空だったことです。<title>にたまたま固有名詞が入っていただけで、この流入です。「バズった無名の固有名詞」は、SEOの世界で最も競争の少ないロングテールでした。
偶然を仕組みに変える: 固有名詞SEO自動化
そこで、完了した動画ジョブに対して「タイトル/要約から固有名詞を抽出し、それを軸にSEOメタデータを自動生成する」処理をローカルLLMで作りました。構成は:
- モデル: gemma 12B(Ollama、ローカルGPU) — 外部APIコストゼロ
- 入力: 動画ジョブのタイトル・要約(数百字)
- 出力: seo_title / seo_description / seo_body / seo_keywords のJSON
- 配信: 動画ページ(PHP)はジョブAPIをライブ参照しているので、ジョブJSONを更新した瞬間に公開ページへ反映
プロンプトの中核はこの2つのルールです。
- タイトル/要約に含まれる固有名詞(映画・番組・作品名、人名、ブランド名等)を特定し、
seo_title・seo_description・seo_keywordsに必ず含める。
- **ここに書かれていない事実(公開年・出演者・あらすじ・国名など)を推測で書かない。**
与えられた情報だけを言い換える。知識の追加は禁止。
2つ目が肝です。マイナーな作品ほどLLMの幻覚リスクが高い。しかし検索ランキングに効くのは「固有名詞がページに存在すること」であって、捏造された蘊蓄ではありません。だから「知識の追加は禁止、言い換えのみ」に制約します。実際「土の汗」で生成された説明文を検証したところ、書かれた内容(窓のシーン、巨大な手の描写)はすべて元ポストに実在する記述でした。
もう1つの実務ポイント: gemmaの思考型モデルをOllama APIで使う場合、"think": false を明示しないと隠れ推論トークンが num_predict を食い潰し、空応答になります(これで1回ハマりました)。
resp = requests.post(f"{OLLAMA_URL}/api/generate", json={
"model": OLLAMA_MODEL, "prompt": prompt, "stream": False,
"think": False,
"options": {"num_predict": 700, "temperature": 0.2},
})
検索者が実際に打ちそうなクエリの組み合わせもLLMに作らせます。「土の汗」の生成結果:
seo_keywords: 土の汗 / Toprağın Teri / 映画 土の汗 /
土の汗 どんな映画 / 土の汗 1982 / 土の汗 シーン
バックフィルの結果
直近40本の動画に一括適用したところ、39本が更新され、狙える固有名詞が想像以上に埋まっていました。
- 映画『白鳥とコウモリ』完成披露試写会 — 既にGSCで「白鳥とコウモリ 試写会」のクリックが付いていた(同じパターンが自然発生していた)
- Netflix『鉄槌教師』とキム・ムヨル
- DREAMS COME TRUEの新曲「BEACON」(ドラマ主題歌)
- 俳優の事務所オーディション情報
あとはsystemdタイマーで2時間ごとに新規動画へ自動適用するだけです。「バズった固有名詞の動画→数時間以内に検索の受け皿完成」が全自動になりました。
学び
- アクセスログはGSCより速い。リファラ集計だけで「検索流入か否か」は即日わかる
- ロングテールの最強形は「情報の空白」。ドメインが弱くても、日本語情報が存在しない固有名詞なら初日から上位に入れる
- ローカルLLMはこの用途に十分。1件あたり数十秒・コストゼロで、外部APIを使う理由がない
- 幻覚対策は「知識の追加禁止」が一番シンプル。SEOに必要なのは固有名詞の存在であって、LLMの知識ではない
関連リンク:
- Kurage AIショート動画
- Kurage 暗号資産AI自動取引日記(同じ思想で運用している別プロジェクト)