Google Sheets to WordPress, posts published for you
Your content calendar isn’t failing because you “lack ideas.” It fails because turning ideas into finished WordPress posts is a grind of tiny steps, tiny decisions, and constant tab-switching.
Content marketers feel it when drafts stall. A solo founder feels it when “I’ll write this later” becomes “maybe next month.” And an SEO consultant feels it when clients want volume but workflows stay manual. This Sheets WordPress automation turns a simple spreadsheet row into a published post with an image, without babysitting the process.
You’ll learn what the workflow does, what you need to run it, and how to think about customizing it for your publishing rules.
How This Automation Works
Here’s the complete workflow you’ll be setting up:
n8n Workflow Template: Google Sheets to WordPress, posts published for you
flowchart LR
subgraph sg0["Form Trigger: Select Action Flow"]
direction LR
n0@{ icon: "mdi:database", form: "rounded", label: "Fetch Unprocessed Ideas", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Set Prompt", pos: "b", h: 48 }
n2["<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/wordpress.svg' width='40' height='40' /></div><br/>Create WordPress Post"]
n3["<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/>Upload Image"]
n4["<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/>Set Featured Image"]
n5@{ icon: "mdi:database", form: "rounded", label: "Update Google Sheet", pos: "b", h: 48 }
n6@{ icon: "mdi:robot", form: "rounded", label: "Generate Article AI", pos: "b", h: 48 }
n7@{ icon: "mdi:robot", form: "rounded", label: "Generate Image Keyword AI", pos: "b", h: 48 }
n8@{ icon: "mdi:brain", form: "rounded", label: "Gemini Model for Article", pos: "b", h: 48 }
n9@{ icon: "mdi:brain", form: "rounded", label: "Gemini Model for Image Keyword", 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/>Search Pexels Image"]
n11["<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/>Download Pexels Image"]
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/form.svg' width='40' height='40' /></div><br/>Form Trigger: Select Action"]
n13@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If Generate Content", pos: "b", h: 48 }
n14@{ icon: "mdi:database", form: "rounded", label: "Add Ideas to Sheet", pos: "b", h: 48 }
n15@{ icon: "mdi:robot", form: "rounded", label: "Generate Blog Topics AI", pos: "b", h: 48 }
n16["<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: Enter Topic for Ideas"]
n17["<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: Add More Topics?"]
n18@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If Add More Topics", pos: "b", h: 48 }
n19@{ icon: "mdi:brain", form: "rounded", label: "Gemini Model for Topics", pos: "b", h: 48 }
n20@{ icon: "mdi:robot", form: "rounded", label: "Parse AI Topic Output", pos: "b", h: 48 }
n21@{ icon: "mdi:swap-vertical", form: "rounded", label: "Split Topics", pos: "b", h: 48 }
n22["<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: End Idea Generation"]
n23["<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: End Post Generation"]
n1 --> n6
n21 --> n14
n3 --> n4
n14 --> n17
n18 --> n16
n18 --> n22
n4 --> n5
n6 --> n7
n13 --> n0
n13 --> n16
n10 --> n2
n5 --> n23
n2 --> n11
n11 --> n3
n20 -.-> n15
n17 --> n18
n0 --> n1
n19 -.-> n15
n15 --> n21
n8 -.-> n6
n7 --> n10
n12 --> n13
n16 --> n15
n9 -.-> n7
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 n12 trigger
class n6,n7,n15,n20 ai
class n8,n9,n19 aiModel
class n13,n18 decision
class n0,n5,n14 database
class n3,n4,n10,n11 api
classDef customIcon fill:none,stroke:none
class n2,n3,n4,n10,n11,n12,n16,n17,n22,n23 customIcon
Why This Matters: Publishing Consistently Without the Busywork
Most teams don’t struggle with writing. They struggle with finishing. An idea lives in a notes app, the draft half-exists in a doc, images get hunted down in a panic, and WordPress becomes the final boss with formatting, featured images, categories, and “did we already publish something like this?” Meanwhile your Google Sheet (if you have one) drifts out of date, so nobody trusts it. The worst part is the mental load. Every manual step invites “I’ll do it later,” and later quietly turns into never.
It adds up fast. Here’s where it breaks down in real life.
- Copying prompts, pasting drafts, and reformatting for WordPress burns about an hour per post, even when you’re “fast.”
- Image sourcing becomes a time sink because you’re searching blind, downloading files, then re-uploading them again.
- Spreadsheets become wishful thinking when the “Generated” or “Published” status is never updated reliably.
- Once you miss a week, the backlog grows and it’s harder to restart than it was to keep going.
What You’ll Build: Google Sheets → AI Draft → WordPress Post
This workflow uses Google Sheets as your content “source of truth,” then turns each approved idea into a complete WordPress post using Google Gemini and a relevant Pexels image. You start the process from a simple n8n form where you choose what you want to do: generate a post from an existing idea, or generate new topic ideas and add them to your sheet. If you choose post generation, n8n pulls the next row marked “Generated: no,” prepares a clean prompt, and has Gemini write the article. Then Gemini produces a short image search keyword, n8n finds a matching photo on Pexels, and WordPress receives the finished post plus a featured image. Finally, the sheet is updated with the post ID, title, and date so you can see what shipped.
The workflow starts with a form selection, so you can run it on demand without touching the editor. AI handles the writing and the image search term, then HTTP requests upload the media and set the featured image in WordPress. Google Sheets gets updated automatically, which means your tracker stays honest.
What You’re Building
| What Gets Automated | What You’ll Achieve |
|---|---|
|
|
Expected Results
Say you publish 3 posts per week. Manually, you might spend about 45 minutes writing a rough draft (or wrangling one), 15 minutes finding an image, and another 15 minutes formatting and setting the featured image in WordPress. Call it about 1 hour per post, so roughly 3 hours a week. With this workflow, you spend a couple minutes choosing “Generate content” and reviewing the output afterward, while n8n handles WordPress publishing and the Pexels image in the background. Most teams get back about 2 hours a week quickly.
Before You Start
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Google Sheets to store prompts and generation status
- WordPress to publish posts and upload media
- Google Gemini API key (get it from Google AI Studio)
- Pexels API key (get it from your Pexels account settings)
Skill level: Intermediate. You’ll connect a few accounts, paste API keys, and confirm your WordPress site URL and sheet columns match.
Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).
Step by Step
You choose an action from an n8n form. The workflow starts with “Select Action,” which lets you run content generation or idea generation without touching any nodes.
Your spreadsheet decides what’s next. If you generate content, n8n fetches the next row where “Generated” is set to “no,” then prepares the prompt so Gemini gets a clean, consistent input.
Gemini writes the article and suggests a photo search. One AI step generates the post body, another creates a tight keyword for image search, which is then used to query Pexels through HTTP Request nodes.
WordPress receives the post and the featured image. The workflow creates the post, uploads the chosen image to your media library, sets it as featured, and then updates Google Sheets with the post ID, title, and date. A final form confirms completion.
You can easily modify the prompt style to match your brand voice based on your needs. See the full implementation guide below for customization options.
Troubleshooting Tips
- Google Sheets credentials can expire or need specific permissions. If things break, check the Google account connected in n8n credentials and confirm the sheet is shared with it first.
- If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
- WordPress and Pexels API calls fail quietly when URLs or headers are slightly wrong. Confirm the WordPress site domain in the HTTP Request nodes and verify the Pexels Authorization header includes your API key.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Quick Answers
About 30 minutes once your accounts and sheet are ready.
No. You’ll connect Google Sheets and WordPress, then paste your Gemini and Pexels API keys into the right credential fields.
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 Google Gemini API costs and Pexels (typically free at reasonable usage).
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.
Yes, and you should. The quickest win is editing the prompts in the “Generate article AI” and “Generate blog topics AI” nodes to match your tone, formatting rules, and preferred headings. You can also swap Pexels for another image source by replacing the “Search Pexels image” and “Download Pexels image” HTTP Request nodes. Many teams add a “Draft” status first, then publish after review by changing the “Create WordPress post” settings.
Usually it’s credentials or the site URL. Re-check the WordPress API credentials used in the “Create WordPress post” and media upload requests, then confirm the domain in the HTTP Request nodes matches your actual WordPress address (and uses the right protocol). If uploads fail, it can also be blocked by security plugins or missing permissions for the API user. Rate limits are rare here, but they can show up if you run large batches.
On a typical n8n Cloud plan, you’re mainly limited by monthly executions; self-hosting removes that cap and your server becomes the limit.
Often, yes. This workflow has branching paths (generate posts vs generate ideas), structured AI output parsing for JSON topic lists, and multiple HTTP steps for media upload and featured image updates, which can get awkward or expensive in simpler tools. n8n also gives you the option to self-host, so high-volume publishing doesn’t automatically force a plan upgrade. Zapier or Make can still be fine if you only want a basic “row added → draft created” flow and you don’t care about image handling. If you’re torn, use Talk to an automation expert and describe your weekly publishing volume and review process.
Once this is running, your spreadsheet stops being a graveyard of “someday” ideas. It becomes a production line you can actually trust.
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.