How to Use n8n with ._Template 197 Ia Gerador Anuncios Copy Ads
Your team burns hours every week writing ad copy that gets scrapped. A campaign launches Monday, the CMO wants three new variations by Tuesday, and someone on the growth team is manually pasting produ
Your team burns hours every week writing ad copy that gets scrapped. A campaign launches Monday, the CMO wants three new variations by Tuesday, and someone on the growth team is manually pasting product briefs into a chat window, copying the output back into a spreadsheet, and reformatting it for the ad platform. That loop doesn't scale — and it breaks the moment the person who owns it goes on vacation. Template 197 (IA Gerador de Anúncios / Copy Ads) is an n8n workflow that turns ad-copy generation into an API you can trigger from anywhere: a form, a Slack message, a spreadsheet row, or another automation. This article shows you exactly how to wire it up, what nodes it uses, and where teams get it wrong.
The problem: ad copy is a bottleneck disguised as a creative task
Most teams treat ad-copy production as a purely human job, so it never gets systematized. The result is a set of predictable failures. Output is inconsistent — every writer has a different sense of tone, so brand voice drifts across campaigns. Volume is capped by whoever happens to be free, which means A/B testing dies because nobody has time to produce ten headline variants. And there's no memory: the winning copy from last quarter lives in a dead Google Doc instead of feeding the next round.
The deeper issue is that copy generation is actually two problems glued together. One is creative (what angle, what hook, what emotional trigger). The other is mechanical (assemble the brief, call the model, enforce character limits, format for the destination, log the result). The mechanical half is 80% of the wall-clock time and 0% of the value. n8n exists to delete that mechanical half so your people spend their hours on angle and offer, not copy-paste.
The solution: Template 197 as a copy-generation service
Template 197 packages the whole loop as a single n8n workflow. You send it a structured brief — product name, audience, primary benefit, tone, and target platform (Google, Meta, LinkedIn) — and it returns platform-ready ad copy: headlines, descriptions, and primary text, each already trimmed to the character limits of the destination network. Because it lives in n8n, the same logic is reachable from a webhook, a scheduled run, or a manual trigger without rewriting anything.
The core of the workflow is a small, reliable chain: a trigger that accepts the brief, a data-prep step that normalizes the input, an AI node that generates the copy against a locked prompt, a parser that structures the response into clean fields, and one or more output nodes that deliver the result. The value isn't any single node — it's that the prompt, the character-limit rules, and the brand voice are defined once and enforced on every run. That's the difference between "we use AI for copy" and "we have a copy system."
Step-by-step: building the workflow in n8n
1. Trigger — how the brief comes in. Start with a Webhook node set to POST if you want to call the workflow from a form, your app, or another automation. Give it a clear path like /generate-ad-copy and set Respond to "Using Respond to Webhook Node" so you can return the finished copy synchronously. If you'd rather drive it from a spreadsheet, swap in a Google Sheets Trigger watching a "Requests" tab; for ad-hoc use, the Manual Trigger is fine while you test.
2. Normalize the input. Add a Set node (or Edit Fields) right after the trigger to map incoming data into a predictable shape: product, audience, benefit, tone, platform. This one step saves you from prompt errors later — the AI node references these named fields instead of raw, unpredictable webhook keys. Add an IF node to reject requests missing product or platform so bad briefs fail fast with a clear message instead of producing garbage copy.
3. Generate the copy. This is the heart of the template. Use the AI Agent node (or the basic Message a Model node from the LangChain pack) wired to an Anthropic Chat Model sub-node. Select a current model such as claude-sonnet-5 for the best balance of speed and quality, or claude-opus-4-8 when copy quality is worth the extra latency. Set the system prompt to lock your brand voice and rules, and build the user prompt from expressions:
Write 5 {{$json.platform}} ad headlines and 3 descriptions for {{$json.product}}, targeting {{$json.audience}}. Lead with this benefit: {{$json.benefit}}. Tone: {{$json.tone}}. Respect platform character limits and return valid JSON.
Set temperature around 0.7 — high enough for variation across the five headlines, low enough to stay on-brief. Put the hard rules (character limits, no emojis, no unverifiable claims) in the system message, because system instructions hold far more reliably than instructions buried in the user turn.
4. Structure the output. Force the model to return JSON and attach a Structured Output Parser to the AI node with a schema like { headlines: string[], descriptions: string[], primary_text: string }. This turns freeform text into clean fields you can route anywhere. If you're on the plain Message a Model node, follow it with a Code node that runs JSON.parse() inside a try/catch and, on failure, loops back through the AI node once — a cheap self-repair that catches the occasional malformed response.
5. Deliver and log. Fan the result out to wherever it's useful. A Respond to Webhook node returns it to the caller; a Google Sheets (Append) node logs every generation with its brief so you build a searchable copy library; a Slack node drops the variants into your growth channel for a human to pick. Logging every run is what turns this from a toy into an asset — your winning copy accumulates instead of evaporating.
Benefits: what changes once it's live
The immediate win is speed: a brief-to-copy cycle that took a person 30–45 minutes now runs in under 20 seconds, and it runs at 3 a.m. without anyone awake. The second win is consistency — because voice and rules live in one system prompt, the tenth campaign sounds exactly like the first, and updating brand voice is a one-line edit instead of retraining a team. The third, and most underrated, is that testing becomes free: asking for ten headline variants costs the same as asking for one, so A/B testing stops being a luxury. And because the whole thing is an n8n workflow, it composes — you can chain it into a larger pipeline that pulls new products from your catalog, generates copy, and pushes drafts straight to the ad platform's API.
Common pitfalls (and how to avoid them)
Skipping the normalization step. Teams wire the webhook straight into the AI node, then wonder why one bad payload poisons every run. Always land input in a Set node first and validate with an IF node.
Putting rules in the user prompt. Character limits and "never invent statistics" belong in the system message. Rules in the user turn get overridden by the specifics of each brief; rules in the system message stick.
No output schema. Without a Structured Output Parser, you're regex-scraping prose, and the workflow shatters the first time the model phrases things differently. Enforce JSON at the node level and validate it.
Ignoring rate limits and cost. If you trigger this from a spreadsheet with hundreds of rows, add a Loop Over Items node with a batch size and a small Wait between batches. It protects you from API rate limits and stops a runaway sheet from generating a surprise bill.
Hardcoding secrets. Never paste your API key into a node. Use n8n Credentials so keys are encrypted, shared across workflows, and rotatable without editing the flow.
Treating output as final. The workflow drafts; a human still approves. Route to Slack for a quick thumbs-up before anything spends ad budget — the automation removes the grunt work, not the judgment.
Wire it up once and ad copy stops being a person-shaped bottleneck and becomes infrastructure — an endpoint your whole team can call, that gets smarter every time you log a winner.