Skip to main content

Author and publish blog posts from Google Sheets

Workflow preview

Workflow preview
100%
Author and publish blog posts from Google Sheets preview
Open on n8n.io

Important notice

This workflow is provided as-is. Please review and test before using in production.

1. Workflow Overview

What it is: An automation to plan→draft→finalize and publish your textual blog post ideas to your wordpress blog Works in stages and hand back control to you in between those You can use a Google S...

Best for

  • Content Creation automation workflows
  • Multimodal AI automation workflows
  • advanced n8n builders looking for reusable templates

Tools used

n8n-nodes-base.set, n8n-nodes-base.scheduletrigger, n8n-nodes-base.manualtrigger, n8n-nodes-base.googlesheets, n8n-nodes-base.code, @n8n/n8n-nodes-langchain.lmchatopenai, n8n-nodes-base.if, @n8n/n8n-nodes-langchain.chainllm

Source and attribution

This workflow is cataloged by N8N Workflows and links back to its original n8n.io source page by Daniel Nolde.

Original n8n.io source

1.1 Workflow description

Title
Author and publish blog posts from Google Sheets
Workflow name
Author and publish blog posts from Google Sheets

What it is:

  • An automation to plan→draft→finalize and publish your textual blog post ideas to your wordpress blog
  • Works in stages and hand back control to you in between those
  • You can use a Google Spreadsheet for planning topics and configuring LLM models and prompts

What it does:

  • plans→drafts→finalizes blog post topics you specify in a Google Spreadsheet using an LLM with prompts that also ar configured in that spreadsheet (even which model to use)
  • savs the results in the corresponding columns of the "Schedule" sheet in the spreadsheet
  • hands control back to the user for inspecting or changing the results and for setting the next "Action" for th workflow
  • Finally publishes the blog post to your Wordpress instance

Limitations

  • Probably slightly over-engineered ;-)
  • No media generation yet
  • some LLM models don't work because of their output format

How it works:

  • The Workflow is triggered manually or scheduled every hour
  • It ingests a Google Spreadsheet to get
    • Config for prompts/context tc
    • Blog-Topics and their status and next action
  • Depending on each blog topics "Status" and "Action" it then either uses an LLM for th next action ("plan"→"draft"→"final" actions) or publishes the written content to your Wordpress instance ("publish" actions)

Set up steps:

  • Import the workflow
  • Make your own copy of the Google Spreadsheet
  • Update the credentials using your individual credentials for:
    • Google Spreadsheets
    • OpenRouter
  • Edit the "Settings" node and enter your individual values for
    • Your spreadsheet copy URL
    • Your wordpress blog URL
    • Your wordpress blog username
    • Your wordpress blog app password (a 4x4 alphanumeric sequence), that you probably have to create first, for which your wordpress user has to have 2-factor-authentication enabled.
  • In your own copy of the spreadsheet:
    • individualize the "Config" sheet's "Value" column for the prompts/context/etc
    • Populate the "Schedule" sheet with at least one line in which you specify
      • a "Topic"
      • a "Schedulded" date (YYYY-MM-DD HH:mm:ss)
      • a "Status" of "idea"
      • an "Action" of "plan" (to kick off that action)

1.2 Logical Blocks

This catalog entry is organized from the workflow JSON. The node-level section below shows the executable blocks available for review before importing the template.

2. Block-by-Block Analysis

Block 1 - Settings

Type / Role
n8n-nodes-base.set - set
Config choices
Version 3.4

Block 2 - ScheduleTrigger

Type / Role
n8n-nodes-base.scheduleTrigger - scheduleTrigger
Config choices
Version 1.2

Block 3 - ManualTrigger

Type / Role
n8n-nodes-base.manualTrigger - manualTrigger
Config choices
Version 1

Block 4 - Schedule

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.5

Block 5 - Config

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 6 - fetchConfig

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.5

Block 7 - AgentLLM

Type / Role
@n8n/n8n-nodes-langchain.lmChatOpenAi - lmChatOpenAi
Config choices
Version 1.1

Block 8 - IfScheduledNow

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 9 - PreparedData

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 10 - RecombinedDataRow

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 11 - SaveBackToSheet

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.5

Block 12 - IfActionPublish

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 13 - IfTakeAction

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 14 - IfPromptExists

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 15 - Basic LLM Chain

Type / Role
@n8n/n8n-nodes-langchain.chainLlm - chainLlm
Config choices
Version 1.5

Block 16 - CreatePost

Type / Role
n8n-nodes-base.httpRequest - httpRequest
Config choices
Version 4.2

Block 17 - SetToPublish

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.5

Block 18 - PrepareXmlPost

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 19 - HandleXMLRPCResponse

Type / Role
n8n-nodes-base.code - code
Config choices
Version 2

Block 20 - PostingSuccessful

Type / Role
n8n-nodes-base.if - if
Config choices
Version 2.2

Block 21 - LogStatus

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.5

Block 22 - LogPublished

Type / Role
n8n-nodes-base.googleSheets - googleSheets
Config choices
Version 4.5

Block 23 - Sticky Note

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Block 24 - Sticky Note1

Type / Role
n8n-nodes-base.stickyNote - stickyNote
Config choices
Version 1

Showing the first 24 of 35 workflow blocks. Download the JSON for the full node graph.

3. Summary Table

Workflow Author and publish blog posts from Google Sheets
Complexity advanced
Nodes 35
Categories Content Creation, Multimodal AI
Author Daniel Nolde
Published 10 Feb 2025

4. Reproducing the Workflow from Scratch

  1. 1. Download the workflow JSON

    Use the JSON export at /data/workflows/2873/2873.json as the source template for this automation.

  2. 2. Import the template into n8n

    Open n8n, import the downloaded JSON, and review each node before activating the workflow.

  3. 3. Configure credentials and variables

    Replace placeholder credentials, API keys, webhook URLs, account IDs, and environment-specific values with your own settings.

  4. 4. Test with sample data

    Run the workflow manually or in a staging workspace, inspect node output, and confirm downstream systems receive the expected data.

  5. 5. Activate and monitor

    Enable the workflow only after testing, then monitor executions, errors, and rate limits during the first production runs.

5. General Notes & Resources

Review imported nodes carefully before activation. This catalog entry is intended to help you inspect the workflow structure, understand required services, and find related templates faster.

Node names, credentials, schedules, webhook paths, and external service limits may need adjustment for your workspace.

Frequently asked questions

What does Author and publish blog posts from Google Sheets do?

What it is: An automation to plan→draft→finalize and publish your textual blog post ideas to your wordpress blog Works in stages and hand back control to you in between those You can use a Google S...

What do I need before importing this workflow?

Review the workflow JSON, configure any required credentials in n8n, and test the automation in a safe workspace before using it in production.

Can I customize this workflow?

Yes. Use the block-by-block analysis and the downloadable JSON to inspect each node, then adjust credentials, prompts, schedules, filters, or destinations for your Content Creation, Multimodal AI use case.