8
n8n 한국어amn8n.com

OpenAI->Ghost 블로그

중급

이것은Content Creation, Multimodal AI분야의자동화 워크플로우로, 8개의 노드를 포함합니다.주로 Code, HttpRequest, ScheduleTrigger, OpenAi 등의 노드를 사용하며. GPT-4 기반 자동화된 블로그 글 생성 및 Ghost CMS 게시

사전 요구사항
  • 대상 API의 인증 정보가 필요할 수 있음
  • OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "id": "ePvpXpyW3KKPjM4x",
  "meta": {
    "instanceId": "256e0224567a81ad2d19d67041dccb4aba84a3ec55947042e28c6efa76b21434"
  },
  "name": "OpenAI->Ghost Blog",
  "tags": [],
  "nodes": [
    {
      "id": "d3434c5a-8579-47cf-ac05-a4cfef3fd3c4",
      "name": "일정 트리거",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "hours",
              "hoursInterval": 12,
              "triggerAtMinute": 34
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "54953abf-38c2-4d1a-a4e2-13ee43a6e4db",
      "name": "OpenAI",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        220,
        0
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini-2025-04-14",
          "cachedResultName": "GPT-4.1-MINI-2025-04-14"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "Write a high-quality blog post on a creative or thought-provoking topic. The tone should be engaging and immersive. Length: 2–4 paragraphs.\n\nThen add a brief paragraph offering an alternative perspective or logical counterpoint.\n\nFinally, generate:\n- Blog post title\n- Meta description\n- 5 tags"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "63a4cf0d-1fdd-435c-a477-d6880590c42e",
      "name": "HTTP 요청1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1040,
        0
      ],
      "parameters": {
        "url": "https://yourcustomurl.com/ghost/api/admin/posts/",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ JSON.stringify($json) }}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "nodeCredentialType": "ghostAdminApi"
      },
      "credentials": {
        "ghostAdminApi": {
          "id": "pQKSsgQ9aBN9P1fA",
          "name": "Ghost - Transcripspiracy"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "4c460c9f-0074-4b9a-be5c-f0cfb8bae9bd",
      "name": "코드",
      "type": "n8n-nodes-base.code",
      "position": [
        600,
        0
      ],
      "parameters": {
        "jsCode": "const content = $json.message.content;\n\n// Extract Blog Post Title\nconst titleMatch = content.match(/\\*\\*Blog Post Title:\\*\\*\\s*(.+)/i);\nconst title = titleMatch ? titleMatch[1].trim() : 'Untitled';\n\n// Extract Meta Description\nconst metaMatch = content.match(/\\*\\*Meta Description:\\*\\*\\s*(.+)/i);\nconst meta = metaMatch ? metaMatch[1].trim() : '';\n\n// Extract Tags\nconst tagsMatch = content.match(/\\*\\*Tags:\\*\\*\\s*(.+)/i);\nconst rawTags = tagsMatch ? tagsMatch[1] : '';\nconst tags = rawTags.split(',').map(t => t.trim()).filter(t => t);\n\n// Strip metadata from the body\nconst body = content\n  .split('\\n\\n')\n  .filter(p => !/\\*\\*Blog Post Title:\\*\\*/i.test(p) && !/\\*\\*Meta Description:\\*\\*/i.test(p) && !/\\*\\*Tags:\\*\\*/i.test(p))\n  .join('\\n\\n');\n\n// Wrap in clean HTML\nconst html = `<div style=\"text-align:center; white-space:pre-line;\">${body.trim()}</div>`;\n\n// Return Ghost-compatible JSON\nreturn [\n  {\n    json: {\n      title,\n      html,\n      status: 'published',\n      tags,\n      meta_description: meta\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "cb384074-daf5-4945-adf6-40657498493d",
      "name": "코드1",
      "type": "n8n-nodes-base.code",
      "position": [
        820,
        0
      ],
      "parameters": {
        "jsCode": "const title = $json.title;\nconst status = $json.status || 'published';\nconst tags = ($json.tags || []).map(tag => ({ name: tag }));\n\n// Already wrapped with styling and line breaks — use as-is\nconst htmlContent = $json.html;\n\nconst mobiledoc = JSON.stringify({\n  version: '0.3.1',\n  atoms: [],\n  cards: [['html', { html: htmlContent }]],\n  markups: [],\n  sections: [[10, 0]]\n});\n\nreturn [\n  {\n    posts: [\n      {\n        title,\n        mobiledoc,\n        status,\n        tags\n      }\n    ]\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "59c2276c-1ea7-4c95-929f-4fd894289909",
      "name": "메모",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -180,
        -180
      ],
      "parameters": {
        "width": 280,
        "height": 140,
        "content": "🚀 This workflow runs every 12 hours and creates a blog post using OpenAI."
      },
      "typeVersion": 1
    },
    {
      "id": "842d8b2e-bc1c-43cd-9555-9117f1bdc5e1",
      "name": "메모1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        220,
        -200
      ],
      "parameters": {
        "content": "✍️ The AI generates content + metadata (title, tags, meta desc)."
      },
      "typeVersion": 1
    },
    {
      "id": "19550cb9-26ed-4aae-b17c-1d9e2a46db2a",
      "name": "메모2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        900,
        -240
      ],
      "parameters": {
        "content": "📤 Posts are sent to your Ghost CMS via authenticated API."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "d05670de-d0e0-4dfe-9338-2c219515e6d4",
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "Code1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code1": {
      "main": [
        [
          {
            "node": "HTTP Request1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "54953abf-38c2-4d1a-a4e2-13ee43a6e4db": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "54953abf-38c2-4d1a-a4e2-13ee43a6e4db",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

중급 - 콘텐츠 제작, 멀티모달 AI

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
중급
노드 수8
카테고리2
노드 유형5
난이도 설명

일정 경험을 가진 사용자를 위한 6-15개 노드의 중간 복잡도 워크플로우

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34