Airtable + Google Sheets: drafts ready to publish
Your content pipeline probably isn’t “hard.” It’s just annoying. Ideas live in one place, research is scattered, drafts are half-finished, and the final version still needs someone to copy, paste, format, and file it somewhere sensible.
Content managers feel this when deadlines stack up. A marketing lead feels it when quality starts to dip. And a solo operator running their own newsletter? Same mess, fewer hands. This content drafts automation turns one request into a ready-to-review blog draft in Airtable or a queued newsletter draft in Google Sheets.
Below, you’ll see exactly what the workflow produces, where it saves drafts, and how you can shape it to match your voice without babysitting every paragraph.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Airtable + Google Sheets: drafts ready to publish
flowchart LR
subgraph sg0["Form Intake Flow"]
direction LR
n0["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/form.svg' width='40' height='40' /></div><br/>Form Intake Trigger"]
n1@{ icon: "mdi:robot", form: "rounded", label: "Insight Gathering Agent", pos: "b", h: 48 }
n2@{ icon: "mdi:robot", form: "rounded", label: "Structure Drafting Agent", pos: "b", h: 48 }
n3@{ icon: "mdi:robot", form: "rounded", label: "Content Writing Agent", pos: "b", h: 48 }
n4@{ icon: "mdi:robot", form: "rounded", label: "Editorial Optimization Agent", pos: "b", h: 48 }
n5@{ icon: "mdi:brain", form: "rounded", label: "OpenRouter Chat Engine", pos: "b", h: 48 }
n6@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Content Type Router", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Blog Formatting Agent", pos: "b", h: 48 }
n8@{ icon: "mdi:robot", form: "rounded", label: "Newsletter Formatting Agent", pos: "b", h: 48 }
n9@{ icon: "mdi:brain", form: "rounded", label: "Gemini Chat Engine", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Create Feature Image"]
n11@{ icon: "mdi:cog", form: "rounded", label: "Image File Converter", pos: "b", h: 48 }
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/airtable.svg' width='40' height='40' /></div><br/>Store Blog in Airtable"]
n13@{ icon: "mdi:database", form: "rounded", label: "Append Newsletter Sheet", pos: "b", h: 48 }
n3 --> n4
n2 --> n3
n1 --> n2
n4 --> n6
n0 --> n1
n7 --> n10
n11 --> n12
n6 --> n7
n6 --> n8
n9 -.-> n7
n9 -.-> n8
n8 --> n13
n5 -.-> n1
n5 -.-> n2
n5 -.-> n3
n5 -.-> n4
n10 --> n11
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n1,n2,n3,n4,n7,n8 ai
class n5,n9 aiModel
class n6 decision
class n12,n13 database
class n10 api
classDef customIcon fill:none,stroke:none
class n0,n10,n12 customIcon
The Challenge: Drafts That Never Feel “Ready”
Publishing isn’t usually blocked by a lack of ideas. It’s blocked by the swamp between idea and “this is ready for review.” Someone has to gather sources, build an outline, write a first pass that doesn’t sound robotic, then edit for clarity and search intent. Then you still have the cleanup work: formatting for your CMS, creating a featured image, and making sure the draft ends up in the right place so the rest of the team can actually find it later. It’s easy to lose an afternoon to a single “simple” post.
And the friction compounds.
- Research ends up inconsistent because everyone has a different process and different standards for sources.
- Outlines get skipped when you’re rushing, which means edits take longer and the piece wanders.
- Drafts live in docs, Slack, email threads, and random folders, so review becomes a scavenger hunt.
- Formatting and “put it into Airtable/Sheets” is pure admin work, but it still steals focus from writing.
The Fix: Multi-Agent Draft Creation That Files Itself
This n8n workflow starts with a simple form submission (your topic, a few inputs, and the content type you want). From there, a chain of four specialized AI agents takes over: one gathers insights and sources, another turns those insights into a structure, a writer agent produces a full draft, and an editor agent tightens it up for readability and SEO. After the editorial pass, the workflow routes the content based on your selection. Blog drafts get formatted for publishing, a featured image is generated through OpenAI (DALL·E), and everything is stored in Airtable. Newsletter drafts take a separate formatting path and get appended to a Google Sheet, queued and ready for review or scheduling.
The workflow begins with your request and ends with a clean, review-ready draft in the tool you already use to manage work. Airtable becomes your blog draft database, and Google Sheets becomes your newsletter queue, so nothing disappears into someone’s browser tabs.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you publish 3 blog posts and 2 newsletters each week. Manually, even a “fast” process can look like 60 minutes to research and outline plus about 2 hours to write and edit, so you’re at roughly 15 hours weekly before you even count formatting and filing. With this workflow, your hands-on time is closer to 5 minutes per request to submit and skim the output, then the agents do the heavy lifting while you’re doing other work. You still review, of course, but you’re reviewing a draft that’s already in Airtable or queued in Sheets.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Airtable for storing blog drafts and metadata
- Google Sheets to queue newsletter drafts for review
- OpenRouter API key (get it from your OpenRouter dashboard)
- Google Gemini API key (get it from Google AI Studio)
- OpenAI API key (get it from the OpenAI API dashboard)
Skill level: Intermediate. You’ll be connecting accounts, adding API keys, and mapping a few fields into Airtable and Sheets.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
A form submission kicks things off. You enter the topic and choose “blog” or “newsletter,” so the automation knows what kind of output you want and where it should be stored.
Research and structure get built first. The Insight Gathering Agent collects key points and sources, then the Structure Drafting Agent turns that into an outline that’s easier to write from (and easier to edit later).
Writing and editing happen as two distinct passes. The Content Writing Agent produces the draft, then the Editorial Optimization Agent refines it for clarity and search intent using the connected language models (OpenRouter and Gemini).
The workflow routes the output to the right destination. If it’s a blog post, the Blog Formatting Agent prepares the content, DALL·E generates a featured image via an HTTP request, and the final draft is stored in Airtable. If it’s a newsletter, the formatting agent adapts it for email-style reading and appends it to Google Sheets.
You can easily modify the writing style and the storage fields to match your review process. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Form Trigger
Set up the intake form that starts the AI publishing pipeline with a topic and content type.
- Add and open Form Intake Trigger.
- Set Form Title to
SEO Blog & Newsletter Generator. - Set Form Description to
Generate high-quality, SEO-optimized blog posts and newsletters using AI. - Under Form Fields, configure a dropdown labeled Content Type with options
BlogandNewsletter, and add a required textarea labeled Topic.
$json['Content Type'] and $json.Topic to match the new labels.Step 2: Connect the AI Language Models
Attach the LLM providers used by the agents and ensure credentials are added to the model nodes (not the agent nodes).
- Open OpenRouter Chat Engine and set Model to
agentica-org/deepcoder-14b-preview:free. - Credential Required: Connect your openRouterApi credentials in OpenRouter Chat Engine.
- Open Gemini Chat Engine and leave default options unless you need a specific model override.
- Credential Required: Connect your googlePalmApi credentials in Gemini Chat Engine.
Step 3: Set Up the AI Content Generation Chain
Configure the multi-agent pipeline that researches, outlines, writes, and optimizes the content.
- In Insight Gathering Agent, keep the prompt as defined and ensure it references the form fields with
{{$json['Content Type']}}and{{$json.Topic}}. - In Structure Drafting Agent, ensure the prompt begins with
{{$json.output}}to pass along the research output. - In Content Writing Agent, confirm the prompt begins with
{{$json.output}}to expand the outline into a full draft. - In Editorial Optimization Agent, keep the prompt starting with
{{$json.output}}to polish the draft and add metadata. - Verify the execution flow runs in sequence: Form Intake Trigger → Insight Gathering Agent → Structure Drafting Agent → Content Writing Agent → Editorial Optimization Agent.
{{$json.output}} will fail. Keep prompt formats unchanged during testing.Step 4: Configure the Content Type Router and Parallel Formatting
Route optimized content into blog or newsletter formatting and configure the output formatting agents.
- Open Content Type Router and define rules that compare the submitted content type (e.g.,
BlogvsNewsletter) to route appropriately. - Confirm the parallel execution: Content Type Router outputs to both Blog Formatting Agent and Newsletter Formatting Agent in parallel.
- In Blog Formatting Agent, keep the prompt starting with
{{$json.output}}and ensure it outputstitle_column,blog_column,keywords,meta_description, andimage_prompt. - In Newsletter Formatting Agent, keep the prompt starting with
{{$json.output}}and ensure it outputstitle_column,content_html,content_plain, andpreview_text.
Step 5: Configure Media Generation and Blog Storage
Generate a feature image for blog posts and store the blog content in Airtable.
- Open Create Feature Image and keep URL set to
https://api.openai.com/v1/images/generationswith MethodPOST. - Set JSON Body to the provided payload and ensure the prompt uses
{{$json.output.image_prompt}}. - Credential Required: Connect your openAiApi credentials in Create Feature Image.
- In Image File Converter, set Operation to
toBinaryand Source Property todata[0].b64_json. - Set the file name to
=blog-featured-{{ $now.toFormat('yyyy-MM-dd-HHmmss') }}.pngand MIME Type toimage/png. - Open Store Blog in Airtable and map fields: Title to
{{$('Blog Formatting Agent').item.json.output.title_column}}, Status toDraft, Content to{{$('Blog Formatting Agent').item.json.output.blog_column}}, Keywords to{{$('Blog Formatting Agent').item.json.output.keywords}}, Created Date to{{$now.toISO()}}, and Meta Description to{{$('Blog Formatting Agent').item.json.output.meta_description}}. - Credential Required: Connect your airtableTokenApi credentials in Store Blog in Airtable.
[YOUR_ID], the workflow will fail. Replace them with your actual Airtable Base and Table IDs.Step 6: Configure Newsletter Storage in Google Sheets
Append the formatted newsletter output to your Google Sheets archive.
- Open Append Newsletter Sheet and select your target Document and Sheet (e.g.,
Newsletter Archive→Sheet1). - Set columns: Title to
{{$('Newsletter Formatting Agent').item.json.output.title_column}}, Status toReady to Send, Content HTML to{{$('Newsletter Formatting Agent').item.json.output.content_html}}, Created Date to{{$now.toFormat('yyyy-MM-dd HH:mm:ss')}}, Preview Text to{{$('Newsletter Formatting Agent').item.json.output.preview_text}}, and Content Plain to{{$('Newsletter Formatting Agent').item.json.output.content_plain}}. - Credential Required: Connect your googleSheetsOAuth2Api credentials in Append Newsletter Sheet.
Step 7: Test and Activate Your Workflow
Validate the full AI pipeline and then activate it for production use.
- Click Execute Workflow and submit the Form Intake Trigger with a sample Content Type and Topic.
- Confirm that Insight Gathering Agent through Editorial Optimization Agent generate outputs without errors.
- Verify that blog runs create an image via Create Feature Image and a record in Store Blog in Airtable, while newsletter runs append a row in Append Newsletter Sheet.
- Once successful, toggle the workflow to Active to enable production use.
Watch Out For
- Airtable credentials can expire or need specific permissions. If things break, check the Airtable personal access token scopes and the base/table IDs in “Store Blog in Airtable” first.
- If your featured image generation runs slow, processing times vary. Bump up the wait duration (or add one) if downstream nodes store an empty file or fail on missing binary data.
- Default prompts in the agent nodes are generic. Add your brand voice rules early in the Research or Outline prompts, or you will be editing tone on every single draft.
Common Questions
About an hour if your API keys and Airtable/Sheets are ready.
Yes, but you’ll want someone comfortable with connecting accounts and pasting API keys. No coding, just careful setup and testing.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in AI API costs (OpenRouter, Gemini, and OpenAI image generation), which vary based on how long your drafts are.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
Start by editing the prompts inside the four agent nodes (Insight Gathering, Structure Drafting, Content Writing, and Editorial Optimization) so the workflow learns your tone and constraints. You can swap models by changing the OpenRouter Chat Engine or Gemini Chat Engine connections, and you can skip images by disabling the “Create Feature Image” HTTP request path. Common tweaks include adding a “brand voice” section, forcing a house style for headings, and saving extra fields (keywords, CTA, author) into Airtable.
Most of the time it’s permissions: the token can’t write to the base, or the table ID is wrong. Re-check the base/table IDs in “Store Blog in Airtable,” then confirm your Airtable token scopes allow creating records. If it fails only on some runs, you may be sending a field value that doesn’t match the column type (like an array into a text field).
On n8n Cloud Starter, you can usually run a few thousand executions per month, which is plenty for most small teams generating drafts daily. If you self-host, there’s no execution cap; your limit is your server and the AI providers’ rate limits. The heavier constraint is often image generation and long-form drafts, so if you plan to run batches, space requests out and monitor your OpenRouter/Gemini quotas.
Often, yes, because multi-step agent chains, branching (blog vs newsletter), and file handling get awkward and expensive in simpler builders. n8n is also easier to customize when you want “real logic,” like routing, merging content, or swapping AI providers without rebuilding everything. Zapier or Make can still be fine for lightweight two-step workflows. If you’re unsure, Talk to an automation expert and get a quick recommendation based on volume and complexity.
This is what content ops should feel like: one clean request in, one clean draft out, stored where your team already works. Set it up once, then spend your energy on the parts humans are actually good at.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.