The problem
I built this for The 600, my YouTube channel and newsletter about living abroad, which is now dormant. Every topic meant the same work: research the facts, then write a long-form script, a few shorts, a newsletter and Substack posts. By hand, that took about four hours per topic, and longer when a topic needed proper research.
The four pieces also had to tell the same story, and the facts had to be right. In an early version of this pipeline, the writer filled a gap with numbers of its own: international school fees in Bulgaria of €25,000 to €32,000 a year. The real figure was €11,860 to €18,480. A channel like this depends on accurate numbers, so this was the error I most needed to fix.
What I built
An n8n workflow that takes one topic, researches it with Claude's web search, turns the research into a five-field brief, and hands that brief to four Claude writers. Each draft lands in its own Notion page, labelled by type, and a Telegram message arrives with the link.
- Research before writing. Up to six web searches under strict rules: official sources first, a source link next to every key fact, the newest figure first when sources disagree, and anything it can't confirm labelled as unconfirmed.
- The brief. A second call turns the research into a brief with five named fields: angle, target reader, hook, a three-point structure and a call to action. It comes back as structured JSON, so every writer gets exactly the same brief and the four pieces tell one story.
- A facts-only rule. Every writer receives the research and the brief, and may only use facts from those two. This is the change that stopped the invented figures.
- The long-form script. The writer follows the structure of my best-performing videos and, wherever my own experience belongs, leaves a marker printed as [YOUR STORY] instead of inventing one.
- Delivered to Notion and Telegram. A run starts when I send a topic to the webhook. Every draft goes into one Notion database with a Type label, and a Telegram message brings the link, so I don't need to open n8n to see the results.
From a real run · the opening of a long-form script, before my edit“Since 31 March 2026, temporary residents in El Salvador only have to spend 90 days a year in the country. And the country doesn't tax what you earn abroad. On paper, that's about as light as it gets. So what's the catch? And who is it a catch for?”
How I know it works
I tested the newsletter writer the way you'd test any process. Same five topics every round. Five yes or no checks per newsletter, so 25 points. One targeted change between rounds. I fact-checked accuracy line by line against current sources, including ones the pipeline never saw.
| Round | Change before the round | Layout | Accuracy | Clarity | No waffle | Answers | Total |
|---|---|---|---|---|---|---|---|
| 1 | None (baseline) | 0/5 | 0/5 | 4/5 | 1/5 | 4/5 | 9/25 |
| 2 | Research passed to the writer, plus the facts-only rule | 0/5 | 0/5 | 3/5 | 2/5 | 5/5 | 10/25 |
| 3 | Title kept out of the body; more searches and longer research notes | 5/5 | 1/5 | 4/5 | 3/5 | 5/5 | 18/25 |
Round 2 only added one point, but the remaining errors now came from the research, not the writer. The facts-only rule worked, and that told me where to look next. By Round 3, every remaining accuracy error traced back to a source (a date that had since changed, a misread currency, a missing visa), and none to the writer.
Accuracy is still the weakest check, at 1/5. Since Round 3 I've tightened the research rules. A fourth round will show whether that moved it. Two more checks run inside n8n on every newsletter: is the title repeated in the body, and was any text cut or lost when it was split into Notion blocks.
Choosing the model
I built and compared three versions on one test topic: all Claude, all ChatGPT, and ChatGPT researching with Claude writing. ChatGPT's research was cheaper and more accurate; Claude's writing sounded more natural. At one run a week the saving was small, so I kept Claude for every step: one API key, one bill and one set of prompt rules to maintain. If accuracy is still the weak point after a fourth round, swapping the research step to ChatGPT is the first thing I'd test.
What broke, and how I fixed it
A silent failure. The brief field was called “Brief” in one node and “brief” in the next. The writer received an empty brief, didn't error, and wrote a full newsletter about Panama, a topic nobody asked for. Fixed at source.
Empty replies. One writer spent its whole token allowance thinking and returned nothing. Thinking and the answer share one budget, so raising it from 3,000 to 16,000 fixed it.
Words cut in half in Notion. The text was cut into fixed 2,000-character blocks, which split words in half, and my own check flagged it on my phone. The cut now stops at the end of a paragraph.
Missing sections. The script was cut into blocks at blank lines. When the model added two extra blank lines, the last two sections disappeared. It now cuts at the section names, which are always there.
Result
One topic becomes first drafts in four formats in about four minutes (4 min 16 s on the run shown), for under £1, before my edit. By hand, the same set took me about four hours. I ran 15 scored test runs across five topics, plus full four-format runs end to end.
What still needs me: an edit of each draft, my own stories wherever the writer left a [YOUR STORY] marker, and a check of the key facts before anything goes out. The pipeline does the research and the first drafts.
What I'd do next
- Run a fourth round of the eval after the research changes, and add checks for the other three formats.
- Put the source links on each Notion page, so fact-checking happens in one place.
- Move it off my laptop onto a server with a secured webhook, so a form can trigger it.