Create and publish SEO blog posts using Google Sheets, Gemini/OpenAI, Ideogram, and WordPress

Go to Workflow
21 views
Built by Incrementors Incrementors
Created on June 05, 2026

Description

This workflow automates the complete blog publishing process. It removes manual work from content creation, image generation, category management, and WordPress publishing by using AI and n8n. It helps agencies, SEO teams, and content creators manage blogs at scale.

Key Features

Scheduled or manual blog publishing
Automated topic research and content writing
AI-generated featured and in-content images using Ideogram
Dynamic WordPress category detection and creation
Automatic media upload with SEO-friendly alt text
Internal linking using sitemap data
Google Sheets logging for published URLs
Error notifications for failed executions

What This Workflow Does

Input

Blog topics or keywords stored in Google Sheets
Target WordPress site details
Publishing rules and schedule

Processing

Triggers the workflow on a schedule or manual run
Fetches blog posting data from Google Sheets
Validates active projects or websites
Performs topic and SEO research
Writes long-form, SEO-optimized blog content
Generates image prompts and creates images using Ideogram
Uploads images to WordPress with alt text
Detects or creates blog categories dynamically
Publishes the blog post to WordPress

Output

Live published blog post URL
Updated Google Sheet with publishing details
Notification alerts if any step fails

Setup Instructions

Prerequisites

n8n instance (cloud or self-hosted)
WordPress site with REST API access
Google Sheets access
AI model credentials (Google Gemini, OpenAI, or DeepSeek)
Ideogram API access
Notification service (Discord or Slack)

Step 1: Import the Workflow

Download or copy the workflow JSON
In n8n, go to Workflows → Import from file / JSON
Import the workflow

Step 2: Configure Credentials

Set up the required credentials inside n8n's credential manager:

Google Sheets OAuth**: For reading posting data and saving URLs
WordPress API**: For publishing posts and uploading media
AI Model**: Connect Google Gemini, OpenAI, or DeepSeek
Ideogram API**: For AI image generation
Discord/Slack Webhook**: For error notifications

Important: No credentials are hardcoded. All must be connected via n8n's credential manager.

Step 3: Configure Google Sheets

Prepare a Google Sheet containing:

Blog topic or keyword
Target website or domain
Publishing status fields
Domain ID for tracking

Update the Sheet ID inside the Get_Post_Data node after import.

Step 4: Configure Website Access

Update the PBN_Website_Access node with your WordPress site access endpoint or API. This node should return:

Complete WordPress URL
Basic authentication token
Sitemap post URL

Step 5: Configure Publishing & Schedule

Adjust the Schedule Trigger if auto-publishing is required
Modify publishing frequency or time zone
Review WordPress post status (draft or publish)

Step 6: Test & Activate

Add one test row in Google Sheets
Run the workflow manually
Verify:
Content creation
Image generation
WordPress publishing
Sheet updates
Activate the workflow

Usage Guide

Adding New Blog Posts

Add a new row in the connected Google Sheet with the required blog topic and website details. The workflow will automatically process and publish the post on the next execution.

Understanding the Output

After execution, the workflow:

Publishes a complete blog post on WordPress
Attaches featured and in-content images
Assigns the correct category
Logs the live URL back to Google Sheets

Workflow Node Breakdown

Get_Post_Data
Fetches blog posting details from Google Sheets based on the current day. It pulls keywords, landing pages, domain IDs, and posting websites.

get_client_status
Checks the client's project status from the project sheet. It verifies whether the client is active or inactive before proceeding further. This prevents publishing content for paused or stopped clients.

PBN_Website_Access
Fetches WordPress website access details such as site URL, authentication token, and sitemap URL. These details are required for publishing posts, uploading images, and managing categories.

Do the Research on the Topic
Performs deep SEO research on the target keyword. It analyzes search intent, content gaps, and audience needs. This ensures the generated content is informative, relevant, and SEO-optimized.

sitemap_crawl (internal_linking)
Crawls the website sitemap to collect internal URLs. These URLs are later used for internal linking inside the blog content. Internal links help improve SEO and site structure.

write_content
Uses AI to write an 800-1000 word SEO-optimized blog article based on research data. The content includes proper HTML formatting, internal links, and anchor keyword placement.

extract_title_body
Separates the H1 title from the blog body content for proper WordPress publishing format.

classify_category
Automatically determines the most suitable category for the blog post by analyzing the blog title and content context. This keeps the website's category structure clean and relevant.

get_category & create_category
Checks if the determined category exists in WordPress. If not, it creates a new category automatically.

generate_image_prompt
Analyzes the blog content and generates AI prompts for creating relevant images including thumbnail and in-content images.

Thumbnail Image Generator & Blog Image Generator
Generate high-quality images using Ideogram API based on AI-generated prompts. Images are created with proper resolution and rendering settings.

Thumbnail Uploading & Blog Image Uploading
Upload generated images to WordPress media library and retrieve media IDs for post attachment.

Add Alt Text in Images
Adds SEO-friendly alt text to uploaded images to improve accessibility and search engine optimization.

Blog and Photo Merge
Merges the generated images into the blog content at appropriate positions within the article.

publish_blog
Publishes the complete blog post to WordPress with title, content, category, featured image, and publish status.

save_live_url
Saves the live published blog URL back into Google Sheets along with keyword, website URL, and timestamp for tracking and reporting.

If Error Existed Then Get Notified
Sends instant Discord or Slack notifications when any error occurs during workflow execution, ensuring no failure goes unnoticed.

Customization Options

Change blog length or tone in the content generation node
Modify image style or resolution in Ideogram nodes
Add multi-site publishing using Switch nodes
Replace notification channel (Discord to Slack or Email)
Extend workflow to social media posting

Troubleshooting

Blog not published
Check WordPress credentials and REST API permissions.

Images not generated
Verify Ideogram API credentials and prompt formatting.

Sheet not updating
Ensure correct Sheet ID and OAuth permissions.

Workflow stopped
Review execution logs and error notification messages.

Use Cases

SEO blog automation for agencies
Content publishing for niche websites
Scalable blog management
AI-assisted content operations
Hands-free WordPress publishing

Final Notes

This workflow is designed to be reusable, scalable, and creator-friendly. It follows n8n best practices, avoids hardcoded credentials, and is suitable for public sharing as a workflow template.

For any questions or support, please contact:
[email protected] or fill out this form: https://www.incrementors.com/contact-us/

Nodes Used (9)

AI Agent
@n8n/n8n-nodes-langchain.agent
Code
n8n-nodes-base.code
DeepSeek Chat Model
@n8n/n8n-nodes-langchain.lmChatDeepSeek
Discord
n8n-nodes-base.discord
Google Gemini Chat Model
@n8n/n8n-nodes-langchain.lmChatGoogleGemini
Google Sheets
n8n-nodes-base.googleSheets
HTTP Request
n8n-nodes-base.httpRequest
OpenAI Chat Model
@n8n/n8n-nodes-langchain.lmChatOpenAi
Structured Output Parser
@n8n/n8n-nodes-langchain.outputParserStructured