2026.02.02

[AIブログライター] 第2回:n8n×Multi-Agents×AirtableでMagic Formula記事の質を向上させる

こんにちは。AI研究開発室のK.S.です。

お久しぶりです。

ブログを書くのは手間がかかりませんか? ネタがあっても、情報収集、要約、図の作成、フォーマット調整などの作業が待っています。特に外国人の私は日本語チェックも必須です(脳内の赤ペンが忙しい)。AI時代だからこそ、精度を保ちつつ効率化できる領域は広がっているはずです。

ということで、今回は「金融特化のAIブログライターを作ってみた」という開発プロセスを、技術進化のステップとして連載でお届けします。最終的には、人間の判断(Human-in-the-Loop)とAIによる自動化がうまく協調できる仕組みを作ることが、個人的な目標です。

この連載では、金融特化のAIブログライターを段階的に作っていきます。

第2回は「マルチエージェント + Airtable」で、品質を落とさずに作業時間を短縮する回です。

AIブログライター・シリーズのご紹介

本シリーズでは、AI Agents・自動化技術を活用した金融分野のブログ記事生成プロセスを、ステップごとに実践的に紹介しています。

この記事でやること

  • AI agentsで、調査・要約・編集を分担する
  • トピックのキーワードをAirtableで管理する
  • AIが書いたブログは手を入れずにそのまま共有、画像のURLだけ修正
  • (AI経由で)Magic Formulaでの銘柄選定を紹介

最小構成の考え方

第1回では「まずは動かすこと」を最優先にしましたが、今回は「役割分担による迷いとミスの削減」に重点を置きます。
AI一人に全てを任せると、人間と同様にミスが起きたり、文章がぶれたりすることがあります。
役割を分担することで、それぞれの視点から内容をチェックできるため、各工程の精度が上がり、修正も容易になると期待します。

ワークフロー

  1. Airtableからトピックを取得
  2. Research Agentが調査
  3. Writerが要約
  4. Editor Agentが文章化
  5. 下書きを保存して通知

使う技術

  • n8n:ノーコード自動化ツール。AIや外部サービスをつなぎ、ワークフロー(自動処理の流れ)を直感的に構築・実行
  • Multi-Agents:調査・要約・編集の分担
  • Airtable:クラウド型のデータベースサービス。ブログの「ネタ」やキーワードなどをスプレッドシート感覚で管理でき、API連携も容易。各AIエージェントと情報を共有するハブとして活用。

技術の紹介と実践

n8n Multi-Agentsワークフロー

Multi-Agentsとは

自律的に思考・行動するAIエージェントを複数組み合わせ、情報共有や協調を通じて複雑なタスクを効率的に解決する仕組みです。
1つのAIエージェントに全部やらせず、役割を分担させます。今回は「調査」「要約」「編集」の3役に分けます。

役割の分担例

  • Research:トピックの概念や背景を調査・整理
  • Writer:要点を短く抽出し、ブログ記事のドラフトを生成
  • Editor:読者向けに整える

Multi-Agentsワークフロー

n8nで作成したMulti-Agentsワークフローの全体像は下記です。

  1. When chat message received:ユーザーがチャットで質問・指示を送るとトリガーされる開始点。
  2. keywords(search: record):Airtableのデータベースから、関連キーワードや過去データを取得。
  3. Aggregate:取得キーワードを集約・整形して、調査エージェントに渡す。
  4. FinTech Research Agent:金融分野の調査専用エージェント。ここはOpenAI Chat Model(gpt-5-nano)を利用し、Simple Memoryで過去の文脈や調査内容を記憶。ここで「調査内容の骨子」が作られる。
  5. Blog Writer(Message Model):調査結果をもとに、ブログ記事のドラフトを生成。ここでは単純なメッセージモデルを利用。
  6. Image Agent:記事に使う画像を扱うエージェント。 Google Gemini Chat Model(gemini-3-pro-image-preview)を使用(画像理解・生成が得意)。
  7. image_to_text:画像をテキスト化。
  8. Editor Agent:記事全体を編集・校正・構造整理。OpenAI Chat Model(gpt-5-nano)を利用し、読みやすさ・一貫性・HTML向け整形を行う。
  9. Return HTML file:最終成果物として、HTML形式の記事ファイルを出力。

Airtableの使い方

Airtableはスプレッドシートのような使いやすさとデータベースの機能をあわせ持つクラウドサービスです。初心者でも直感的にデータの追加・編集ができ、API連携も簡単です。詳しくは公式サイト Airtableも参考になります。
今回は「ネタ(トピック)のキーワード」をAirtableで管理します。
シンプルなテーブル構成にして、更新負荷を下げます。

Airtableの設定

n8nでAirtableを使うためには、AirtableのAPIキーを取得する必要があります。APIキーの取得方法は、Airtable APIキーの取得方法を参照してください。
また、アクセスがスムーズになるよう、Personal access tokensのScopeは、下記のように設定します。

最後に、AirtableのAPIキーを取得したら、n8nの設定に追加します。 n8nのCreate Credentialsから、Airtableを選択して、Access Tokenを入力します。

テーブル例

Airtableのテーブル例は下記のようになります。簡単にキーワードを追加・編集できます。Google Spreadsheetのように使えます。

Prompt例(分担のイメージ)

各エージェントのPromptは下記のようになります。大体やりたいことを書いて細かいところはAIに書かせました。

Research Prompt

各Promptはkeywordsテーブルのキーワードを使って作成します。

Prompt (User Message)

以下の条件で、ブログ執筆(Writer)に渡すための「調査メモ」を作成してください。

【ブログのテーマ(今回)(全てのキーワードを使って関連情報を調査)】
{{ $json.keywords.map(k => k.keywords).join(", ") }}

【対象読者】
- 高校生でも理解できる説明(専門用語は噛み砕く)
- ただし技術者が実務に役立つ具体性も入れる

【調査のゴール】
1) {{ $json.keywords.map(k => k.keywords).join(", ") }} に関係がある、直近の最新情報に絞って提示
2) ブログで使えるように以下をセットで出す
   - 何が起きたか(要約)
   - なぜ重要か
   - 現場での使い道/示唆(実務ポイント)
   - 根拠(URL、媒体名、発行日、できれば引用できる箇所の説明)

【出力フォーマット(厳守)】
# Research Brief for Writer

## A. 3行サマリー
- ...
- ...
- ...

## B. タイトルの提案
### 1) {トピック名}
- 概要(高校生にも分かる説明):
- 重要性(なぜ今これが重要?):
- 実務で使うなら(例・ユースケース):
- 根拠ソース(最低2件):
  - [媒体名] タイトル / 発行日: YYYY-MM-DD / URL: ...
  - [媒体名] タイトル / 発行日: YYYY-MM-DD / URL: ...

## C. Writer向け「記事構成案」(見出し案)
- H2: ...
  - H3: ...
- H2: ...
  - H3: ...

## D. 参考文献(リンク一覧)
- 1. 媒体名 / タイトル / 発行日 / URL / 何の根拠か(どの主張の裏付けか)
- 2. ...

【制約】
- 新しさを優先(可能なら直近6〜12か月中心)
- 数値や規制関連は特に厳密に。未確認は未確認と明記。

System message

あなたは金融研究者です。目的は、ブログ執筆(Writer)が記事を書けるように、最新の金融技術情報を収集し、根拠(参考元)を明確に添えて整理して渡すことです。

【必須ルール】
- 事実は必ず信頼できる一次情報または権威ある媒体で裏取りし、参考元(URL・媒体名・発行日)を記録すること。
- 推測や不確かな情報は「推測」「未確認」と明示し、事実のように断定しないこと。
- 可能な限り複数ソースでクロスチェックすること(特に数値・制度・発表内容)。
- 最新性を重視すること(直近の動向を優先)。古いが重要な基礎情報は「背景」として短く補足。
- 広告記事や根拠の薄いブログは主ソースにしない(補助的扱いに留める)。
- Writerに渡すため、情報は「使える形(要点・なぜ重要か・引用可能な根拠)」でまとめること。

【重視する情報領域】
- {{ $json.keywords.map(k => k.keywords).join(", ") }} とその関連キーワードの新しい知識や発見

【出力の基本方針】
- 文章は日本語。高校生にも読める平易さを意識しつつ、技術者が実務に使える具体性を入れる。
- Writerがそのままブログ構成にできるよう、見出し候補・要点・根拠リンクをセットで出す。
- 参考元は必ず最後に一覧化し、各項目に「どの主張の根拠か」を紐付ける。

Writer

Researchの調査内容(json.output)から、ブログ記事のドラフトを生成します。

User Prompt

以下のテキストを読み込んで、条件に沿ったブログ記事を書いてください。

【ブログ内容の条件】
- テーマは「{{ $('Aggregate').item.json.keywords.map(k => k.keywords).join(", ") }}」の連携
- 内容は{{ $json.output }}に参考

【記事の最後に必ず記載する文章】
グループ研究開発本部 AI研究開発室では、データサイエンティスト/機械学習エンジニアを募集しています。
ビッグデータの解析業務などAI研究開発室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。
皆さんのご応募をお待ちしています。
一緒に勉強しながら楽しく働きたい方のご応募をお待ちしております。

System Prompt

あなたはプロフェッショナルなブログライターです。

以下のルールを必ず守ってブログ記事を書いてください。

【文体・トーン】
- 技術ブログだが、堅すぎず親しみやすい
- 社内外のエンジニア・データサイエンティストを想定読者とする
- 一人称は「私」

【書き方の方針】
- 構成・トーン・文章の書き方は「わかりやすさ」を最優先とする
- 高校生が読んでも理解できるよう、専門用語は噛み砕いて説明する
- 技術者が実務で参考にできる具体性・実用性も持たせる
- なぜ便利なのか/どんな課題を解決できるのかが分かる構成にする

【構成ルール】
- 見出し(h2, h3相当)を使って読みやすく構成する
- 全体として自然で違和感のない日本語にする

【固定要件】
- 記事の冒頭は、必ず次の一文から始めること  
  「こんにちは。AI研究開発室のK.S.(女性、外国人)です。」
- 記事の最後に「最後に」という見出しを作り、指定された文章を**内容を変えずに**掲載すること
- 「募集職種一覧」は必ず以下のURLへのリンクにすること  
  https://recruit.group.gmo/engineer/jisedai/entry/

Image Agent

Image Agentがブログ記事ドラフトを使って、イラストを生成します。

User message

{{ $('FinTech Research Agent').item.json.output }}の内容をもとに、ブログ用の抜粋イラストを1枚作成してください。

System Prompt

あなたは技術ブログ向けのイラストを生成するプロフェッショナルです。
以下の方針を必ず守ってください。

- 記事内容を視覚的に分かりやすく表現する
- 初心者にも安心感を与えるトーンにする
- 実在の人物・企業ロゴは明確に描写しない
- 情報量は多くしすぎない

Image to Text

Image Agentが生成した画像をテキスト化します。

const data = $input.first().json.output[0].inlineData.data
const mimeType = $input.first().json.output[0].inlineData.mimeType
const ext = mimeType.split('/').slice(-1)[0];
const fileName = `output.${ext}`;
return [{
  json: {
    fileName,
    mimeType,
    size: Buffer.from(data, 'base64').length,
    source: 'ai-output'
  },
  binary: {
    image: {
      mimeType,
      data,
      fileName
    }
  }
}];

Editor Prompt

ドラフト記事を編集します。ここでは、ドラフト記事を読み込み、編集者として適切に評価・修正します。

Prompt (User Message)

以下は、Writerが作成したブログ記事です。
この記事を読み込み、編集者として適切に評価・修正してください。

【チェック・修正ポイント】
- 技術内容は最新になっているか
- 高校生にもわかりやすい説明になっているか
- 技術者にとっても実務で役立つ内容になっているか
- 日本語表現やフォーマットに不自然な点はないか

【対象テキスト】
{{ $('Blog Writer').item.json.message.content }}

【対象イラスト】
{{ $json.fileName }}

※ 必要な場合のみ修正してください。
※ 修正後は、完成版の記事全文を出力してください。

System message

あなたはプロフェッショナルなテクニカルエディターです。
目的は、ブログ記事の品質を最終チェックし、必要に応じて修正することです。

【役割】
- Writerが書いた記事を編集者の視点でレビューする
- 内容・構成・日本語表現・技術的正確性を総合的に確認する
- 品質を上げるための修正は行うが、文体や筆者の人格は極力維持する

【必ず確認する観点】
1. 技術内容は最新か(古い情報・誤解を招く表現がないか)
2. 高校生でも理解できるわかりやすさがあるか
3. 技術者にとって実務的に有用な具体性があるか
4. 日本語として自然か(不自然な直訳調・冗長表現・誤字脱字)
5. 見出し構成・段落・箇条書きなどのフォーマットが読みやすいか
6. 「{{ $('Aggregate').item.json.keywords.map(k => k.keywords).join(", ") }}」は必ず含めている

【編集方針】
- 事実誤認や古い技術情報は修正する
- 表現が難しすぎる場合は、意味を変えずに噛み砕く
- 明らかな誤りがない場合は、過度に書き換えない
- 推測や断定が強すぎる表現は、必要に応じてトーンを調整する

【出力ルール】
- 最終的に「修正後の記事全文」を出力すること
- イラストは挨拶の後に入れておく。画像サイズはwidth="500"とする
- 大きな修正を行った場合のみ、最後に簡単な修正ポイントを箇条書きで補足する
- HTML formatに修正し、HTMLファイルを出力する

Return HTML to file

Editor Agentがドラフト記事をHTML形式で出力します。

const html = $input.first().json.output
if (!html) {
  throw new Error('No HTML content found');
}
return [{
  json: {
    html,                 // keep HTML as JSON
    title: 'My blog',     // any metadata you want
    createdAt: new Date().toISOString()
  },
  binary: {
    file: {
      data: Buffer.from(html, 'utf8').toString('base64'),
      mimeType: 'text/html',
      fileName: 'blog.html'
    }
  }
}];

これでワークフローが完成しました。

テスト

Airtableのkeywordsテーブルに「Magic Formula」を登録して実行し、Chatにstartを指示するだけで、ブログ記事が生成されます。

生成結果は下記のようになります。

AIブログライターの記事

================ START ===========

こんにちは。この記事は、株式投資における銘柄選定のひとつとして知られる「Magic Formula(マジック・フォーミュラ)」を、初心者にも分かりやすく解説します。実務で使える手順と注意点を、難解な用語を避けて丁寧にまとめました。


Magic Formulaとは何か

Magic Formulaは、米国の投資家ジョエル・グリーンブラットが提唱した銘柄選定の手法です。2つの指標を組み合わせて「安くて質の高い企業」を探すことを目的とします。具体的には次の2つの指標を用います。

  • 株式の「獲得益回り」(Earnings Yield):EBIT(税引前・利払い前利益)÷ Enterprise Value(企業価値)
  • 資本の効率性を示す「ROIC」(Return on Invested Capital):EBIT ÷ Invested Capital

この2つの指標を企業ごとに評価し、それぞれの順位をつけて合算した総合順位の上位銘柄を選ぶのが基本的な考え方です。直感的には「高い(利益の大きい)利益率と高い資本効率を両立している銘柄ほど魅力的」という発想です。

計算方法と実践手順

  1. データの準備
    • EBIT(税引前・利払い前利益)
    • Enterprise Value(EV:企業価値)=時価総額 + 有利子負債 − 現金及び現金同等物
    • Invested Capital(投資資本)=総資本 − 現金及び現金同等物(実務では「総資産 − 非利息資産」等の近似を用いることが多い)
  2. 指標の計算
    • Earnings Yield = EBIT ÷ EV
    • ROIC = EBIT ÷ Invested Capital
  3. 銘柄の評価と順位付け
    • 各銘柄について「Earnings Yieldの高い順」「ROICの高い順」に順位を付ける
    • 2つの順位を足し合わせ、総合順位を作成する(低い総合順位ほど評価が高い)
  4. 銘柄の選定と運用
    • 総合順位の上位銘柄を一定期間(例:半年~1年)保有し、定期的に見直す
    • 取引コスト・税金・分散投資を考慮してポートフォリオを組む

最新動向と実務上の注意点

Magic Formulaは1990年代後半~2000年代前半のバックデータで良好な成績が報告されてきましたが、現在の市場環境では結果が一様に優れるとは限りません。ポイントをまとめます。

  • 過去の実績は参考にはなるが、未来を保証するものではない。特に景気後退期やモメンタム重視の局面では相性が悪くなることがある。
  • データ品質が結果を大きく左右する。EBITやEVの定義、投資資本の計算方法が異なるとランキングが変わるため、同じデータソース内で統一することが重要。
  • 財務健全性の観点を補完する案として、品質指標(ROA/ROE、負債比率、キャッシュフローの安定性)を併用する派生版も有効。
  • 市場の変化に対応し、定期的に見直すことが大事。例えば、近年はキャッシュフロー志向や配当の安定性を重視する投資家が増えています。

実務での活用のコツ

  • データソースの整合性を確保する
    • EBIT、EV、Invested Capitalは信頼できる財務データを使う。同じ定義を用い、定期的に更新する。
  • 指標の解釈をシンプルに保つ
    • 「高い earnings yield」と「高い ROIC」が揃う銘柄を優先する。過剰な複雑化は避ける。
  • リスク管理と分散
    • 1銘柄に依存しすぎず、セクター分散や市場規模の大きい銘柄を組み入れる。
    • 手数料・税金を考慮して取引回数を適切に抑える。
  • 実装のヒント(技術者向け)
    • Excel/Google Sheetsでの簡易実装: EBIT、EV、Invested Capitalの列を作成し、 Earnings Yieldと ROICを計算。RANK関数で順位付け→SUMで総合順位。
    • Python等を使う場合の骨子: データ取得→計算→順位付け→ポートフォリオ選定という流れを関数化。

よくある質問(FAQ)

  • 本当に勝てるのか?
    結論として「勝てる保証はない」。市場環境により結果は変動する。長期的な視点と分散がカギ。
  • どの銘柄を何銘柄選ぶべきか?
    運用資本や諸経費にもよるが、初心者は10~20銘柄程度を目安に、定期的にリバランスするのが現実的。
  • ROICと Earnings Yieldの指標はどう選ぶべきか?
    EPS/ROEではなく、EBITベースの指標を用いるのが本手法の趣旨。EV/EBITの組み合わせとして理解すると良い。

まとめ

Magic Formulaは「安くて質の高い銘柄」を機械的に探すシンプルな枠組みとして、実務でも取り入れやすい手法です。最新の市場環境を前提に、データ品質とリスク管理を意識しながら活用することが重要です。株式投資の銘柄選定を学ぶひとつの有効な選択肢として、Magic Formulaを自分なりにアレンジして試してみてください。
なお、本記事には「株式投資」「Magic Formula」「銘柄選定」というキーワードを含め、実務的な解説と具体的な実装のヒントを盛り込みました。

================ END ===========

感想

いかがでしょうか?

楽でもあり、下手な外国人の私が書くよりは「マシ」で、ある程度の品質は出ていると思います。

実はMagic Formulaについて、私は元の英語の本を読みました。長い小説のような本でしたが、AIがうまくポイントを絞ってくれたようです。

余談ですが、よく「本当に勝てるのか」という疑問も述べてくれました。

ここまで、ある程度Automationができてよかったのですが、よく考えたら、今の時代、バイブコーディングが当たり前に近くなってきたので、n8nを作るのにも少し手間がかかりませんか。コーディングをAIにやらせるのが普通になってきたので、n8nのワークフロー作成もAIにやらせたいですね。

ということで、次回はn8nワークフローもAIにやらせてみたいと思います。

まとめ

本記事では、AIブログライターの技術面として「自動化による高品質かつ効率的な記事生成」の実践例を紹介しました。

また、金融知識の紹介としては、AIを活用してMagic Formulaの考え方やその実践的な使い方について解説しました。自動化技術と投資手法の両方の観点から、みなさまの投資ポートフォリオの一助となれば幸いです。

最後に

グループ研究開発本部 AI研究開発室では、データサイエンティスト/機械学習エンジニアを募集しています。 ビッグデータの解析業務などAI研究開発室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。 皆さんのご応募をお待ちしています。 一緒に勉強しながら楽しく働きたい方のご応募をお待ちしています。

  • Twitter
  • Facebook
  • はてなブックマークに追加

グループ研究開発本部の最新情報をTwitterで配信中です。ぜひフォローください。

 
  • AI研究開発室
  • 大阪研究開発グループ

関連記事