OpenAI API基礎2

「ムダ課金」を防ぐプロンプト設計とスプシ自動化

— シートにメモるだけで“書く仕事”を時短する

この記事でできるようになること

  • お金の仕組み(トークン課金)を“怖くなく”理解できる
  • 短く伝えるコツ短く返させるコツが身につく
  • Googleスプレッドシートを土台に、自分の下書き→清書→保存まで自動化の入口に立てる

1) お金の話は超シンプルでOK

OpenAI APIは「使った分だけ」の従量課金です。
“使った分”=トークン(文字のかけら)で数えます。大ざっぱに言うと入力出力合計が料金になります。詳しい目安は公式ヘルプが一番わかりやすいです。 OpenAI Help Center

  • ポイントは2つだけ
    1. 長い文ほど高い(入力が長い・出力が長い)
    2. モデルによって単価が違う(料金表は実装前に必ず確認) OpenAI

まずは安いモデル短い出力で始めて、必要なときだけ上げる。これが基本です。
(どのエンドポイントで呼ぶかは、いまはResponses APIが基本形です)


2) ムダ課金を避ける“4つのコツ”

  1. 短く渡す:長文を丸投げしない。まず不要部分(広告やメニューなど)を削る。
  2. 短く返させる
    • 例)「150字以内」「箇条書き3つ」「見出しだけ」など上限を先に決める
    • JSON形式で返すと、余計な飾りが減り、後処理もしやすい(Structured Outputs/JSONモードの考え方) OpenAI Platform+1
  3. 同じ“前置き”は固定にする:毎回同じ長い説明(ペルソナ・文体・出力形式)はプロンプトの先頭に固定。同じ内容はキャッシュが効いて安く・速くなることがあります。
  4. まとめて処理:一気にたくさんやる日はバッチ処理に回すと、別枠+レート上限拡大、かつコスト最大50パーセント減で処理できます。

3) URLの正しい扱い(デフォルトでは読まない)

APIはデフォルトではWebページを読みに行きません。
本文は自分で取得・成形してから渡すのが原則。
※Web検索ツールを有効化すれば取得も可能ですが、明示的な設定が必要です。

  • 正解の流れ
    1. 自分のコード(GAS/Python)でURLの本文を取得
    2. 不要部分を削る(ここが最大の節約ポイント)
    3. その短くした本文だけを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 PropertiesOPENAI_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. シートにメモ:タイトル/読者/要点(ここは人が1〜3分でOK)
  2. 下書き生成(API):見出し→本文→箇条書き→CTA(900トークン上限など短く返させる)
  3. 清書:人が最後のひと押し(体験談・例・数字を足す)
  4. 保存:出力はシートに貯める(あとで再編集可)
  5. 配信:ブログ投稿やメール文面は別の関数で“押すだけ”に

いきなり長文を一発で作るより、「箇条書き→段落化→仕上げ」の段階式の方が、コストも質も安定します(無駄に長い出力が出にくい)。


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ニュースを“白米元気の目線”で解説する記事自動化しています。実験的ですが「ここまで自動化できる」の参考にどうぞ。

公式リソース(ブクマ推奨)



お買い物はこちらから

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です