I spent 11 hours in one week writing property descriptions, market summaries, and follow-up emails from scratch. That was January 2023. By March 2026, that same workload takes me under 90 minutes — because I built a content pipeline using the Claude API that runs in the background while I’m out showing villas in São Martinho. If you’re a solopreneur or small operator drowning in repetitive content tasks, this tutorial is exactly what I wish someone had written for me three years ago.
Setting up the Claude API for a content pipeline sounds like a developer task. It isn’t. I have zero formal coding background. What I do have is a clear understanding of what I need to produce every week — and enough stubbornness to figure out how to automate it. This guide walks you through the exact setup I use: from getting your API key to building an automated content workflow that outputs real, usable content without you typing a word.
What You’ll Build by the End of This Tutorial
By the time you finish this guide, you’ll have a working Claude API content pipeline that can:
- Accept a raw content brief (a few bullet points) as input
- Send that brief to Claude via API call
- Return a polished, structured content output — property description, email draft, social post, whatever you need
- Run automatically through Make.com (or be triggered manually via a simple script)
This isn’t a toy demo. I use this pipeline for real client work in Madeira every week.
Prerequisites Before You Start
You don’t need to be a developer. But you do need a few things in place before step one:
- An Anthropic account — free to create at console.anthropic.com
- A credit card on file — the API is pay-per-use. More on pricing below.
- Make.com account (free tier works to start) — or basic Python if you prefer scripting
- A Google Sheet or Airtable base — where your input briefs will live
- About 90 minutes — this is the realistic setup time, not the “15 minutes!” promise you see elsewhere
Understanding Claude API Pricing Before You Commit
I’m putting pricing first because most tutorials bury it. You should know what this costs before you build anything.
| Model | Input (per 1M tokens) | Output (per 1M tokens) | Best for |
|---|---|---|---|
| Claude Haiku 3.5 | $0.80 | $4.00 | High-volume, short outputs |
| Claude Sonnet 4 | $3.00 | $15.00 | Quality content, analysis |
| Claude Opus 4 | $15.00 | $75.00 | Complex, high-stakes content |
For my real estate pipeline — property descriptions averaging 400 words each — I use Claude Sonnet 4. My monthly API bill runs between €18 and €35 depending on volume. That’s for roughly 60–80 content pieces per month. Extremely reasonable for what it replaces.
Step 1: Get Your Claude API Key
Go to console.anthropic.com and sign in or create your account. Once you’re in:
- Click API Keys in the left sidebar
- Click Create Key
- Name it something descriptive — I use “madeira-content-pipeline-2026”
- Copy the key immediately and save it somewhere secure (a password manager, not a sticky note)
You won’t see that key again after you close the window. I learned that the hard way and had to generate a second key on my first attempt.
Next, add a payment method under Billing and set a monthly spend limit. I cap mine at $60/month — enough headroom that the pipeline never breaks mid-month, but not enough to cause pain if something misfires.
Step 2: Test Your API Key With a Direct Call
Before you build anything, verify the key works. The fastest way is a direct API call. If you have any familiarity with terminal or command line, use this:
curl https://api.anthropic.com/v1/messages
-H "x-api-key: YOUR_API_KEY_HERE"
-H "anthropic-version: 2023-06-01"
-H "content-type: application/json"
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 256,
"messages": [
{"role": "user", "content": "Say hello and confirm the API is working."}
]
}'
Replace YOUR_API_KEY_HERE with your actual key. If you get a response back with a greeting, your API connection is live. If you get an authentication error, double-check that you copied the full key without trailing spaces.
No terminal? Skip this step and test directly inside Make.com in Step 4. Either way works.
Step 3: Set Up Your Input Source in Google Sheets
Every pipeline needs an input. Mine is a Google Sheet with one row per content piece I need. For real estate listings, my columns look like this:
- Column A: Property ID (e.g., MDR-2026-047)
- Column B: Property type (villa, apartment, townhouse)
- Column C: Key features (3 bed, sea view, pool, 180m²)
- Column D: Location in Madeira (Calheta, Funchal, Ponta do Sol)
- Column E: Price range
- Column F: Target buyer profile (retiree, investor, family)
- Column G: Status (blank = needs content, “done” = processed)
When I add a new listing, I fill in columns A through F and leave G blank. The automation watches for blank rows in Column G and processes them. Simple trigger logic that I’ve never had to change in 14 months.
Step 4: Build the Automation in Make.com
This is the core of the pipeline. I’ll walk through it exactly as I have mine set up.
4a. Create a New Scenario in Make.com
Log into Make.com, click Create a new scenario, and add your first module: Google Sheets → Search Rows. Connect your sheet and set the filter to only return rows where Column G is empty. This ensures you only process listings that don’t have content yet.
4b. Add the HTTP Module for Claude API
Make.com doesn’t have a native Claude module as of early 2026, so you use the HTTP → Make a Request module. Configure it exactly like this:
- URL:
https://api.anthropic.com/v1/messages - Method: POST
- Headers:
x-api-key: your API key (store it in Make.com’s Data Stores, not hardcoded)anthropic-version:2023-06-01content-type:application/json
- Body type: Raw, JSON
For the body, use this template and map your Google Sheets columns into the prompt dynamically:
{
"model": "claude-sonnet-4-5",
"max_tokens": 1024,
"messages": [
{
"role": "user",
"content": "You are a real estate copywriter specializing in Madeira, Portugal. Write a compelling property listing description (350-400 words) for the following property.nnProperty type: {{Column B}}nKey features: {{Column C}}nLocation: {{Column D}}nPrice range: {{Column E}}nTarget buyer: {{Column F}}nnWrite in English. Use vivid but accurate language. Do not use superlatives like 'stunning' or 'breathtaking' more than once. End with a clear call to action."
}
]
}
Replace {{Column B}} etc. with the actual Make.com variable mappings from your Google Sheets module. Make.com lets you click to insert these dynamically.
4c. Parse the Response and Write Back to Sheets
Claude returns a JSON response. The text you want lives at choices[0].content[0].text — or more precisely, in the Anthropic response format, it’s at content[0].text. Add a JSON → Parse JSON module to extract it cleanly, then add a final Google Sheets → Update a Row module to:
- Write the generated description to Column H
- Write “done” to Column G
- Write the current timestamp to Column I
That last step prevents double-processing. Once G says “done,” the Search Rows filter skips it forever.
4d. Set Your Schedule Trigger
I run this scenario twice a day — 8am and 2pm. That means I can add listings throughout the day and they’ll have content ready within hours without me touching anything. Go to your scenario settings and set the schedule accordingly. The free Make.com tier gives you 1,000 operations per month, which is more than enough for a solo operation.
Step 5: Write Prompt Templates That Actually Produce Usable Output
The quality of your pipeline output is 80% prompt quality and 20% everything else. After 14 months of testing, here are the three templates I rely on most. Copy and adapt them for your use case.
Property Description Template
You are a real estate copywriter specializing in Madeira, Portugal.
Write a property listing description of 350-400 words.
Property details:
- Type: [PROPERTY_TYPE]
- Location: [LOCATION], Madeira
- Size: [SIZE]
- Bedrooms: [BEDROOMS]
- Key features: [FEATURES]
- Price: [PRICE]
- Target buyer: [TARGET_BUYER]
Tone: warm, informative, and specific. Avoid clichés.
Do not use the word "stunning" more than once.
End with one sentence inviting the reader to schedule a viewing.
Output only the description. No subject line, no headers.
Lead Follow-Up Email Template
Write a follow-up email to a real estate lead in Madeira.
Context:
- Lead name: [LEAD_NAME]
- Property they inquired about: [PROPERTY_NAME]
- Days since initial inquiry: [DAYS]
- Any notes from first contact: [NOTES]
Requirements:
- 120-150 words maximum
- Friendly but professional tone
- Reference something specific from their inquiry if notes are available
- Include one soft call to action (scheduling a call or visit)
- Do not use "I hope this email finds you well"
- Output: subject line on first line, blank line, then email body
Market Summary Template
Write a short Madeira real estate market summary for [MONTH] [YEAR].
Data points to incorporate:
[PASTE IN YOUR BULLET POINTS FROM LOCAL MARKET DATA]
Format:
- 200-250 words
- Three short paragraphs: overview, key trend, outlook
- No bullet points in the output
- Suitable for inclusion in a client newsletter
- Do not make up statistics. Only use the data points provided.
That last instruction — “do not make up statistics” — is critical. I added it after Claude confidently invented a percentage figure in an early draft. It hasn’t happened since I included that line.
My Real-World Experience Running This Pipeline in Madeira
Let me tell you about February 2026, specifically. I had 17 new listings hit my desk in the span of three weeks — an unusual cluster driven by a combination of seller decisions coming out of the January holidays and two referrals from a local notary who sent me four transactions at once. In previous years, that kind of volume meant long nights and weekend work just to get basic listing copy written before the photos were ready.
This time, I entered all 17 properties into my Google Sheet over a single afternoon — maybe 45 minutes of data entry total. By the next morning, all 17 had full property descriptions sitting in Column H, ready for review. I spent about 25 minutes reading through them and making minor edits: one location detail wrong on a Ponta do Sol property, one description that undersold a particularly impressive terrace. Total time on 17 listing descriptions: just over an hour, including the data entry.
My old process: I’d write each description from scratch, spending 15 to 20 minutes per listing if I was focused. For 17 listings, that’s four to six hours minimum. More realistically it stretched across two days because focus isn’t infinite and I had client calls in between.
The pipeline saved me roughly 4 hours on that single batch. Across a full month, where I typically process 40 to 60 content pieces (listings, emails, social posts, market summaries), I estimate I recover 10 to 12 hours monthly. That’s time I now use for client-facing work, which is what actually generates revenue.
I also use the same pipeline infrastructure for follow-up email sequences. When a lead goes quiet after 5 days, my CRM triggers Make.com, which calls Claude, which drafts a personalized follow-up email and drops it into a review queue in my Gmail drafts folder. I review and send in about 3 minutes per email rather than writing from a blank screen. My lead response consistency has improved noticeably — I used to let things slip during busy periods. Now the drafts are waiting for me even when I’ve been in the field all day.
The API cost for February’s 17-listing batch was around €4.20. I’ll take that math any day.
Genuine Limitations I’ve Run Into After 14 Months of Use
This pipeline is not perfect. Here’s what actually frustrates me in daily use:
Hallucinated Details When Input Is Thin
If I give Claude sparse input — say, just “2 bed apartment, Funchal, €280,000” — it will sometimes add plausible-sounding details that aren’t true. A mention of “original tile floors” or a “traditional Madeiran design” that I never specified. I’ve shipped descriptions with invented features before I added stricter prompting. The fix is better input and the instruction “only describe features explicitly listed.” But it requires vigilance. This pipeline cannot replace a final human review pass.
Make.com’s HTTP Module Breaks on Certain JSON Structures
I’ve had the pipeline fail silently twice because Make.com’s JSON parser didn’t handle an unexpected character in the Claude response — a quotation mark inside a Portuguese place name caused a parse error once. The scenario showed as “successful” but wrote nothing to the sheet. I added an error handler module and a Slack notification for failures after that. Build error handling in from day one; don’t wait for a live failure to discover you need it.
Rate Limits During High-Volume Bursts
The Anthropic API has rate limits that vary by tier. On the base tier, processing more than 10–15 requests in rapid succession can trigger a 529 error. Make.com handles this with a retry module, but it adds latency. If you’re processing large batches, add a 3-second delay between iterations in your Make.com scenario. It’s a single setting in the iterator module.
Troubleshooting the Most Common Setup Problems
401 Authentication Error: Your API key is wrong or has a trailing space. Regenerate and repaste carefully.
Make.com Shows Success But Nothing Writes to Sheet: Your JSON parse path is wrong. Check the exact path to the text content in Claude’s response — use Make.com’s built-in response inspector to see the actual structure returned.
Output
Robson Penassi Real estate consultant in Madeira, Portugal. Solopreneur since 2012. Testing AI tools since 2023 to automate his one-person business. Writes about what actually works — and what does not.