Skip to main content
← Back to Case Studies
Case StudyCreator Economy

n8n content repurposing: one topic in, 12 platform drafts out

Client · Self-built: my own content workflow
AI Automationn8nGoogle GeminiContent OpsGoogle Workspace
n8n content repurposing: one topic in, 12 platform drafts out
6 hours → 30 minutes
Time per topic
Owner-reported

Owner-reported: these figures are reported by me, not independently audited. Client names are withheld.

Stack
n8nGoogle GeminiGoogle SheetsGoogle Docs APIGoogle Drive
Related project: the full build
01 / Problem

The Challenge

This one is my own system, not a client's. I publish on YouTube, Instagram, LinkedIn, X and my blog, and each topic meant writing the same idea many different ways by hand. The workflow below is the one I built to stop doing that, and the same pattern I now build for clients. The full build is documented on the n8n Content Machine project page.

One good topic should feed every channel. In practice, each channel wants something different: a long YouTube script with chapters, a short with a fast hook, a reel with shot-by-shot directions, a ten-slide carousel, a LinkedIn post and a longer article, an X thread, and a blog post. Writing all of them by hand took most of a working day per topic, and the quality dropped by the time I reached the last format.

The formats also don't share a language. My reel voiceovers and Instagram captions are in Hinglish, carousel slides are in simple English, and LinkedIn and the blog are in professional English. Switching register for each one was part of what made the work slow.

Constraints

  • Drafts, not autopilot. I wanted every piece in front of me before it went out. The system should do the first draft of everything, not publish on my behalf.
  • Tools I already use. My topic list lives in a Google Sheet and my drafts live in Google Docs. A new app for either would have been one more thing to maintain.
  • One voice. Every output had to sound like the same person, with the same call to action, whichever format it was in.
02 / Approach

The Solution

I built the workflow in n8n around one decision: ask the model once, with a strict contract, and do everything else with plain code.

Architecture

The workflow is a single line of 11 nodes:

  1. Topic queue. Each topic is a row in a Google Sheet. When I mark a row READY and run the workflow, it picks that topic up. The topic title is the only input.
  2. One model call. A Google Gemini node receives the topic inside a long system prompt. The prompt asks for one JSON object with a fixed shape that covers every format, and it sets the rules for each: ten carousel slides with a character limit per slide, a reel with a shot list, a YouTube script with chapters, tags and thumbnail ideas, and the language for each channel. It also carries my brand block and tells the model to avoid false claims and phrase uncertain points as suggestions.
  3. Parse and flatten. A Code node strips any code fences from the reply, extracts the JSON and builds two things from it: one master document with every section, and the 12 per-format outputs.
  4. Documents. HTTP Request nodes call the Google Docs API to create the master doc and write its content, and a Google Drive node moves it into my content folder.
  5. Back to the sheet. The row is updated with the 12 outputs in their own columns, and its status is set to DONE.
  6. One doc per format. A second Code node splits the payload into 12 jobs, and the workflow creates one Google Doc per format in the same folder: 13 documents per topic in total.

Why these decisions

  • One call, strict JSON. Twelve separate model calls would mean twelve chances for the voice to drift. One request with a fixed shape keeps every format consistent and makes the rest of the workflow deterministic.
  • Code for the plumbing. Parsing, splitting and writing documents is ordinary JavaScript, so it behaves the same way every run and is easy to read later.
  • The sheet as the control panel. A status column is the simplest queue there is. I can see what is ready, what is done and what each topic produced without opening n8n.

What I built

  • The n8n workflow (manual trigger, Google Sheets, Gemini, two Code nodes, Google Docs and Drive steps).
  • The system prompt and its JSON contract for 12 formats across 7 channels: YouTube long and short, Instagram reel, post and carousel, Facebook post, Threads post, X post and thread, LinkedIn post and article, and a blog post.
  • The parsing code that turns one model reply into a master doc, 12 sheet cells and 12 per-format docs.
  • A public export of the workflow with a README, and a full video walkthrough.
03 / Impact

Results

Owner-reported result:

  • Time per topic: 6 hours → 30 minutes. The workflow writes every first draft; my time goes into reviewing and editing them. This is the same figure as on the project page.

What changed beyond the number:

  • Every topic now produces a complete set of drafts in one run, in the tools I already work in.
  • The voice and the call to action are the same across formats, because they come from one prompt.
  • Posting stays manual by design. The workflow hands me drafts; I decide what goes out and when.

Stack

  • n8n: runs the workflow, from the sheet read to the last document.
  • Google Gemini: one call per topic that returns the full JSON content pack.
  • Google Sheets: the topic queue and the place the 12 outputs are written back to.
  • Google Docs API: creates the master doc and the 12 per-format docs.
  • Google Drive: keeps every document for a topic in one folder.

What I learned

  • The contract matters more than the prompt's prose. Once the JSON shape was fixed, improving one format meant changing one part of the prompt, not rewriting the workflow.
  • Keep a human at the end. Drafts that I review are useful on every channel. Drafts that post themselves would have needed far more checking up front.
  • Small gaps show up in the edges. Building the per-format documents surfaced fields that the prompt and the document code didn't name the same way. The master doc and the sheet stayed correct; the per-format docs are where that kind of mismatch shows.

What I'd do next

Add an error branch and a check on the model's own validation block, so a malformed reply stops with a clear message instead of a half-written row. After that, a schedule trigger to process every READY topic, not one per run.

Share
Work with me
Have a problem like this one?

Tell me about the process that's slowing your team down. I'll tell you honestly whether automation, Salesforce or an AI agent is the right fix.