AIによるフォーマット処理を使用してMarkdownコンテンツをContentfulフォーマットに変換

中級

これはEngineering, AI分野の自動化ワークフローで、12個のノードを含みます。主にCode, Merge, HttpRequest, Agent, LmChatOpenAiなどのノードを使用、AI技術を活用したスマート自動化を実現。 AIによる書式設定を使用してMarkdownコンテンツをContentfulの豊富なテキストに変換

前提条件
  • ターゲットAPIの認証情報が必要な場合あり
  • OpenAI API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "id": "uIREtTV8TRuF3lru",
  "meta": {
    "instanceId": "6bcff5ef8a06e8086902526a05c2a4c7bf5da8101f89e582301ed78094606f40"
  },
  "name": "Convert Markdown Content to Contentful Rich Text with AI Formatting.",
  "tags": [
    {
      "id": "NEDxtCyOlsLSVNBI",
      "name": "Formatter",
      "createdAt": "2025-05-17T10:41:27.012Z",
      "updatedAt": "2025-05-17T10:41:27.012Z"
    },
    {
      "id": "B6FHhLBUZRavCehy",
      "name": "Content Creation",
      "createdAt": "2025-05-17T10:41:40.276Z",
      "updatedAt": "2025-05-17T10:41:40.276Z"
    }
  ],
  "nodes": [
    {
      "id": "f50b2f81-d9b4-4206-a18c-a02573afe8e7",
      "name": "新規フォーマット済みContentfulエントリー作成",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1680,
        240
      ],
      "parameters": {
        "url": "=https://api.contentful.com/spaces/{INSERT_YOUR_SPACE}/environments/master/entries",
        "method": "POST",
        "options": {},
        "jsonBody": "={{ $json }}",
        "sendBody": true,
        "jsonHeaders": "{\n  \"Authorization\": \"Bearer {INSERT TOKEN HERE}\",\n  \"Content-Type\": \"application/vnd.contentful.management.v1+json\",\n  \"X-Contentful-Version\": \"2\",  \n  \"X-Contentful-Content-Type\": \"knowledgeBaseArticle\"\n}",
        "sendHeaders": true,
        "specifyBody": "json",
        "specifyHeaders": "json"
      },
      "typeVersion": 4.2
    },
    {
      "id": "d2d8efbc-3914-4c9b-98fe-566c1843f58d",
      "name": "別ワークフロー実行時",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        -380,
        20
      ],
      "parameters": {
        "inputSource": "jsonExample",
        "jsonExample": "{\n  \"title\": \"...\",\n  \"slug\": \"...\",\n  \"category\": {\n    \"id\": \"...\"\n  },\n  \"description\": \"...\",\n  \"keywords\": [\"keyword1\", \"keyword2\"],\n  \"content\": \"...\",\n  \"metaTitle\": \"...\",\n  \"metaDescription\": \"...\",\n  \"readingTime\": \"...\",\n  \"difficulty\": \"...\"\n}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "57960c96-94ce-43d1-83b8-d6417b79373a",
      "name": "マージ1",
      "type": "n8n-nodes-base.merge",
      "position": [
        1020,
        240
      ],
      "parameters": {},
      "typeVersion": 3
    },
    {
      "id": "f304bcec-2150-4767-95a9-38c1e98e2c52",
      "name": "フォーマット1",
      "type": "n8n-nodes-base.code",
      "position": [
        1360,
        240
      ],
      "parameters": {
        "jsCode": "// Get all items passed into this node as an array\nconst items = $input.all();\n\n\n// If you always have at least two items:\nconst firstItem = items[0].json;\nconst secondItem = items[1].json;\n\n// Overwrite the first item’s “content” with the second item’s “content”\nfirstItem.content = secondItem.content;\n\nreturn [\n  {\n    json: {\n      fields: {\n        title: { \"en-US\": firstItem.title },\n        slug: { \"en-US\": firstItem.slug },\n        category: {\n          \"en-US\": {\n            sys: {\n              type: \"Link\",\n              linkType: \"Entry\",\n              id: firstItem.category.id\n            }\n          }\n        },\n        description: { \"en-US\": firstItem.description },\n        keywords: { \"en-US\": firstItem.keywords },\n        content: {\n          \"en-US\": {\n            nodeType: \"document\",\n            data: {},\n            content: firstItem.content\n          }\n        },\n        metaTitle: { \"en-US\": firstItem.metaTitle },\n        metaDescription: { \"en-US\": firstItem.metaDescription },\n        readingTime: { \"en-US\": firstItem.readingTime },\n        difficulty: { \"en-US\": firstItem.difficulty }\n      }\n    }\n  }\n];"
      },
      "typeVersion": 2
    },
    {
      "id": "85edaba2-c42b-4ca8-af84-080255dd93d3",
      "name": "MarkdownからContentful形式へ",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        340,
        380
      ],
      "parameters": {
        "text": "=Here is the markdown content to convert:\n\n{{ $json.contentChunk }}",
        "options": {
          "systemMessage": "=You are a npm package which takes markdown and converts it to valid Contentful Rich Text\n\nHere are some examples of input to output:\n\nAdditional Rules to Avoid Validation Errors:\n\nEnsure every single node, especially heading and paragraph types, includes the \"data\": {} property explicitly. Do NOT omit \"data\" even if it is empty.\n\nValidate that each text, inline, or block element consistently adheres to this structure:\n\n{\n  \"nodeType\": \"<type>\",\n  \"data\": {},\n  \"content\": [\n    {\n      \"nodeType\": \"<childType>\",\n      \"value\": \"<textValue>\",\n      \"marks\": [],\n      \"data\": {}\n    }\n  ]\n}\nFor elements like text nodes, always explicitly include \"data\": {} alongside \"marks\": [] even if they are empty arrays or objects.\n\nDo not output nodes without the complete structure specified above, as this can cause validation failures in Contentful.\n\nConfirm explicitly that \"content\": [] is included, even if empty, for nodes that require it (e.g., embedded-asset-block, hr, etc.).\n\nNever output incomplete nodes missing \"data\" or \"content\".\n\nExample of Correct Minimal Node Structure:\n\n{\n  \"nodeType\": \"paragraph\",\n  \"data\": {},\n  \"content\": [\n    {\n      \"nodeType\": \"text\",\n      \"value\": \"Your text here.\",\n      \"marks\": [],\n      \"data\": {}\n    }\n  ]\n}\n\nAlways strictly follow this guidance to ensure successful content publishing and avoid repeated validation errors.\n\n1. Paragraphs\n\nMarkdown:\n\nThis is a paragraph of text.\n\nContentful Rich Text JSON:\n\n{\n  \"nodeType\": \"document\",\n  \"data\": {},\n  \"content\": [\n    {\n      \"nodeType\": \"paragraph\",\n      \"data\": {},\n      \"content\": [\n        {\n          \"nodeType\": \"text\",\n          \"value\": \"This is a paragraph of text.\",\n          \"marks\": [],\n          \"data\": {}\n        }\n      ]\n    }\n  ]\n}\n2. Headings\n\nMarkdown:\n\n# Heading Level 1\n## Heading Level 2\n### Heading Level 3\n\nContentful Rich Text JSON:\n\n{\n  \"nodeType\": \"document\",\n  \"data\": {},\n  \"content\": [\n    {\n      \"nodeType\": \"heading-1\",\n      \"data\": {},\n      \"content\": [\n        {\n          \"nodeType\": \"text\",\n          \"value\": \"Heading Level 1\",\n          \"marks\": [],\n          \"data\": {}\n        }\n      ]\n    },\n    {\n      \"nodeType\": \"heading-2\",\n      \"data\": {},\n      \"content\": [\n        {\n          \"nodeType\": \"text\",\n          \"value\": \"Heading Level 2\",\n          \"marks\": [],\n          \"data\": {}\n        }\n      ]\n    },\n    {\n      \"nodeType\": \"heading-3\",\n      \"data\": {},\n      \"content\": [\n        {\n          \"nodeType\": \"text\",\n          \"value\": \"Heading Level 3\",\n          \"marks\": [],\n          \"data\": {}\n        }\n      ]\n    }\n  ]\n}\n\n3. Bold and Italic Text\n\nMarkdown:\n\n**Bold Text**\n*Italic Text*\n\nContentful Rich Text JSON:\n\n{\n  \"nodeType\": \"document\",\n  \"data\": {},\n  \"content\": [\n    {\n      \"nodeType\": \"paragraph\",\n      \"data\": {},\n      \"content\": [\n        {\n          \"nodeType\": \"text\",\n          \"value\": \"Bold Text\",\n          \"marks\": [\n            {\n              \"type\": \"bold\"\n            }\n          ],\n          \"data\": {}\n        }\n      ]\n    },\n    {\n      \"nodeType\": \"paragraph\",\n      \"data\": {},\n      \"content\": [\n        {\n          \"nodeType\": \"text\",\n          \"value\": \"Italic Text\",\n          \"marks\": [\n            {\n              \"type\": \"italic\"\n            }\n          ],\n          \"data\": {}\n        }\n      ]\n    }\n  ]\n}\n4. Lists\n\nMarkdown:\n\n- Unordered Item 1\n- Unordered Item 2\n\n1. Ordered Item 1\n2. Ordered Item 2\n\nContentful Rich Text JSON:\n\n{\n  \"nodeType\": \"document\",\n  \"data\": {},\n  \"content\": [\n    {\n      \"nodeType\": \"unordered-list\",\n      \"data\": {},\n      \"content\": [\n        {\n          \"nodeType\": \"list-item\",\n          \"data\": {},\n          \"content\": [\n            {\n              \"nodeType\": \"paragraph\",\n              \"data\": {},\n              \"content\": [\n                {\n                  \"nodeType\": \"text\",\n                  \"value\": \"Unordered Item 1\",\n                  \"marks\": [],\n                  \"data\": {}\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"nodeType\": \"list-item\",\n          \"data\": {},\n          \"content\": [\n            {\n              \"nodeType\": \"paragraph\",\n              \"data\": {},\n              \"content\": [\n                {\n                  \"nodeType\": \"text\",\n                  \"value\": \"Unordered Item 2\",\n                  \"marks\": [],\n                  \"data\": {}\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    },\n    {\n      \"nodeType\": \"ordered-list\",\n      \"data\": {},\n      \"content\": [\n        {\n          \"nodeType\": \"list-item\",\n          \"data\": {},\n          \"content\": [\n            {\n              \"nodeType\": \"paragraph\",\n              \"data\": {},\n              \"content\": [\n                {\n                  \"nodeType\": \"text\",\n                  \"value\": \"Ordered Item 1\",\n                  \"marks\": [],\n                  \"data\": {}\n                }\n              ]\n            }\n          ]\n        },\n        {\n          \"nodeType\": \"list-item\",\n          \"data\": {},\n          \"content\": [\n            {\n              \"nodeType\": \"paragraph\",\n              \"data\": {},\n              \"content\": [\n                {\n                  \"nodeType\": \"text\",\n                  \"value\": \"Ordered Item 2\",\n                  \"marks\": [],\n                  \"data\": {}\n                }\n              ]\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}\n5. Links\n\nMarkdown:\n\n[Contentful](https://www.contentful.com)\n\nContentful Rich Text JSON:\n\n{\n  \"nodeType\": \"document\",\n  \"data\": {},\n  \"content\": [\n    {\n      \"nodeType\": \"paragraph\",\n      \"data\": {},\n      \"content\": [\n        {\n          \"nodeType\": \"hyperlink\",\n          \"data\": {\n            \"uri\": \"https://www.contentful.com\"\n          },\n          \"content\": [\n            {\n              \"nodeType\": \"text\",\n              \"value\": \"Contentful\",\n              \"marks\": [],\n              \"data\": {}\n            }\n          ]\n        }\n      ]\n    }\n  ]\n}\n6. Images\n\nMarkdown:\n\n![Alt text](https://www.example.com/image.jpg)\n\nContentful Rich Text JSON:\n\n{\n  \"nodeType\": \"document\",\n  \"data\": {},\n  \"content\": [\n    {\n      \"nodeType\": \"embedded-asset-block\",\n      \"data\": {\n        \"target\": {\n          \"sys\": {\n            \"id\": \"asset-id\",\n            \"type\": \"Link\",\n            \"linkType\": \"Asset\"\n          }\n        }\n      },\n      \"content\": []\n    }\n  ]\n}\n\nRules:\n- The output must be valid Rich Text based on the specifications\n- Do not make up any new types, only use the information that is available\n- Do not output anything else besides the Contetnful RIch Text JSON in the format specified above\n- Do not include ```json before the output. The output needs to be parseable JSON\n- You must include a node to account for every single work in the input. DO NOT exclude any data from the input\n\nHere are all the possible types:\n\nimport { BLOCKS } from './blocks';\nimport { INLINES } from './inlines';\nimport { Block, Inline, ListItemBlock, Text } from './types';\n\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype EmptyNodeData = {};\n// BLOCKS\n\n// Heading\nexport interface Heading1 extends Block {\n  nodeType: BLOCKS.HEADING_1;\n  data: EmptyNodeData;\n  content: Array<Inline | Text>;\n}\n\nexport interface Heading2 extends Block {\n  nodeType: BLOCKS.HEADING_2;\n  data: EmptyNodeData;\n  content: Array<Inline | Text>;\n}\n\nexport interface Heading3 extends Block {\n  nodeType: BLOCKS.HEADING_3;\n  data: EmptyNodeData;\n  content: Array<Inline | Text>;\n}\n\nexport interface Heading4 extends Block {\n  nodeType: BLOCKS.HEADING_4;\n  data: EmptyNodeData;\n  content: Array<Inline | Text>;\n}\n\nexport interface Heading5 extends Block {\n  nodeType: BLOCKS.HEADING_5;\n  data: EmptyNodeData;\n  content: Array<Inline | Text>;\n}\n\nexport interface Heading6 extends Block {\n  nodeType: BLOCKS.HEADING_6;\n  data: EmptyNodeData;\n  content: Array<Inline | Text>;\n}\n\n// Paragraph\nexport interface Paragraph extends Block {\n  nodeType: BLOCKS.PARAGRAPH;\n  data: EmptyNodeData;\n  content: Array<Inline | Text>;\n}\n\n// Quote\nexport interface Quote extends Block {\n  nodeType: BLOCKS.QUOTE;\n  data: EmptyNodeData;\n  content: Paragraph[];\n}\n// Horizontal rule\nexport interface Hr extends Block {\n  nodeType: BLOCKS.HR;\n  /**\n   *\n   * @maxItems 0\n   */\n  data: EmptyNodeData;\n  content: Array<Inline | Text>;\n}\n\n// OL\nexport interface OrderedList extends Block {\n  nodeType: BLOCKS.OL_LIST;\n  data: EmptyNodeData;\n  content: ListItem[];\n}\n// UL\nexport interface UnorderedList extends Block {\n  nodeType: BLOCKS.UL_LIST;\n  data: EmptyNodeData;\n  content: ListItem[];\n}\n\nexport interface ListItem extends Block {\n  nodeType: BLOCKS.LIST_ITEM;\n  data: EmptyNodeData;\n  content: ListItemBlock[];\n}\n\n// taken from graphql schema-generator/contentful-types/link.ts\nexport interface Link<T extends string = string> {\n  sys: {\n    type: 'Link';\n    linkType: T;\n    id: string;\n  };\n}\n\nexport interface ResourceLink {\n  sys: {\n    type: 'ResourceLink';\n    linkType: 'Contentful:Entry';\n    urn: string;\n  };\n}\n\nexport interface EntryLinkBlock extends Block {\n  nodeType: BLOCKS.EMBEDDED_ENTRY;\n  data: {\n    target: Link<'Entry'>;\n  };\n  /**\n   *\n   * @maxItems 0\n   */\n  content: Array<Inline | Text>;\n}\n\nexport interface AssetLinkBlock extends Block {\n  nodeType: BLOCKS.EMBEDDED_ASSET;\n  data: {\n    target: Link<'Asset'>;\n  };\n  /**\n   *\n   * @maxItems 0\n   */\n  content: Array<Inline | Text>;\n}\n\nexport interface ResourceLinkBlock extends Block {\n  nodeType: BLOCKS.EMBEDDED_RESOURCE;\n  data: {\n    target: ResourceLink;\n  };\n  /**\n   *\n   * @maxItems 0\n   */\n  content: Array<Inline | Text>;\n}\n\n// INLINE\n\nexport interface EntryLinkInline extends Inline {\n  nodeType: INLINES.EMBEDDED_ENTRY;\n  data: {\n    target: Link<'Entry'>;\n  };\n  /**\n   *\n   * @maxItems 0\n   */\n  content: Text[];\n}\n\nexport interface ResourceLinkInline extends Inline {\n  nodeType: INLINES.EMBEDDED_RESOURCE;\n  data: {\n    target: ResourceLink;\n  };\n  /**\n   *\n   * @maxItems 0\n   */\n  content: Text[];\n}\n\nexport interface Hyperlink extends Inline {\n  nodeType: INLINES.HYPERLINK;\n  data: {\n    uri: string;\n  };\n  content: Text[];\n}\n\nexport interface AssetHyperlink extends Inline {\n  nodeType: INLINES.ASSET_HYPERLINK;\n  data: {\n    target: Link<'Asset'>;\n  };\n  content: Text[];\n}\n\nexport interface EntryHyperlink extends Inline {\n  nodeType: INLINES.ENTRY_HYPERLINK;\n  data: {\n    target: Link<'Entry'>;\n  };\n  content: Text[];\n}\n\nexport interface ResourceHyperlink extends Inline {\n  nodeType: INLINES.RESOURCE_HYPERLINK;\n  data: {\n    target: ResourceLink;\n  };\n  content: Text[];\n}\n\nexport interface TableCell extends Block {\n  nodeType: BLOCKS.TABLE_HEADER_CELL | BLOCKS.TABLE_CELL;\n  data: {\n    colspan?: number;\n    rowspan?: number;\n  };\n\n  /**\n   * @minItems 1\n   */\n  content: Paragraph[];\n}\n\nexport interface TableHeaderCell extends TableCell {\n  nodeType: BLOCKS.TABLE_HEADER_CELL;\n}\n\n// An abstract table row can have both table cell types\n\nexport interface TableRow extends Block {\n  nodeType: BLOCKS.TABLE_ROW;\n  data: EmptyNodeData;\n\n  /**\n   * @minItems 1\n   */\n  content: TableCell[];\n}\n\nexport interface Table extends Block {\n  nodeType: BLOCKS.TABLE;\n  data: EmptyNodeData;\n\n  /**\n   * @minItems 1\n   */\n  content: TableRow[];\n}"
        },
        "promptType": "define"
      },
      "typeVersion": 1.8
    },
    {
      "id": "3b409954-1506-46da-8ea9-ed2c938b84fc",
      "name": "見出しで分割",
      "type": "n8n-nodes-base.code",
      "position": [
        0,
        220
      ],
      "parameters": {
        "jsCode": "// Split the markdown into sections using ## as the logical chunk point\nconst splitByHeading = (markdown, headingLevel = 3) => {\n  const headingRegex = new RegExp(`(?=^${'#'.repeat(headingLevel)}\\\\s)`, 'gm');\n  return markdown.split(headingRegex).filter(chunk => chunk.trim());\n};\n\n// Get the first input item's content\nconst input = items[0].json;\nconst chunks = splitByHeading(input.content);\n\nreturn chunks.map((chunk, index) => {\n  return {\n    json: {\n      index,\n      slug: input.slug?.trim(),\n      title: input.title?.trim(),\n      contentChunk: chunk.trim(),\n    }\n  };\n});\n"
      },
      "typeVersion": 2
    },
    {
      "id": "d9bd0b06-730b-4e63-a3f4-73678b09aaa7",
      "name": "リッチテキストオブジェクト結合",
      "type": "n8n-nodes-base.code",
      "position": [
        720,
        380
      ],
      "parameters": {
        "jsCode": "const combinedContent = [];\n\nfor (const item of items) {\n  let raw = item.json;\n\n  // Handle if AI agent returned a stringified JSON inside a property like `output`\n  if (typeof raw === 'object' && typeof raw.output === 'string') {\n    try {\n      raw = JSON.parse(raw.output);\n    } catch (e) {\n      throw new Error(`Failed to parse JSON from agent output:\\n${raw.output}`);\n    }\n  }\n\n  // Handle if AI agent returned plain stringified JSON (not wrapped in a key)\n  if (typeof raw === 'string') {\n    try {\n      raw = JSON.parse(raw);\n    } catch (e) {\n      throw new Error(`Failed to parse raw JSON string:\\n${raw}`);\n    }\n  }\n\n  // Add content from parsed result\n  if (raw?.content?.length) {\n    combinedContent.push(...raw.content);\n  }\n}\n\nreturn [\n  {\n    json: {\n      nodeType: 'document',\n      data: {},\n      content: combinedContent\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "08f5c7a8-3200-47bf-a4c9-5333956ddf49",
      "name": "OpenAI Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        300,
        620
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1",
          "cachedResultName": "gpt-4.1"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "KLN8ZfDzv8mW6pyu",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "e1bbe1ba-3be3-44c9-af34-e27c56246545",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        200,
        80
      ],
      "parameters": {
        "width": 880,
        "height": 760,
        "content": "# Converts to Proprietary Format for Contentful\n\n- Uses an example output format to generate content to specific rich text formatting for contentful upload.\n- References the contentful documentation for the bot to pull from."
      },
      "typeVersion": 1
    },
    {
      "id": "36266f04-12cf-4a19-8d60-45974e69ab6b",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1180,
        -340
      ],
      "parameters": {
        "color": 3,
        "width": 980,
        "height": 860,
        "content": "# Publishes to Contentful API\n\n## Requirements\n\n- Add your space ID to the endpoint\n- Add your Management Token to the flow\n\n\n| Field Name | Type | Description |\n|------------|------|-------------|\n| Title | Short text | The title of the article. Acts as the entry title. |\n| Slug | Short text | URL-friendly version of the title, used in routing. |\n| Category | Reference | Linked content type representing the article's category. |\n| Description | Long text | A short summary or overview of the article. |\n| Keywords | Short text (list) | SEO keywords for the article. |\n| Meta Title | Short text | SEO-specific title shown in browser tab and search engines. |\n| Meta Description | Long text | SEO-specific description used in search engine previews. |\n| Difficulty Level | Short text | Indicates how advanced the content is (e.g., Beginner, Intermediate, Advanced). |\n| Related Articles | References (many) | Links to other related article entries for cross-referencing. |\n| Content | Rich text | Main body of the article. Supports formatting, embeds, etc. |\n| readingTime | Short text | Estimated reading time (e.g., \"5 min read\"). |"
      },
      "typeVersion": 1
    },
    {
      "id": "f0ecec88-c4a7-472f-b71b-d78f57635472",
      "name": "付箋2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -800,
        -520
      ],
      "parameters": {
        "color": 5,
        "width": 900,
        "height": 620,
        "content": "# Varritech Free Workflows for n8n\n\nAccess our collection of **free, ready-to-use n8n workflows** designed to streamline your data operations and automation needs.\n\n## What You'll Get:\n- Pre-built data integration workflows\n- Time-saving automation templates\n- Step-by-step implementation guides\n- Regular updates with new workflows\n\n## How to Use:\n1. Download our free workflows\n2. Import into your n8n instance\n3. Configure with your credentials\n4. Start automating immediately\n\n**Note:** For additional workflows, tutorials, and technical support, visit our website at [varritech.com](https://varritech.com)\n\n*Unlock the full potential of n8n with Varritech's workflow solutions!*"
      },
      "typeVersion": 1
    },
    {
      "id": "e4bf6af7-cd5a-4f54-9512-5e91d86f6bf6",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1180,
        620
      ],
      "parameters": {
        "color": 4,
        "width": 980,
        "height": 540,
        "content": "# Need Additional Help With Contentful?\n\nThank you for using our free n8n Upload to Contentful workflow! If you need assistance with:\n\n- Custom Contentful implementations\n- Advanced content modeling strategies\n- API integration optimization\n- Content migration services\n- Extending your automation workflows\n\n**Varritech is here to help!** Our team specializes in CMS implementations and automation solutions to streamline your content operations.\n\nVisit [varritech.com](https://varritech.com) for expert support with your Contentful and automation needs."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "callerPolicy": "workflowsFromSameOwner",
    "executionOrder": "v1",
    "executionTimeout": 600
  },
  "versionId": "c049c9ae-5037-4f0e-b499-65b5315529b3",
  "connections": {
    "57960c96-94ce-43d1-83b8-d6417b79373a": {
      "main": [
        [
          {
            "node": "f304bcec-2150-4767-95a9-38c1e98e2c52",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f304bcec-2150-4767-95a9-38c1e98e2c52": {
      "main": [
        [
          {
            "node": "f50b2f81-d9b4-4206-a18c-a02573afe8e7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3b409954-1506-46da-8ea9-ed2c938b84fc": {
      "main": [
        [
          {
            "node": "85edaba2-c42b-4ca8-af84-080255dd93d3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "08f5c7a8-3200-47bf-a4c9-5333956ddf49": {
      "ai_languageModel": [
        [
          {
            "node": "85edaba2-c42b-4ca8-af84-080255dd93d3",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "d9bd0b06-730b-4e63-a3f4-73678b09aaa7": {
      "main": [
        [
          {
            "node": "57960c96-94ce-43d1-83b8-d6417b79373a",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "85edaba2-c42b-4ca8-af84-080255dd93d3": {
      "main": [
        [
          {
            "node": "d9bd0b06-730b-4e63-a3f4-73678b09aaa7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d2d8efbc-3914-4c9b-98fe-566c1843f58d": {
      "main": [
        [
          {
            "node": "3b409954-1506-46da-8ea9-ed2c938b84fc",
            "type": "main",
            "index": 0
          },
          {
            "node": "57960c96-94ce-43d1-83b8-d6417b79373a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

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

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

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

中級 - エンジニアリング, 人工知能

有料ですか?

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

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

経験者向け、6-15ノードの中程度の複雑さのワークフロー

作成者
Varritech

Varritech

@varritech

Build your next app 500% faster with the latest AI-powered development

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34