1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【個人開発】毎朝9時に「AIバリスタ」がLLMO対策ばっちりのnoteを投稿するシステムを作った話 (LLMO-Writer)

1
Posted at

はじめに

こんにちは、札幌のスペシャルティコーヒー店「Salvador Coffee」の店主です。

今回は、「AI検索エンジン(Perplexity AI, SearchGPT等)に好かれる記事」、すなわち LLMO(Large Language Model Optimization) を意識したnote記事を、完全自動で生成・投稿するシステム「LLMO-Writer」を開発したので、その技術的な裏側を公開します。

今回の成果物はこちら:地球温暖化とコーヒーの未来。今飲むべき品種とは?|おしば (note.com)


現在私は、自社のコーヒービジネスの広報を担うAIエージェント「AIサルバさん」を使って、どうユーザーの新規流入を生み出すか?に取り組んでいます。

今回はバックエンド機能を強化し、**「コーヒー業界トレンド収集 → 記事構成 → 執筆 → 配信」**までを自律的に行うシステムを開発してみました。

本記事は、その中核となる**「トレンド検知モジュール(The Sensors)」**の開発過程をまとめたログです。Gemini(AI)と壁打ちしながら、NoCodeツール(Make.com)の構想から、Pythonによる堅牢なバックエンド実装へとシフトしていく過程を共有します。

1. 開発のきっかけとGeminiへの依頼

開発の出発点は、ShopifyとGoogleが発表したUCP(Universal Commerce Protocol)に脅威を抱いたことでした。

現在私はShopifyユーザーではなく、年商に関してもShopifyを使うほどの規模感ではありません。このままでは大手に食われてしまう可能性が高い。 そう感じました。

そんな中、Deep Researchで見つけた「Make.comを使った自律型コンテンツ生成」のアイデアは強烈でした。

UCPを使わなくても、オウンドメディアで対抗できるかもしれない。

そんな希望を持てる内容でした。

私は、以下のような4つのモジュールで構成された全体設計図(アーキテクチャ)を作成し、Geminiに対して**「1. トレンド検知モジュール(The Sensors)を、AIサルバさんのバックエンドに具体的にどう実装すればいいか?」**と相談を持ちかけました。

  • 想定していたアーキテクチャ:

    1. Sensors: RSSやPythonスクレイピングによる最新トレンド情報の収集

    2. Brain: Gemini による記事執筆

    3. Artist: Imagen 3による画像生成

    4. Hands: Noteへの自動投稿

私の要望は、単にトレンドを拾うだけでなく、「コーヒー業界の特定インフルエンサーの情報」「世の中の一般トレンド(経済・ITなど)」 を掛け合わせ、AIならではの「頓知(とんち)」を効かせた記事を書かせることでした。

2. Geminiからの提案と技術的な壁

Geminiとのディスカッションの中で、いくつかの技術的な課題と解決策が浮き彫りになりました。

  • NoCode vs Code: Make.comではなく、コスト制御と拡張性の観点からPythonでのスクラッチ開発を推奨されました。

  • SNS情報の取得: 当初検討していたXのAPIは高額で、さらにThreads APIは、現状「検索機能」が公開されていないためトレンド検知にはそれぞれ不向きであることが判明。

  • YouTubeの解析: 動画の中身を知るために、動画を見るのではなく**「字幕データ(Transcript)」**を取得して要約する手法が提案されました。

  • 情報の掛け合わせ: 「物価高」×「コーヒー」のように、トレンドと言い分を結びつけるロジックは、収集側ではなく執筆側(Gemini)のプロンプトで解決する設計になりました。

3. 最終的に決定した「マイクロサービス構成」

議論の末、システム全体を巨大なモノリスにするのではなく、**「情報収集エージェント(Module A)」「執筆実行エンジン(Module B)」**に分離するアーキテクチャを採用しました。

  • Module A (Trend Hunter / Python):

    • 役割: 毎日定時に稼働し、RSS・YouTube字幕・検索トレンドを収集。

    • SNS対策: 高価なX APIの代わりに、Google検索コマンド(site:twitter.com)を用いた検索ハック(Serper/Tavily経由)で、擬似的にSNSの声を拾う手法を採用。

    • 出力: 今日のネタをまとめた daily_briefing.json を生成し、Module BへWebhook送信。

  • Module B (AI Salva / Next.js):

    • 役割: 受信したJSONを元に、AIサルバさんとして稼働している専属Geminiが外部APIで接続し、「頓知」を効かせた執筆を実行。毎朝私が内容チェックを行い、Noteへ投稿。

本記事では、これらのModule実装について解説していきます。

改めて、プロジェクト概要。

目的

  • 日々のトレンド(世の中の動き)とコーヒー業界の最新情報を掛け合わせ、毎日新鮮な記事を発信したい。

  • しかし、毎日執筆するのはリソース的に厳しい。

  • 「よくあるただの量産型クソAI記事」ではなく、プロのバリスタとしての権威性(E-E-A-T)を担保したい。

コンセプト: LLMO-Writer

そしてこれは、通常のSEO対策記事ではなく、**「AIが情報を引用しやすい構造」**を徹底した記事生成エンジンです。

システムアーキテクチャ

システムは大きく2つのモジュールと、ポンコツなモジュール1つ、そしてそれを統括する自動化基盤で構成されています。

1. Module A: Trend Agent (収集部)

「ネタ」を集めるエージェントです。単なるニュースサイトのスクレイピングだけでなく、**「濃い情報」**を取得することに特化しています。

  • YouTube API: 特定のコーヒー系YouTuberの字幕データを取得・要約。

  • RSS/Scraper: 業界の著名人のブログから最新の言説を収集。

  • Google Trends: 世の中の「今」の関心事を収集。

これらを json 形式で毎朝保存します。

2. Module B: The Writer (執筆部)

ここが本システムの心臓部です。収集したデータを元に、AI Salva Chat (LLM) を使用して記事を執筆します。

工夫した点はプロンプトエンジニアリングです。

LLMO記述ルール(システムプロンプトより抜粋)

ルール1: エンティティの明確化 (Entity Density)

曖昧な表現を避け、固有名詞を多用すること。

❌ 「フルーティーな酸味」

✅ 「青リンゴのような酒石酸由来の酸味」

ルール2: 構造化データ

AIが学習しやすいよう、Markdownの比較表を必ず含めること。見出しの直後に「結論」を配置すること。

このルールにより、AI検索エンジンが「この記事は具体的で信頼できる」と判断しやすい構造を作り出しています。

3. Module C(仮): Art Director (画像生成部)

記事の内容を解析し、その文脈に合った「映える」ヘッダー画像を自動生成します。

  • Model: Google Gemini 2.5 Flash (プロンプト生成) → Imagen 4.0 (画像生成)

  • Prompt Strategy: 単に「コーヒーの画像」と指示するのではなく、「Kinfolk路線のミニマルなスタイル」「Hasselbladで撮影したような8k解像度」「被写界深度f/1.8」「Salvador Coffeeのブランドカラー(アースカラー)」といった写真家・アートディレクターレベルの指示を自動生成させています。

  • Fallback: 万が一APIが応答しない場合でも、ブランドの世界観を崩さない高品質な静的プロンプトへ自動で切り替わります。

  • しかしながら、こいつはうまく稼働していないので、朝の投稿チェックの時にgeminiに手動で投げることになりました。ま、なんでも自動化していいことなんてないですよ。手触り感大事。

4. Automation (自動化)

GitHub Actions を使用し、JST 9:00(UTC 0:00)に毎日自動実行しています。

生成された記事と画像はリポジトリに自動コミットされ、あとは人間が git pull してnoteにコピペするだけ(将来的にはnote APIで全自動化予定)。

今朝はなぜか動いてなかったけど。。。w

技術スタック

  • Language: Python 3.9

  • LLM API: AI Salva Chat API, Google GenAI SDK (Gemini/Imagen)

  • Data Source: YouTube Data API v3, Feedparser, BeautifulSoup4

  • CI/CD: GitHub Actions

  • Version Control: Git

実際の成果と評価

このシステムが生成した記事がこちらです。

リンク: 地球温暖化とコーヒーの未来。今飲むべき品種とは?

AIによる記事の客観的評価

  1. 情報の密度: 「パライネマ」「サルチモール」「マドリッド家」といった具体的な固有名詞(エンティティ)が適切に配置されており、バリスタとしての専門性が表現できています。

  2. 構造: 「結論→解説→比較表」という流れが守られており、読み手(人間・AI双方)にとってストレスがありません。

  3. 具体的なレシピ: 「湯温90℃」「Comandante C40で24クリック」といった具体的な数値データが含まれており、実用性が高いです。

  4. 画像: 記事のトーンにマッチした画像が生成されています。

課題と展望

現状は画像生成やnoteへの投稿は手動ですが、今後はSelenium等を用いた完全自動投稿や、X(旧Twitter)への要約投稿機能も実装できればいいなあと思います。いつでもPCの前にいるわけじゃないし。

AIネイティブとして、私たちは「AIに使われる」のではなく、「AIに自分たちの専門性を正しく認識させる」ためのツールとして、LLMO-Writerを育てていきたいと思います。

この積み重ねが、生成AIからの顧客流入のソースとして重要性を持つ一次情報になっていくことを信じて、実験的にコンテンツ作成していきたいと思います!

🚀 お決まりですが、、、

今回の実装が、どの程度のインプレッションを生むのか?
もっと色々マーケティングとしてやれることはないのか?

運用しながら、答えを見つけていければなと思います。

特に今はShopifyのUCPはゲームチェンジャーとなる爆弾です。自社ECとAIの横連携を実装していくことは、我々事業者にとって必須事項となっていくでしょう。

さて、、、

現在わたしは札幌でコーヒーショップを8年ほど経営しています。

趣味でAIコーディングによる個人開発を行っていますが、今後はどこかで実務経験を積んでフリーランスエンジニアとして、兼業ではありますが活躍したいと考えています。

店を持っているため、未経験SESとしてフルコミットで現場に入ることができず、「実務経験」というニワトリタマゴな問題に、ぶち当たっているところです。

現在のステータス: 独学でPython/TypeScript/React/Pixi.jsなど開発中。
探している環境:
モダンな技術スタック(TypeScript/React/Next.js/Goなど)に触れられる
未経験者のAIコーディング活用に理解がある
兼業・副業からでも実務経験を積める

もし、「一緒に働いてみないか?」と興味を持っていただける企業様やチームがいらっしゃれば、ぜひお声がけいただけると嬉しいです!

ここまで読んでいただきありがとうございました!

記事にいいねをいただけると励みになります!☕️

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?