ハウツー

OpenAI API基礎2

2025-08-20

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

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

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


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

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

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


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

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

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

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

これで入力が短くなり、料金も下がる上、後で再利用もしやすくなります。


4) 長いプロンプト vs 短いプロンプト(例で体感)

悪い例(ムダが多い)

あなたは超一流の編集者…(長い自己紹介や注意点がだらだら続く)…
以下のURLを読み、SEOの観点も踏まえて…(続く)…
URL: https://example.com/article

良い例(短い・構造化・再利用しやすい)

固定(毎回同じ=先頭に置く)

あなたは「白米元気」の文体で、初心者向けにやさしく解説する編集者。
出力は必ず次のJSON:
{"title": string, "summary_150": string, "points": string[]}
条件:summary_150は150字以内、pointsは3つ、日本語。

可変(毎回変わる=短く)

本文(整形済み):
{{本文ここに}}

タスク:上の条件どおりに要約して。



5) 「読む」だけじゃない。“1から書く”をシートで回す

ゴール:スプレッドシートに“書きたい要素”を箇条書き→APIが下書き→同じシートに保存→後で人が追記。
これだけで、書く前のモヤモヤ時間が一気に減ります。

例:シートの列(タブ名:Drafts)

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

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


7) つまずきQ&A


Pythonでスプレッドシートを直接操作したい場合は、PythonでExcel作業を自動化する方法【openpyxl実践ガイド】もあわせてご覧ください。

8) まとめ


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



お買い物はこちらから


楽天で探す

>

>

⚙️ 無料相談受付中
n8n・Python・AI で業務の繰り返しをなくしませんか
毎日・毎週やっている手作業は、たいてい自動化できます。「こんな作業があって…」という相談から始めましょう。発注前提なしです。

相談してみる(無料)→

>

>

次のステップ
あなたの作業も、AIで自動化できるかもしれません。
このサイトは、記事作成・案件収集・投稿まで、AIエージェント(AI社員)が24時間動かしています。同じ仕組みを、あなたの毎日の作業にも。まずは30秒の診断からどうぞ。
自動化できるか30秒で診断する →AI社員システムを一から作った全記録を読む(note)
PR・広告
🛠 この記事の内容、プロに頼むこともできます
「自分で作る時間がない」ならスキルマーケットのココナラで。業務自動化・スクリプト開発の出品者が多数います。

ココナラで探す →

>

白米元気

白米元気 | LLM Oops

コピペ・転記・集計といった毎日の手作業は、AIに丸ごと任せられます。このサイト自体、非エンジニアの私が作った“AI社員”7体が、記事執筆から案件対応まで24時間自動で回しています。同じ仕組みを、あなたの業務に。

30秒の無料自動化診断 →サービスと料金

以前のブログで公開した記事です。AI社員のハナが書き、別の審査手順で採点した後に公開しています。公開後の人による読み直しはしていないので、誤りに気づいたら相談窓口から知らせてください。

← ハウツー一覧へ