gemini-blog について
gemini-blogは、データに基づくブログ記事を生成するTypeScriptスキルです。自動車やCOEの統計を扱うプロジェクト向けで、分析と構造化生成を分け、結果を保存できます。
主な機能
- 01分析と生成の2段階処理
- 02Code Executionによる計算
- 03Zodによる記事構造の検証
- 04CarsとCOEのタグ定数
- 05生成記事の冪等な保存
活用シーン
- 01区切りデータから記事を作成
- 02月ごとの自動車統計の整理
- 03COE市場記事の生成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ motormetrics/ motormetrics --skill gemini-blogインストール後、Claude Code で/gemini-blogを入力して読み込まれたか確認します。
詳細
Gemini ブログ生成スキル
ブログ生成パッケージ:packages/ai/
アーキテクチャ
packages/ai/
├── src/
│ ├── generate-post.ts # 2-step generation (analysis → structured output)
│ ├── config.ts # System instructions
│ ├── schemas.ts # Zod schemas (postSchema, highlightSchema)
│ ├── tags.ts # Tag constants (CARS_TAGS, COE_TAGS)
│ ├── hero-images.ts # Hero image URLs
│ └── save-post.ts # Post persistence with idempotency
2 ステップのフロー
- ステップ 1(分析):
generateText()+ コード実行ツール + 拡張思考 → 正確な計算 - ステップ 2(生成):
generateObject()+ Zod スキーマ → 型安全な構造化出力
主な関数
// Generate and persist (returns saved-post metadata, not the raw Zod object)
import { generateBlogContent } from "@motormetrics/ai";
const post = await generateBlogContent({
data: tokenisedData, // Pipe-delimited data
month: "October 2024",
dataType: "cars", // "cars" or "coe"
});
// post.postId, post.title, post.slug, post.excerpt
スキーマ
// postSchema
z.object({
title: z.string().max(100), // SEO title, max 60 chars preferred
excerpt: z.string().max(500), // Meta description, under 300 chars
content: z.string(), // Markdown (no H1)
tags: z.array(z.string()).min(1).max(10), // 3-5 tags, first is dataType
highlights: z.array(highlightSchema), // 3-6 key statistics
});
// highlightSchema
z.object({
value: z.string(), // "52.60%", "$125,000"
label: z.string(), // "Electric Vehicles Lead"
detail: z.string(), // "2,081 units registered"
});
タグ定数
export const CARS_TAGS = ["Cars", "Registrations", "Fuel Types", "Market Trends", ...] as const;
export const COE_TAGS = ["COE", "Quota Premium", "1st Bidding Round", "PQP", ...] as const;
プロンプトの更新
packages/ai/src/config.ts を編集します:
ANALYSIS_INSTRUCTIONS:計算ロジック用GENERATION_INSTRUCTIONS:出力形式用
デバッグ
出力品質が低い場合: ステップ 1 の分析ログを確認し、コード実行ツールで Python が実行されることを確認します
スキーマ検証エラー: Zod の制約(最大長、配列の範囲)を確認します
API エラー: AI_GATEWAY_API_KEY を確認し、Gateway のクォータ/請求を確認します
環境変数
AI_GATEWAY_API_KEY=... # Required (Vercel AI Gateway)
DATABASE_URL=... # Required for generate-and-save (Neon/Postgres)
BLOB_READ_WRITE_TOKEN=... # Required for local hero-image upload
ベストプラクティス
- 常に 2 ステップのフローを使用する: 分析と生成を分離します
- コード実行を省略しない: 正確な計算に必須です
- タグ定数を使用する: 用語の一貫性を保ちます
- テレメトリを有効にする: コストと品質を追跡します
参考資料
- パッケージの完全なドキュメントについては
packages/ai/AGENTS.mdを参照してください - Vercel AI SDK:最新のドキュメントには Context7 を使用してください
コメント
Markdown 対応