AI生成LinkedIn投稿(人間による承認付き)

上級

これはSocial Media, Multimodal AI分野の自動化ワークフローで、19個のノードを含みます。主にCode, Merge, Filter, HttpRequest, GoogleSheetsなどのノードを使用。 GPT-4、GoToHuman、Blotatoを使用したAI生成LinkedIn投稿(人間による承認付き)

前提条件
  • ターゲットAPIの認証情報が必要な場合あり
  • Google Sheets API認証情報
  • OpenAI API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "meta": {
    "instanceId": "efb474b59b0341d7791932605bd9ff04a6c7ed9941fdd53dc4a2e4b99a6f9439",
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "cebd910c-6c4b-4ff4-95d8-a9bd7f2e6bf0",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        420,
        -40
      ],
      "parameters": {
        "color": 5,
        "width": 1200,
        "height": 1140,
        "content": "## ✅ Step 2 — Generate Caption with OpenAI\n\n### 1. Add Your OpenAI Credential\n- Go to **Credentials > OpenAI API**.\n- Paste your API key and save.\n- Make sure your model is set to `gpt-4.1` or similar.\n\n### 2. Workflow Logic\n- The `idea` is sent to an **AI Agent node**.\n- The prompt instructs the AI to generate a short, emoji-rich LinkedIn caption.\n- A **Parser node** structures the JSON output to extract just the caption.\n\n### 3. Save Caption\n- The AI-generated caption is written back to the Google Sheet in the `caption` column.\n- The `complete` column is also updated to “Yes”.\n\n---"
      },
      "typeVersion": 1
    },
    {
      "id": "b8a2624c-e353-47af-b2c7-81d74155499d",
      "name": "ツール:クリエイティビティ付与",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        800,
        760
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "e2be1cd1-158f-4599-ae5c-fbc0a39eb64e",
      "name": "パーサー:アイデアからJSONを抽出",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        980,
        760
      ],
      "parameters": {
        "jsonSchemaExample": "[\n  {\n    \"Caption\": \"\"\n  }\n]\n"
      },
      "typeVersion": 1.2
    },
    {
      "id": "f7456d62-8055-4d03-abc0-f4d633ca8e82",
      "name": "openai",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        620,
        780
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1",
          "cachedResultName": "gpt-4.1"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "ghJTvay8CvwXDsXz",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f962953e-7f69-454d-a904-c9813db3a6c4",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -580,
        -40
      ],
      "parameters": {
        "width": 980,
        "height": 1140,
        "content": "## ✅ Step 1 — Get Today’s Topic from Google Sheets\n\n### 1. Set Up Google Sheets Credential in n8n\n- Go to **Settings > Credentials > Google Sheets OAuth2**.\n- Authorize access to your Google account.\n- Make sure you’ve copied this Google Sheet:  \n  👉 [Copy this sheet](https://docs.google.com/spreadsheets/d/1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154/copy)\n\n### 2. Workflow Logic\n- A **Schedule Trigger** (or Manual Trigger for testing) runs daily.\n- A **Code Node** generates today’s date in ISO format.\n- The **Merge Node** filters to only return the row in the sheet that matches today’s date.\n- Result: You have today’s `idea` ready to process.\n\n---\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c539e883-f18d-49f3-980f-3b743145274a",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1640,
        -40
      ],
      "parameters": {
        "color": 3,
        "width": 320,
        "height": 1140,
        "content": "### 1. Set Up GoToHuman\n- Go to [GoToHuman](https://gotohuman.com) and create an account.\n- Create a **Review Template** for content approvals.\n- In n8n, add your **GoToHuman credential** under **Credentials**.\n- Use the **reviewTemplateId** from your template in the workflow node.\n\n### 2. Workflow Logic\n- The caption is sent to the **Ask Human for approval** node (GoToHuman).\n- The approver sees the caption and can choose to **Approve** or **Reject**.\n- A **Filter node** ensures the workflow only continues if the caption is approved.\n\n---"
      },
      "typeVersion": 1
    },
    {
      "id": "e39e9b93-f95e-4227-808f-031f30b4f579",
      "name": "付箋4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1980,
        -40
      ],
      "parameters": {
        "color": 4,
        "width": 380,
        "height": 1140,
        "content": "## ✅ Step 4 — Publish to LinkedIn via Blotato\n\n### 1. Set Up Blotato\n- Go to [Blotato](https://blotato.com) and create an account.\n- Generate a **Blotato API Key** and get your **Account ID**.\n- Paste these into the **HTTP Request node** under headers/body:\n  - Header: `blotato-api-key: YOUR_API_KEY`\n  - Body:\n    ```json\n    {\n      \"post\": {\n        \"accountId\": \"YOUR_ACCOUNT_ID\",\n        \"target\": { \"targetType\": \"linkedin\" },\n        \"content\": {\n          \"text\": \"{{ $('Ask Human for approval').item.json.responseValues.text.value }}\",\n          \"platform\": \"linkedin\",\n          \"mediaUrls\": []\n        }\n      }\n    }\n    ```"
      },
      "typeVersion": 1
    },
    {
      "id": "5e73c568-4158-422c-b045-c208a5dc018b",
      "name": "毎日のトリガー",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -420,
        480
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f9c4b8af-412d-4057-825b-9c07f3bf96be",
      "name": "テスト",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -460,
        740
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "719914a6-a513-4cb7-9e73-c04a68be4239",
      "name": "今日のアイデアを取得",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -120,
        540
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154/edit?usp=drivesdk",
          "cachedResultName": "SampleTopics"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "WsgMg14OYooIdvn7",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "5f200d10-1bf3-4325-945f-1f49e22a77ce",
      "name": "今日の日付を出力",
      "type": "n8n-nodes-base.code",
      "position": [
        40,
        660
      ],
      "parameters": {
        "jsCode": "const today = new Date();\ntoday.setHours(0, 0, 0, 0); // Normalize to start of day\n\nreturn [\n  {\n    json: {\n      today: today.toISOString().split('T')[0] // e.g., \"2025-07-30\"\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "7885628d-316a-4c9d-b6b2-0a476c289b03",
      "name": "今日のアイデアのみを保持",
      "type": "n8n-nodes-base.merge",
      "position": [
        180,
        440
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "advanced": true,
        "mergeByFields": {
          "values": [
            {
              "field1": "Date",
              "field2": "today"
            }
          ]
        }
      },
      "typeVersion": 3.2
    },
    {
      "id": "e1be8e6f-cf27-4afd-b817-819ec952de4d",
      "name": "AIエージェント:linkedin用のキャプションを作成",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        680,
        500
      ],
      "parameters": {
        "text": "=Idea:  {{ $json.idea }}",
        "options": {
          "systemMessage": "=your job is to expand on the idea and turn it into a social media post that will capture users attention. keep it to two sentances using emoji's\n\nOutupt like this. \n\n[\n  {\n    \"Caption\": \"\"\n  }\n]"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.9
    },
    {
      "id": "f138a0e6-aec9-4030-9567-c3b18e388270",
      "name": "googleスプレッドシートで完了をマーク",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1320,
        440
      ],
      "parameters": {
        "columns": {
          "value": {
            "Date": "={{ $('Get Today's Idea').item.json.Date }}",
            "complete": "Yes"
          },
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "idea",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "idea",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "caption",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "caption",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "complete",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "complete",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Date"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154/edit?usp=drivesdk",
          "cachedResultName": "SampleTopics"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "WsgMg14OYooIdvn7",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "148a16f9-7bc9-4bf2-8676-520c1fedce07",
      "name": "キャプションをgoogleスプレッドシートに保存",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1320,
        700
      ],
      "parameters": {
        "columns": {
          "value": {
            "Date": "={{ $('Get Today's Idea').item.json.Date }}",
            "caption": "={{ $json.output[0].Caption }}"
          },
          "schema": [
            {
              "id": "id",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "id",
              "defaultMatch": true,
              "canBeUsedToMatch": true
            },
            {
              "id": "Date",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "idea",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "idea",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "caption",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "caption",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "complete",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "complete",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "STATUS",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "STATUS",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Date"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oC3dbRkGF_bSIKuFKtSJsYS-ZypT2uk7jPsAni8y154/edit?usp=drivesdk",
          "cachedResultName": "SampleTopics"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "WsgMg14OYooIdvn7",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "78f79c4f-067d-4388-8a53-7b298d15c342",
      "name": "人による承認を要求",
      "type": "@gotohuman/n8n-nodes-gotohuman.gotoHuman",
      "position": [
        1680,
        420
      ],
      "webhookId": "6d42cd89-8e27-4747-8636-87d6adcd9f77",
      "parameters": {
        "fields": {
          "value": {
            "text": "={{ $json.caption }}"
          },
          "schema": [
            {
              "id": "text",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "text (text)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "text"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "additionalFields": {},
        "reviewTemplateID": {
          "__rl": true,
          "mode": "list",
          "value": "RoUEcfHxQX17pM8Roj7i",
          "cachedResultName": "My Review Step (RoUEcfHxQX17pM8Roj7i)"
        }
      },
      "credentials": {
        "gotoHumanApi": {
          "id": "DDAwJMAARwFCF0fA",
          "name": "gotoHuman account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "0e72f635-22b8-432a-b90f-4d9c0ad7a94f",
      "name": "承認されたもののみを保持",
      "type": "n8n-nodes-base.filter",
      "position": [
        1820,
        720
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "4966b55f-f10b-415a-bc81-f8fedfc60573",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.response }}",
              "rightValue": "approved"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "c433a60f-b108-42fe-9eb0-78bd280ab68c",
      "name": "Linkedinに投稿",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2140,
        700
      ],
      "parameters": {
        "url": "https://backend.blotato.com/v2/posts",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"post\": {\n    \"accountId\": \"your account id\",\n    \"target\": {\n      \"targetType\": \"linkedin\"\n    },\n    \"content\": {\n      \"text\": \"{{ $('Ask Human for approval').item.json.responseValues.text.value }}\",\n      \"platform\": \"linkedin\",\n      \"mediaUrls\": []\n    }\n  }\n}\n",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "headerParameters": {
          "parameters": [
            {
              "name": "blotato-api-key",
              "value": "your api key"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "91e7834b-4280-40e4-aad1-4015c21ef33a",
      "name": "付箋2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -580,
        -280
      ],
      "parameters": {
        "color": 6,
        "width": 2940,
        "height": 200,
        "content": "# 🤖 Automated LinkedIn Posting with OpenAI, GoToHuman, and Blotato\n\n## 📬 Need Help?\n\nMessage me on [LinkedIn](https://www.linkedin.com/in/robert-breen-29429625/) \nor email me at **robert@ynteractive.com**\n"
      },
      "typeVersion": 1
    }
  ],
  "pinData": {},
  "connections": {
    "f9c4b8af-412d-4057-825b-9c07f3bf96be": {
      "main": [
        [
          {
            "node": "719914a6-a513-4cb7-9e73-c04a68be4239",
            "type": "main",
            "index": 0
          },
          {
            "node": "5f200d10-1bf3-4325-945f-1f49e22a77ce",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f7456d62-8055-4d03-abc0-f4d633ca8e82": {
      "ai_languageModel": [
        [
          {
            "node": "e1be8e6f-cf27-4afd-b817-819ec952de4d",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "5e73c568-4158-422c-b045-c208a5dc018b": {
      "main": [
        [
          {
            "node": "719914a6-a513-4cb7-9e73-c04a68be4239",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "719914a6-a513-4cb7-9e73-c04a68be4239": {
      "main": [
        [
          {
            "node": "7885628d-316a-4c9d-b6b2-0a476c289b03",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5f200d10-1bf3-4325-945f-1f49e22a77ce": {
      "main": [
        [
          {
            "node": "7885628d-316a-4c9d-b6b2-0a476c289b03",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "0e72f635-22b8-432a-b90f-4d9c0ad7a94f": {
      "main": [
        [
          {
            "node": "c433a60f-b108-42fe-9eb0-78bd280ab68c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7885628d-316a-4c9d-b6b2-0a476c289b03": {
      "main": [
        [
          {
            "node": "e1be8e6f-cf27-4afd-b817-819ec952de4d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "78f79c4f-067d-4388-8a53-7b298d15c342": {
      "main": [
        [
          {
            "node": "0e72f635-22b8-432a-b90f-4d9c0ad7a94f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b8a2624c-e353-47af-b2c7-81d74155499d": {
      "ai_tool": [
        [
          {
            "node": "e1be8e6f-cf27-4afd-b817-819ec952de4d",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "148a16f9-7bc9-4bf2-8676-520c1fedce07": {
      "main": [
        [
          {
            "node": "78f79c4f-067d-4388-8a53-7b298d15c342",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e2be1cd1-158f-4599-ae5c-fbc0a39eb64e": {
      "ai_outputParser": [
        [
          {
            "node": "e1be8e6f-cf27-4afd-b817-819ec952de4d",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "e1be8e6f-cf27-4afd-b817-819ec952de4d": {
      "main": [
        [
          {
            "node": "148a16f9-7bc9-4bf2-8676-520c1fedce07",
            "type": "main",
            "index": 0
          },
          {
            "node": "f138a0e6-aec9-4030-9567-c3b18e388270",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級 - ソーシャルメディア, マルチモーダルAI

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

ワークフロー情報
難易度
上級
ノード数19
カテゴリー2
ノードタイプ13
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

作成者
Robert Breen

Robert Breen

@rbreen

Professional services consultant with over 10 years of experience solving complex business problems across industries. I specialize in n8n and process automation—designing custom workflows that integrate tools like Google Calendar, Airtable, GPT, and internal systems. Whether you need to automate scheduling, sync data, or streamline operations, I build solutions that save time and drive results.

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34