「ムダ課金」を防ぐプロンプト設計とスプシ自動化
— シートにメモるだけで“書く仕事”を時短する
この記事でできるようになること
- お金の仕組み(トークン課金)を“怖くなく”理解できる
- 短く伝えるコツと短く返させるコツが身につく
- Googleスプレッドシートを土台に、自分の下書き→清書→保存まで自動化の入口に立てる
1) お金の話は超シンプルでOK
OpenAI APIは「使った分だけ」の従量課金です。
“使った分”=トークン(文字のかけら)で数えます。大ざっぱに言うと入力と出力の合計が料金になります。詳しい目安は公式ヘルプが一番わかりやすいです。 OpenAI Help Center
- ポイントは2つだけ
- 長い文ほど高い(入力が長い・出力が長い)
- モデルによって単価が違う(料金表は実装前に必ず確認) OpenAI
まずは安いモデル+短い出力で始めて、必要なときだけ上げる。これが基本です。
(どのエンドポイントで呼ぶかは、いまはResponses APIが基本形です)
2) ムダ課金を避ける“4つのコツ”
- 短く渡す:長文を丸投げしない。まず不要部分(広告やメニューなど)を削る。
- 短く返させる:
- 例)「150字以内」「箇条書き3つ」「見出しだけ」など上限を先に決める
JSON形式で返す
と、余計な飾りが減り、後処理もしやすい(Structured Outputs/JSONモードの考え方) OpenAI Platform+1
- 同じ“前置き”は固定にする:毎回同じ長い説明(ペルソナ・文体・出力形式)はプロンプトの先頭に固定。同じ内容はキャッシュが効いて安く・速くなることがあります。
- まとめて処理:一気にたくさんやる日はバッチ処理に回すと、別枠+レート上限拡大、かつコスト最大50パーセント減で処理できます。
3) URLの正しい扱い(デフォルトでは読まない)
APIは、デフォルトではWebページを読みに行きません。
本文は自分で取得・成形してから渡すのが原則。
※Web検索ツールを有効化すれば取得も可能ですが、明示的な設定が必要です。
- 正解の流れ
- 自分のコード(GAS/Python)でURLの本文を取得
- 不要部分を削る(ここが最大の節約ポイント)
- その短くした本文だけをAPIに渡す
これで入力が短くなり、料金も下がる上、後で再利用もしやすくなります。
4) 長いプロンプト vs 短いプロンプト(例で体感)
悪い例(ムダが多い)
あなたは超一流の編集者…(長い自己紹介や注意点がだらだら続く)…
以下のURLを読み、SEOの観点も踏まえて…(続く)…
URL: https://example.com/article
- URLだけでは本文を読めていない
- 毎回長い“前置き”を送って入力コストが肥大
- 出力の長さ・形式が曖昧でムダに長くなりがち
良い例(短い・構造化・再利用しやすい)
固定(毎回同じ=先頭に置く)
あなたは「白米元気」の文体で、初心者向けにやさしく解説する編集者。
出力は必ず次のJSON:
{"title": string, "summary_150": string, "points": string[]}
条件:summary_150は150字以内、pointsは3つ、日本語。
可変(毎回変わる=短く)
本文(整形済み):
{{本文ここに}}
タスク:上の条件どおりに要約して。
- 前置きを固定 → 毎回の入力トークン削減と再利用がしやすい(実行の安定化・実装簡素化に)
- JSONで出力 → 余計な文章が減って出力も短く一定(後処理も楽)

5) 「読む」だけじゃない。“1から書く”をシートで回す
ゴール:スプレッドシートに“書きたい要素”を箇条書き→APIが下書き→同じシートに保存→後で人が追記。
これだけで、書く前のモヤモヤ時間が一気に減ります。
例:シートの列(タブ名:Drafts
)
- A: タイトル案(ざっくりでOK)
- B: 読者像(誰に向けて?例:AI初心者の副業勢)
- C: 伝えたい要点(箇条書きで3〜5個)
- D: 文体(やさしく/フランク/丁寧 など)
- E: CTA(最後に読者にしてほしい行動)
- F: 下書き(API出力) ← ここに返して保存
GAS最小コード(列A〜Eから下書きを作ってFへ保存)
事前にScript Propertiesに
OPENAI_API_KEY
を保存しておきます。
(GAS:右上の歯車→プロパティ→スクリプトのプロパティ)
APIはResponses APIを叩きます。
function draftFromSheet() {
const key = PropertiesService.getScriptProperties().getProperty('OPENAI_API_KEY');
const url = 'https://api.openai.com/v1/responses';
const sheet = SpreadsheetApp.getActive().getSheetByName('Drafts');
const rows = sheet.getRange(2, 1, sheet.getLastRow()-1, 6).getValues(); // 2行目から
rows.forEach((r, i) => {
const [title, audience, bullets, tone, cta, draft] = r;
if (draft) return; // 既に出力がある行はスキップ
// 固定の前置き(短く・毎回同じ=キャッシュ効きやすい)
const system = `
あなたは「白米元気」の文体で、初心者にやさしく記事を書く編集者。
出力は日本語で、見出し→本文→箇条書き3点→最後にCTAの順。`;
// 毎回変わる部分(短く具体的に)
const user = `
テーマ: ${title}
読者像: ${audience}
要点: ${bullets}
文体: ${tone}
CTA: ${cta}
条件: 全体は800〜1000文字/見出し1つ/本文は段落短め。`;
const payload = {
model: "gpt-5-mini",
input: [
{ role: "system", content: system },
{ role: "user", content: user }
],
max_output_tokens: 900 // 出力の天井を決める=暴走しない
};
const res = UrlFetchApp.fetch(url, {
method: 'post',
contentType: 'application/json',
headers: { Authorization: 'Bearer ' + key },
payload: JSON.stringify(payload),
muteHttpExceptions: true
});
const json = JSON.parse(res.getContentText());
const text = json.output_text || '';
sheet.getRange(i+2, 6).setValue(text); // F列に保存
Utilities.sleep(500); // 軽い間引き(429対策の基本)
});
}
- 短く渡す/短く返させるをコードで徹底(条件と上限)
- 同じ前置き(ペルソナ/出力順)を先頭に固定 → キャッシュで速く・安くなることがあります
1行だけで試してOKなら、GASの時間トリガーで毎朝実行にすれば“毎日1本の下書き”が勝手に増えていきます。

6) 作業の順番(節約できる段取り)
- シートにメモ:タイトル/読者/要点(ここは人が1〜3分でOK)
- 下書き生成(API):見出し→本文→箇条書き→CTA(900トークン上限など短く返させる)
- 清書:人が最後のひと押し(体験談・例・数字を足す)
- 保存:出力はシートに貯める(あとで再編集可)
- 配信:ブログ投稿やメール文面は別の関数で“押すだけ”に
いきなり長文を一発で作るより、「箇条書き→段落化→仕上げ」の段階式の方が、コストも質も安定します(無駄に長い出力が出にくい)。
7) つまずきQ&A
- Q:出力が長すぎて高い
A:「150字」「箇条書き3つ」のように具体的に縛る。max_output_tokens
も必ず設定。 - Q:毎回同じ説明を書くのが面倒&高い
A: ペルソナや出力形式など固定の前置きは先頭に置いて再利用。キャッシュで安く・速くなることがあります。 OpenAI Platform - Q:大量処理で失敗する/待ち時間がつらい
A: バッチ処理に回すと別枠+安価。オンラインは小さく刻む。429はバックオフで再試行。 OpenAI Platform+1 - Q:料金の最新が不安
A: Pricingを開いて確認してから実行。これで“思ったより高い”を防げます。 OpenAI
8) まとめ
- 短く渡す/短く返させるだけで、コストはグッと下がります。
- 前置きは固定、本文は短く。シート駆動にすると、思いつきを5分で下書きに変えられます。
- ゴールはお金そのものじゃなく、あなたの時間を増やすこと。
私のブログでも、AIニュースを“白米元気の目線”で解説する記事を自動化しています。実験的ですが「ここまで自動化できる」の参考にどうぞ。
公式リソース(ブクマ推奨)
- Pricing(料金表):最新料金の確認。 OpenAI
- Responses API(基本エンドポイント):使い方・サンプル。 OpenAI Platform
- トークンの基礎(なぜ長いと高い?): OpenAI Help Center
- レート制限と再試行(429対策): OpenAI PlatformOpenAI Cookbook
- Prompt Caching(前置き固定のコツ): OpenAI PlatformOpenAI
- Batch API(大量処理は安価に別枠で): OpenAI PlatformOpenAI Help Center
- Structured Outputs/JSONモード(短く・一定に返させる): OpenAI Platform+1
お買い物はこちらから