{
  "id": "xfzu4UvAezrhVTic",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "CreatorHub\u7528_WordPress_Blog_Automation_v1",
  "tags": [],
  "nodes": [
    {
      "id": "21c7a9b2-9221-47c0-86bb-df12999f0bcd",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -144,
        -320
      ],
      "parameters": {
        "width": 512,
        "height": 688,
        "content": "# WordPress SEO Blog Automation\n\nAutomatically generate and publish SEO-ready WordPress articles from a Google Sheets keyword list using OpenAI.\n\n## How it works\n1. Runs automatically on a schedule.\n2. Reads the next keyword from Google Sheets.\n3. Generates a Japanese SEO article with OpenAI.\n4. Publishes the article to WordPress.\n5. Updates the original Google Sheets row with the result.\n\n## Setup\n- Connect your Google Sheets credential.\n- Replace YOUR_GOOGLE_SHEET_ID with your spreadsheet ID.\n- Use a sheet named \"Keywords\".\n- Connect your OpenAI credential.\n- Connect your WordPress credential.\n\n## Customization\nAdjust the schedule, OpenAI prompt, article length, WordPress categories, and publishing status to fit your workflow."
      },
      "typeVersion": 1
    },
    {
      "id": "f774afa6-968a-43cc-9ccb-e9909a031a9b",
      "name": "Publish Article to WordPress",
      "type": "n8n-nodes-base.wordpress",
      "position": [
        1136,
        0
      ],
      "parameters": {
        "title": "={{ JSON.parse($('Generate SEO Article with OpenAI').item.json.output[0].content[0].text).title }}",
        "additionalFields": {
          "slug": "={{ JSON.parse($('Generate SEO Article with OpenAI').item.json.output[0].content[0].text).slug }}",
          "status": "publish",
          "content": "={{ JSON.parse($('Generate SEO Article with OpenAI').item.json.output[0].content[0].text).content_html }}",
          "categories": "={{ JSON.parse($('Generate SEO Article with OpenAI').item.json.output[0].content[0].text).category_id }}"
        }
      },
      "credentials": {
        "wordpressApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "12a0822a-fdf8-42ac-b54d-a5c6e3c1f978",
      "name": "Get Next Keyword from Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        624,
        0
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Keywords"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "YOUR_GOOGLE_SHEET_ID"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7,
      "alwaysOutputData": true
    },
    {
      "id": "58b76e68-0ab2-4099-b060-843e7aa4866a",
      "name": "Generate SEO Article with OpenAI",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        816,
        0
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini",
          "cachedResultName": "GPT-4O-MINI"
        },
        "options": {},
        "responses": {
          "values": [
            {
              "content": "=Create a Japanese SEO blog article for WordPress.\n\nReturn ONLY valid JSON.\nDo not wrap the JSON in markdown.\nDo not use ```json.\nDo not use code fences.\nReturn raw JSON only.\n\nGenerate all outputs in Japanese.\n\n{\n\"title\":\"\",\n\"slug\":\"\",\n\"category_id\":0,\n\"meta_description\":\"\",\n\"content_html\":\"\"\n}\n\nRules:\n\ntitle: Japanese SEO title, 30-45 Japanese characters.\nslug: short lowercase English slug using hyphens.\ncategory_id:\nIf the article is mainly about WordPress automation, return 2.\nIf the article is mainly a tutorial or beginner guide, return 3.\nIf the article is mainly about AI automation, return 4.\nIf the article is mainly about n8n workflows, return 5.\nIf the article is mainly a comparison, return 6.\nChoose the most appropriate category automatically based on the article topic.\nmeta_description: Japanese meta description, 100-140 Japanese characters.\ncontent_html: WordPress-ready HTML article.\ncontent_html must include h2 headings and paragraphs.\ncontent_html length: 1200-1800 Japanese characters.\nDo not include images.\nDo not include markdown.\nDo not include explanations outside JSON.\n\nWrite practical, experience-based content that helps readers solve a real problem.\nThe article should naturally lead readers toward automation using n8n and WordPress without being overly promotional.\n\nPrimary Keyword:\n{{ $json.Keyword }}"
            }
          ]
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "8036b865-3d55-495a-a17d-3ec55b6bf7c5",
      "name": "Update Publishing Status in Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1344,
        0
      ],
      "parameters": {
        "columns": {
          "value": {
            "Title": "={{ JSON.parse($('Generate SEO Article with OpenAI').item.json.output[0].content[0].text).title }}",
            "Status": "Published",
            "Keyword": "={{ $('Get Next Keyword from Google Sheets').item.json.Keyword }}",
            "PostURL": "={{ $('Publish Article to WordPress').first().json.link }}",
            "Category": "={{ JSON.parse($('Generate SEO Article with OpenAI').item.json.output[0].content[0].text).category_id }}",
            "Processed": "TRUE",
            "ProcessedDate": "={{ $now }}",
            "PublishedDate": "={{ $now }}"
          },
          "schema": [
            {
              "id": "Keyword",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Keyword",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Category",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Category",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "PostURL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "PostURL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "PublishedDate",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "PublishedDate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Processed",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Processed",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ProcessedDate",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "ProcessedDate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Keyword"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Keywords"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "=YOUR_GOOGLE_SHEET_ID"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "cd622d57-7409-4e1f-9316-882bd9a28933",
      "name": "Run Blog Automation on Schedule",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        432,
        0
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 25
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "929eb471-812b-4059-8eb7-62c903bef331",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        432,
        -80
      ],
      "parameters": {
        "color": 4,
        "width": 592,
        "content": "## 1. Generate SEO Article"
      },
      "typeVersion": 1
    },
    {
      "id": "0ab202de-cee3-4920-8f2d-005f2539849c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1120,
        -80
      ],
      "parameters": {
        "color": 5,
        "width": 336,
        "content": "## 2. Publish and Track"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "ea6a0d1a-5ee0-4ec3-9eba-3abe2a07404b",
  "nodeGroups": [],
  "connections": {
    "Publish Article to WordPress": {
      "main": [
        [
          {
            "node": "Update Publishing Status in Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Run Blog Automation on Schedule": {
      "main": [
        [
          {
            "node": "Get Next Keyword from Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate SEO Article with OpenAI": {
      "main": [
        [
          {
            "node": "Publish Article to WordPress",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Next Keyword from Google Sheets": {
      "main": [
        [
          {
            "node": "Generate SEO Article with OpenAI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}