Claude に文章を書かせる|頼み方・決まった形の答え・出典つきの答え

コース6 API編 7 / 13・読む時間 約10分・最終確認日

いまは無料で公開中です

このレッスンの要点

  • Claude には「計算ずみの数字」と「記事の説明」だけを渡し、紹介文を書いてもらいます
  • 頼み方は、役割を伝える・資料を XML のタグで区切る・見本を見せる・してほしいことを「〜して」で書く、の4つ
  • 答えは構造化出力で決まった形(JSON)にすると、そのまま記事のファイルにできます

何を渡して、何を書いてもらうか

Claude に渡すのは、レッスン6で計算した順位と、各記事の短い説明だけです。書いてもらうのは、ランキングの最初のひとことと、1本ずつの紹介文です。順位やアクセス数は、文章には書かせません。数字はページの側で、計算した値をそのまま出します。

渡すもの上位5本の slug と題名・各記事の説明
Claude紹介文を書く(数字は書かない)
受け取るもの決まった形(JSON)の intro と items
数字と文章を分けておくと、文章がまちがっても数字は正しいままです。

モデルは、公式の表でコンテンツ作りの例が挙がっている Sonnet 5.5 から試すとよいでしょう。公式は、自分の題材で書かせてみて、くらべて決めるようすすめています。

伝わる頼み方の4つ

公式の頼み方のガイドは、Claude を「とても優秀だけれど、事情をまだ知らない新しい人」と考えるようすすめています。API で頼むときも、コース1・2で学んだ頼み方と同じです。

コツこの講座での書き方
役割を伝えるsystem に「猫の情報サイトの編集者」と書く
資料をタグで区切る記事の説明を <articles> などのタグで囲んで渡す
見本を見せる「いいな」と思う紹介文を <example> で囲んで見せる
してほしいことを書く「〜しないで」ではなく「やさしい日本語で、1本につき2文で」
公式は、見本を3〜5個見せるのがよいとしています。この講座の題材はかんたんなので、2つから始めます。

決まった形で受け取る(構造化出力)

答えをプログラムで使うときは、を使います。答えの形(JSON スキーマ)を先に渡すと、Claude はその形どおりの JSON で答えます。公式は、ほとんどの場合この形どおりになることを保証しています。

受け取る答え(イメージ)
intro:今週も子猫の記事がよく読まれました。
items:
 slug:kitten-food comment:はじめて子猫をむかえた人に…
 slug:night-zoomies comment:夜の運動会の理由と…
形が決まっているので、レッスン8でそのまま記事のファイルにできます。

ただし、Claude が答えを断ったとき(stop_reason が refusal)と、書ける量の上限(max_tokens)に届いて途中で切れたとき(max_tokens)は、形どおりにならないことがあります。stop_reason が、書き終わったしるしの end_turn でなければ、保存せずに止めるようにしておきます。また、構造化出力では文字数の決まり(何文字以上など)は指定できません。「40〜120文字」は頼み方で伝え、守れているかはレッスン10の機械のチェックで確かめます。なお、最近のモデルでは、答えの書き出しを先に渡しておく方法は使えません。形をそろえたいときは、構造化出力を使います。

出典つきで書かせる(Citations)

ニュースのまとめのように、「どこに書いてあったか」を示したい文章もあります。そのときは Citations(出典つきの答え)を使います。資料を文書として渡し、出典の機能をオンにすると、Claude は答えの文ごとに、資料のどこから引いたかを返します。

構造化出力
答えを決まった形で受け取るファイルにしやすい
Citations(出典つき)
どこから引いたかが返る人が確かめやすい
この2つは、いっしょには使えません(いっしょに指定するとエラーになります)。目的で選びます。

猫のランキングは、数字はプログラムが出し、紹介文は記事の説明をもとにするので、構造化出力で十分です。出典を見ながら事実を確かめたい題材では Citations を使います(レッスン13の実例は、出典つきです)。

よくある勘違い

「『〜しないで』をたくさん書けば、思いどおりになる」わけではありません

禁止することを並べる
公式は、「〜するな」より「〜せよ」と、してほしいことを書くようすすめています
してほしい形を、見本つきで書く
見本は、関係があって、いろいろなものを、タグで囲んで見せるのがコツです

やってみよう

  1. レッスン6で作った data/ranking/ の JSON を用意します
  2. 下の「答えの形(JSON スキーマ)」を scripts/ranking-schema.json として保存します
  3. 「いいな」と思う紹介文を2つ書いて、scripts/examples.txt として保存します(1本につき2文・40〜120文字・数字なし)
  4. 下の依頼文を Claude Code に送って、紹介文を書かせるプログラムを作ってもらいます(APIキーはレッスン4と同じく、別のターミナルの環境変数に)
  5. できた紹介文を読んで、数字や記事の中身とちがうことを書いていないか確かめます
答えの形(JSON スキーマ。scripts/ranking-schema.json){ "type": "object", "properties": { "intro": { "type": "string" }, "items": { "type": "array", "items": { "type": "object", "properties": { "slug": { "type": "string" }, "comment": { "type": "string" } }, "required": ["slug", "comment"], "additionalProperties": false } } }, "required": ["intro", "items"], "additionalProperties": false }
紹介文を書かせるプログラムを作ってもらう依頼文(Claude Code に)Claude API で、週間ランキングの紹介文を書かせるプログラムを scripts/write.mjs として作って。入力は data/ranking/ のいちばん新しい JSON と、各記事の説明(サイトの記事のファイルの frontmatter の description。場所がわからなければ探して)。モデルは Sonnet 5.5(モデルの ID は公式のモデル一覧で確かめて)。system には「猫の情報サイトの編集者。やさしい日本語で、1本につき2文・40〜120文字で紹介する。数字は書かない」と書いて。資料は XML のタグで区切って渡し、見本は scripts/examples.txt に私が書いた紹介文を <example> で囲んで見せて(ファイルが無ければ、作る前に私に聞いて)。答えは構造化出力(output_config.format)で scripts/ranking-schema.json の形にして。順位やアクセス数は、文章に書かないで(数字はページの側で出す)。stop_reason が end_turn 以外(max_tokens や refusal など)なら、保存せずに理由を出して止めて。結果は data/draft/(data/ranking/ と同じ日付).json に保存。APIキーはコードに書かず環境変数 ANTHROPIC_API_KEY から読んで。必要なパッケージの入れ方も教えて

確認問題

Q1. 出典つきの答え(Citations)と、構造化出力をいっしょに使うと?
Q2. 答えの stop_reason が「max_tokens」でした。どういう意味?
今日の練習

自分で書いた紹介文の中から、「いいな」と思うものを2つ選んで、見本として Claude に見せる文にしてみましょう。

この記事の用語

コース6 API編の目次

  1. 1APIとは?アプリ版との違い
  2. 2APIキーの作り方と守り方
  3. 3料金の考え方と、使いすぎを防ぐ上限設定
  4. 4はじめての呼び出し
  5. 5全体像
  6. 6データを集める
  7. 7Claude に文章を書かせる
  8. 8記事ファイルにしてサイトに載せる
  9. 9毎週自動で動かす
  10. 10公開前のチェック
  11. 11メール配信とつなぐ
  12. 12料金と、失敗したときの備え
  13. 13実例:週次レポートの裏側