Model chooser  /  Write copy and long-form content  /  Recurring

For content you produce every week, use Claude Sonnet 5.

Personalised outbound, weekly posts and product descriptions need a consistent voice at a cost that does not grow faster than the output. Sonnet 5 writes close to Opus quality at a medium cost tier, and caching makes the brand guide nearly free to reuse.

Why Claude Sonnet 5

The reasons it wins for this job.

  • A content pipeline is judged on the hundredth piece, not the first. Sonnet 5 is Anthropic's speed-and-intelligence balance, so each piece is cheap enough to generate two and keep the better one.
  • Prompt caching lets you send the same brand guide, banned-words list and example posts with every request while paying full price for them only once per cache window.
  • Structured outputs return subject line, body and call to action as separate JSON fields, so the result drops straight into your email tool or CMS.
  • It shares the Claude family's writing style with Opus 5, so a voice you tuned by hand on Opus carries over when you automate it.

How to use it

4 steps to a first result.

  1. 1Write the brand guide onceVoice rules, banned phrases, three to five approved examples. This becomes the cached system prompt.
  2. 2Define the output shapeDecide the fields you need (subject, body, CTA, alt text) and request them as JSON.
  3. 3Build a small review setTake 20 real inputs and approve the outputs by hand. Re-run this set whenever you change the prompt.
  4. 4Keep a human on sendQueue drafts for approval before anything goes to a customer, at least until the review set passes cleanly for a month.

Claude API, TypeScript

Start from this.

Edit the parts in capitals, then run it.

import Anthropic from "@anthropic-ai/sdk";
import { readFileSync } from "node:fs";

const client = new Anthropic();
const brandGuide = readFileSync("BRAND_GUIDE.md", "utf8");

export async function draftEmail(lead: { name: string; company: string; trigger: string }) {
  const res = await client.messages.create({
    model: "claude-sonnet-5",
    max_tokens: 4000,
    output_config: {
      effort: "low",
      format: {
        type: "json_schema",
        schema: {
          type: "object",
          properties: { subject: { type: "string" }, body: { type: "string" } },
          required: ["subject", "body"],
          additionalProperties: false,
        },
      },
    },
    system: [{ type: "text", text: brandGuide, cache_control: { type: "ephemeral" } }],
    messages: [{ role: "user", content: `Write a first-touch email to ${lead.name} at ${lead.company}. Reason to write: ${lead.trigger}.` }],
  });
  const text = res.content.find((b) => b.type === "text");
  return JSON.parse(text && text.type === "text" ? text.text : "{}");
}
Nothing is sent anywhere. It copies to your clipboard.

Alternatives that also work

If Claude Sonnet 5 is not an option.

Gemini 3.8 FlashOfficial page →

Google · closed · cost: low

Pick it when volume is very high and short-form, such as thousands of product descriptions. It sits in the low cost tier and ranks level with Opus 5 on LMArena.

GPT-5.6 TerraOfficial page →

OpenAI · closed · cost: medium

Pick it when your stack is already on OpenAI. OpenAI positions Terra as the balance of intelligence and cost.

Qwen3.8 27BHugging Face →

Alibaba Qwen · open weights · cost: free weights; you pay for the hardware · 7.5M HF downloads/mo

Pick it when customer data cannot go to a third-party API. Apache 2.0, one GPU, and 79.5 on IFBench for following instructions.

Watch out for

Doing this just once? For one piece of writing that has to be good, use Claude Opus 5. Claude models hold most of the top places on LMArena's text leaderboard, where people vote blind on which answer reads better. Opus 5 is the strongest of them you can use in the Claude app without waiting.

Sources

Checked . Models change monthly; we re-check this page when they do.

Picking the model is the easy part.

Wiring it into a workflow that runs every week, with evals, fallbacks and a cost you can predict, is the work. Fifteen minutes, no deck.

Book fifteen minutes →