はじめに
Google Cloud の無料枠をフル活用して、
「最新ゲーム情報 → 記事生成 → Blogger に自動投稿」
という流れを完全自動化する仕組みを作りました。
やりたかったことはシンプルで、
- 最新ゲーム情報を自動で集めて
- GeminiにSEO記事を書かせて
- そのままBloggerに投稿してほしい
というやつです。
Gemini 2.5 Flash(AI Studio)とCustom Search APIを組み合わせると、「意外と無料枠でできちゃう」という感じでした。
システム全体のざっくり概要
-
Node.js + Express の API サーバを Cloud Run にデプロイ
-
Google Custom Search API → 最新ゲーム情報を検索
-
Gemini 2.5 Flash → SEO 記事(タイトル/説明/本文/タグ)を自動生成
-
Blogger API → そのままブログ投稿
[Cloud Run/Functions] → [Custom Search API] → [Gemini] → [Blogger 自動投稿]
というような流れです。
Google Cloud と AWS の料金ざっくり比較
※ 個人開発で使う前提の比較です。
| サービス | Google Cloud | AWS(参考) |
|---|---|---|
| AIモデル | Gemini 2.5 Flash:無料枠あり(ただし上限は要確認) | Bedrock Claude/Nova:無料枠なし |
| サーバ実行 | Cloud Functions:200万リクエスト/月 無料 | Lambda:100万リクエスト/月 |
| 検索API | Custom Search API:1日100回無料 → 超過は $5/1000件 | なし |
無料枠の広さだけで見ると Google Cloud はかなり良い感じ。
ただし、Custom Search APIはすぐに100回を超えてしまう場合があるので、テストしすぎると課金になるのは注意ポイントです。
実装
① クエリの受け取り
デフォルトは「最新ゲーム 発売情報」。
const query = req.body.query || req.query.query || "最新ゲーム 発売情報";
② Custom Search API で情報収集
const searchRes = await axios.get(
"https://www.googleapis.com/customsearch/v1",
{ params: { q: query, cx, key: apiKey, num: 3 } }
);
結果を整えて Gemini のプロンプトに渡します。
例(実際の検索ログ):
- 全機種の2025年7月の全ジャンルの全テーマのダウンロード版/Z指定 ... https://www.famitsu.com/schedule/all-platforms/202507/all-genres/all-themes/download-ceroz/none
- 発売スケジュール|任天堂 https://www.nintendo.com/jp/schedule/index.html
- ゲームソフト 発売日一覧 - 価格.com https://kakaku.com/game/release/
③ Gemini 2.5 Flash で記事生成
プロンプト:
const model = genAI.getGenerativeModel({ model: "gemini-2.5-flash" });
const result = await model.generateContent(prompt);
const prompt = `
以下はWeb検索で得られた最新のゲーム情報です。このデータをもとに、SEOに強いブログ記事のトピック候補を3つ、次の条件に従って生成してください。
【絶対ルール】
- 各トピックは以下の4つのフィールドを含むこと:
・title(検索ユーザーが興味を持ちクリックしたくなる具体的かつ魅力的なタイトル)
・description(200文字以上、キーワードを自然に盛り込みつつ、内容が詳しく伝わる文章)
・content(ブログ記事の本文として使える具体的かつ詳しい説明文。アフィリエイトリンクを差し込むイメージでセールスポイントや魅力を盛り込む)
・tags(検索ボリュームが高い人気タグを3つ。例:「最新ゲーム」「新作RPG」「発売日」など)
【SEOポイント】
- タイトル、説明文、本文には「最新ゲーム」「2024年」「2025年」「新作ゲーム」「発売日」などのキーワードを自然に入れること
- 読者が「何が面白いのか」「いつ発売されるのか」「どんな特徴があるのか」がわかる具体的な内容にすること
- 日本のゲームファンをターゲットに、分かりやすく魅力的で購買意欲を刺激する表現にすること
【形式】
[
{
"title": "2025年最新RPG発売日と注目ポイント解説",
"description": "2025年発売予定の、RPGファン必見の新作ゲームとして注目されています。",
"content": "2025年に発売予定の最新RPGでです。",
"tags": ["最新ゲーム", "新作RPG", "発売日"]
},
]
【データ】
${searchSummary}
`;
書かせる要素:
-
title
-
description(200文字以上)
-
content(本文)
-
tags(3つ)
SEO キーワードもほどよく入れてもらうようにしてます。
④ Blogger に投稿
投稿用 HTML を軽く整形して…
const content = `
<h2>${firstTopic.title}</h2>
<p>${firstTopic.description}</p>
<div>${firstTopic.content}</div>
<ul>
${firstTopic.tags.map(tag => `<li>#${tag}</li>`).join('')}
</ul>
`;
Bloggerの構造に合わせて、見出し・本文・タグを整形。
const bloggerRes = await axios.post(
`https://www.googleapis.com/blogger/v3/blogs/${blogId}/posts/`,
{
kind: "blogger#post",
title,
content,
},
{
headers: {
Authorization: `Bearer ${accessToken}`,
"Content-Type": "application/json",
},
}
);
あとは Blogger APIでブログを投稿します。
await axios.post(
`https://www.googleapis.com/blogger/v3/blogs/${blogId}/posts/`,
{ title, content },
{ headers: { Authorization: `Bearer ${accessToken}` } }
);
リフレッシュトークンを使ってアクセストークンを更新していく構成です。
今後やりたい改善
-
Gemini の文章が単調なので システムプロンプトを強化したい
-
Custom Search の URL 先の HTML を要約して精度を上げたい
-
スケジュール実行 & 定期投稿にしたい
-
記事の構成テンプレートを追加したい(SEO的に強くなる)
ここをやれば「完成度の高いブログ」に近づきそうです。
まとめ
Google Cloud の無料枠 × Gemini × 検索 API で、
ゲームブログの自動生成〜投稿まで全部できるシステムを作りました。
-
個人開発でも 月$0〜5 で運用可能
-
学習コストも低く、AWSより気軽
-
ただし Custom Search APIは使いすぎると課金注意
実際に生成した記事はこちら:
→ https://testblog88898.blogspot.com/2025/07/2025rpg_81.html
まだプロンプトの改善余地はありますが、仕組み全体はうまく動いたので満足です。
まだまだ改善していきます。