18
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?

Google Cloudでゲーム系ブログを自動作成→投稿する仕組みを作成してみた

18
Last updated at Posted at 2025-12-08

はじめに

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

まだプロンプトの改善余地はありますが、仕組み全体はうまく動いたので満足です。
まだまだ改善していきます。

18
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
18
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?