ブログ記事:エコシステムのトレンド

上級

これはContent Creation, Multimodal AI分野の自動化ワークフローで、19個のノードを含みます。主にIf, Code, Wait, HttpRequest, GoogleSheetsなどのノードを使用。 Perplexity、GPT、LeonardoとWordPressを使用してSEOブログ記事を自動生成

前提条件
  • ターゲットAPIの認証情報が必要な場合あり
  • Google Sheets API認証情報
  • OpenAI API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "id": "OcdRRO25OfTnrILJ",
  "meta": {
    "instanceId": "d97a35efa9230ba825e389dcf8247ce5a77a88f4113df9825ba41d6ce9398085",
    "templateId": "4352",
    "templateCredsSetupCompleted": true
  },
  "name": "Blog Post : Tendencias Ecosistema",
  "tags": [],
  "nodes": [
    {
      "id": "cc9b1e41-aaeb-43fb-a283-e3faf397cc73",
      "name": "スケジュールトリガー",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1480,
        610
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 6 * * 1"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "01d0a3b7-66db-4032-b7d7-7a7b273920a7",
      "name": "トピックリサーチ(Perplexity)",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1260,
        610
      ],
      "parameters": {
        "url": "https://api.perplexity.ai/chat/completions",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"model\": \"sonar-pro\",\n  \"messages\": [\n    {\n      \"role\": \"system\",\n      \"content\": \"Eres un asistente experto en generar artículos SEO en español neutro sobre startups tecnológicas. El tono debe ser educativo, práctico, reflexivo e inspirador.\"\n    },\n    {\n      \"role\": \"user\",\n      \"content\": \"Redacta un artículo basado en la tendencia más relevante del ecosistema de startups tecnológicas hispanohablantes del día.\\n\\nDevuelve la respuesta estrictamente en formato JSON con esta estructura:\\n{\\n  \\\"title\\\": \\\"[título atractivo en una sola línea]\\\",\\n  \\\"content\\\": \\\"[cuerpo del artículo en HTML limpio, sin caracteres escapados, sin markdown, sin saltos \\\\n, y sin comentarios externos. Usar solo etiquetas estándar de HTML como <p>, <h2>, <ul>, <li>, <strong> y <em>. No uses etiquetas personalizadas ni scripts.]\\\"\\n}\\n\\nEl artículo debe:\\n- Tener entre 1000 y 1500 palabras.\\n- Incluir subtítulos usando <h2>.\\n- Iniciar con un gancho atractivo de máximo 3 frases dentro de <p>.\\n- Incluir al menos 2 datos estadísticos actuales con fuente (en texto).\\n- Ofrecer mínimo 3 consejos útiles, en formato de lista con <ul> y <li>.\\n- Terminar con una reflexión motivadora e invitación a sumarse a la comunidad (sin enlaces).\\n- Usar naturalmente palabras clave como: startups tecnológicas, innovación, emprendimiento, inversión, comunidad.\\n\\nNo agregues ningún texto ni explicación fuera del objeto JSON.\"\n    }\n  ]\n}\n",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "perplexityApi"
      },
      "credentials": {
        "perplexityApi": {
          "id": "mq8RUNimEAzTbApC",
          "name": "Perplexity account"
        },
        "httpHeaderAuth": {
          "id": "nXLy55sVzgMHDbHR",
          "name": "Header Auth account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "f70d8187-0f57-4680-8155-420d060536f0",
      "name": "投稿をWordpressで作成",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        860,
        760
      ],
      "parameters": {
        "url": "https://cristiantala.com/wp-json/wp/v2/posts",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"title\": \"{{ $('Get Title, Content, and Image FileName').item.json.title }}\",\n  \"content\": \"{{ $('Get Title, Content, and Image FileName').item.json.content }}\",\n  \"status\": \"publish\",\n  \"categories\": [\n    916\n  ],\n  \"featured_media\": {{ $('Upload Image to Wordpress').item.json.id }}\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth"
      },
      "credentials": {
        "httpBasicAuth": {
          "id": "atshoATHWCYP6uAv",
          "name": "WP CTala"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2
    },
    {
      "id": "b306aff7-c8b0-4bf7-9eb1-d8eeee45da6e",
      "name": "メッセージモデル",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -820,
        610
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini",
          "cachedResultName": "GPT-4.1-MINI"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=Generate a single-line English description of an editorial-style image to visually represent the following article.\n\nThe image must follow these rules:\n- Cinematic, editorial look (not cartoonish or abstract).\n- No visible text or logos.\n- Must work for a blog post featured image in Google News and Discover (ideal size: 1200x628 px).\n- The article title is: \"{{ $json.title }}\"\n- Article content: {{ $json.content }}.\n\nOutput just the English prompt, without quotes or formatting."
            },
            {
              "role": "system",
              "content": "You are an expert in crafting AI image generation prompts for editorial and news images. You help generate cinematic, editorial-style prompts for blog images that perform well in Google News and Google Discover. Avoid any text or logos in the result."
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "gaxCelkF84KGUr4n",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "e3786cd7-baac-4e9e-bd45-63ec3b5cfd5e",
      "name": "画像をWordpressにアップロード",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        420,
        760
      ],
      "parameters": {
        "url": "https://cristiantala.com/wp-json/wp/v2/media",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "binaryData",
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Disposition",
              "value": "=attachment; filename=\"{{ $('Get Title, Content, and Image FileName').item.json.image_filename }}\""
            },
            {
              "name": "Content-Type",
              "value": "image/jpeg"
            }
          ]
        },
        "inputDataFieldName": "data"
      },
      "credentials": {
        "httpBasicAuth": {
          "id": "atshoATHWCYP6uAv",
          "name": "WP CTala"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2
    },
    {
      "id": "bd779c40-a90d-4412-935a-7adc30e431fc",
      "name": "If (条件分岐)",
      "type": "n8n-nodes-base.if",
      "position": [
        -20,
        560
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "132de601-8ca1-46b4-9ae3-67baa33f28ad",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.generations_by_pk.status }}",
              "rightValue": "COMPLETE"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "24b8ff73-0eff-41ce-b99b-27d4210838ac",
      "name": "待機",
      "type": "n8n-nodes-base.wait",
      "position": [
        200,
        560
      ],
      "webhookId": "d14af83a-15dc-4387-adf9-0f8b785faa0c",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "072b61c5-7494-42cd-808f-bb311605f4a3",
      "name": "Leonardo 画像ステータスを取得",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -240,
        610
      ],
      "parameters": {
        "url": "=https://cloud.leonardo.ai/api/rest/v1/generations/{{ $json.sdGenerationJob.generationId }}",
        "options": {},
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpBearerAuth": {
          "id": "LjE8BhoG7Ai8SXvB",
          "name": "Bearer LeonardoAI"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2
    },
    {
      "id": "da14ecc4-ca0f-445e-9c87-0148a602bfc2",
      "name": "Leonardo 画像を取得",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        200,
        760
      ],
      "parameters": {
        "url": "={{ $json.generations_by_pk.generated_images[0].url }}",
        "options": {}
      },
      "retryOnFail": true,
      "typeVersion": 4.2
    },
    {
      "id": "02b052f2-0771-42b3-b4e8-526375654118",
      "name": "画像にALTテキストを追加",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        640,
        760
      ],
      "parameters": {
        "url": "=https://cristiantala.com/wp-json/wp/v2/media/{{ $json.id }}",
        "method": "PUT",
        "options": {},
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "alt_text",
              "value": "={{ $('Message a model').item.json.message.content }}"
            }
          ]
        },
        "genericAuthType": "httpBasicAuth"
      },
      "credentials": {
        "httpBasicAuth": {
          "id": "atshoATHWCYP6uAv",
          "name": "WP CTala"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2
    },
    {
      "id": "07078bdd-6d8e-485e-9581-e359361feba9",
      "name": "スタートアップ&テック関連の投稿 (Wordpress)",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1080,
        760
      ],
      "parameters": {
        "columns": {
          "value": {
            "URL": "={{ $json.guid.raw }}",
            "Tipo": "Post WP",
            "Topic": "={{ $json.title.rendered }}",
            "Status": "Posted",
            "URL Imagen": "={{ $('Upload Image to Wordpress').item.json.guid.rendered }}",
            "Contenido AI": "={{ $json.content.raw }}",
            "Fecha del Posteo": "={{ $json.date }}"
          },
          "schema": [
            {
              "id": "Topic",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Topic",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Tipo",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Tipo",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Contenido AI",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Contenido AI",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Fecha del Posteo",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Fecha del Posteo",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL Imagen",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "URL Imagen",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Topic"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1s3HKV8M3U8NvOp1CxERz8tnC9ibYmnB4Pztgv1ZjkOQ/edit#gid=0",
          "cachedResultName": "Hoja 1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1s3HKV8M3U8NvOp1CxERz8tnC9ibYmnB4Pztgv1ZjkOQ",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1s3HKV8M3U8NvOp1CxERz8tnC9ibYmnB4Pztgv1ZjkOQ/edit?usp=drivesdk",
          "cachedResultName": "Publicaciones RRSS"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "qz04WB2vwS3Lcxwc",
          "name": "IAM - Google Sheets"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "ce87f8ee-3d53-462c-9df5-921fdc42d17c",
      "name": "Leonardo: 記事用画像を生成",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -460,
        610
      ],
      "parameters": {
        "url": "https://cloud.leonardo.ai/api/rest/v1/generations",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"prompt\": \"{{ $json.message.content }}\",\n  \"modelId\": \"6bef9f1b-29cb-40c7-b9df-32b51c1f67d3\",\n  \"width\": 1280,\n  \"height\": 720,\n  \"sd_version\": \"v2\",\n  \"num_images\": 1,\n  \"promptMagic\": true,\n  \"promptMagicStrength\": 0.5,\n  \"public\": false,\n  \"scheduler\": \"LEONARDO\",\n  \"guidance_scale\": 7\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "accept",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpBearerAuth": {
          "id": "LjE8BhoG7Ai8SXvB",
          "name": "Bearer LeonardoAI"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2
    },
    {
      "id": "c8e83410-b334-4c2e-8095-0d424dd8455f",
      "name": "タイトル、コンテンツ、画像ファイル名を取得",
      "type": "n8n-nodes-base.code",
      "position": [
        -1040,
        610
      ],
      "parameters": {
        "jsCode": "const data = JSON.parse($input.first().json.choices[0].message.content);\n\n// Función para generar slug SEO-friendly\nfunction toSlug(text) {\n  return text\n    .toLowerCase()\n    .normalize(\"NFD\")                   // elimina acentos\n    .replace(/[\\u0300-\\u036f]/g, \"\")   // elimina diacríticos\n    .replace(/[^a-z0-9\\s-]/g, \"\")      // elimina caracteres especiales\n    .replace(/\\s+/g, \"-\")              // reemplaza espacios por guiones\n    .replace(/-+/g, \"-\")               // evita guiones dobles\n    .replace(/^-|-$/g, \"\");            // quita guiones iniciales y finales\n}\n\nconst imageName = toSlug(data.title) + \".jpg\";\n\nreturn [\n  {\n    json: {\n      title: data.title,\n      content: data.content,\n      image_filename: imageName\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "611ebda2-da9a-4104-9888-5934afbfbe3d",
      "name": "付箋",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1100,
        800
      ],
      "parameters": {
        "height": 260,
        "content": "## Problem in node ‘Get Title, Content, and Image FileName‘\nIf this happens, is because the Json file was not created successfully before on Perplexity. IA Models still struggles with this."
      },
      "typeVersion": 1
    },
    {
      "id": "0f807531-ad62-40a8-8778-a4f7dcfc3c63",
      "name": "付箋1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        560,
        960
      ],
      "parameters": {
        "content": "## ALT Images \nALT sigue siendo una de las características seo Importantes, junto al nombre del archivo de la imagen."
      },
      "typeVersion": 1
    },
    {
      "id": "23f62c23-08c5-4da9-8579-a4b1077b43e1",
      "name": "付箋2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        980
      ],
      "parameters": {
        "width": 540,
        "height": 120,
        "content": "## Generación de Imagen con LeonardoAI\nEl proceso de generación de la imagen es asincrono, por lo que debemos preguntar si está listo cada cierto tiempo. % segundos son más que suficientes, y menos puede bloquearte el API."
      },
      "typeVersion": 1
    },
    {
      "id": "56512471-538c-478f-9406-685f8501a8aa",
      "name": "付箋3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -800,
        840
      ],
      "parameters": {
        "height": 200,
        "content": "## Image Prompt\nLe pedimos a ChaGPT que nos ayude a generar el prompt que usaremos en LeonardoAI para la imagen. Si bien podemos ocupar OpenAI para la imagen, Leonardo es considerablemente más económico."
      },
      "typeVersion": 1
    },
    {
      "id": "24dd4040-a12b-4edc-a36f-668b1e4b6ab4",
      "name": "付箋4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        560
      ],
      "parameters": {
        "content": "## Publicamos\nSe genera la publicación incluyendo la imagen y la categoría."
      },
      "typeVersion": 1
    },
    {
      "id": "4dee076b-728a-42eb-b1ba-a8adfae043b5",
      "name": "付箋5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1060,
        960
      ],
      "parameters": {
        "content": "## Journal\nGeneramos una lista de las publicaciones que hemos hecho a través de este flujo"
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "5ff0e3cd-00ad-4e8f-99a4-cd67ae531778",
  "connections": {
    "bd779c40-a90d-4412-935a-7adc30e431fc": {
      "main": [
        [
          {
            "node": "da14ecc4-ca0f-445e-9c87-0148a602bfc2",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "24b8ff73-0eff-41ce-b99b-27d4210838ac",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "24b8ff73-0eff-41ce-b99b-27d4210838ac": {
      "main": [
        [
          {
            "node": "072b61c5-7494-42cd-808f-bb311605f4a3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b306aff7-c8b0-4bf7-9eb1-d8eeee45da6e": {
      "main": [
        [
          {
            "node": "ce87f8ee-3d53-462c-9df5-921fdc42d17c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cc9b1e41-aaeb-43fb-a283-e3faf397cc73": {
      "main": [
        [
          {
            "node": "01d0a3b7-66db-4032-b7d7-7a7b273920a7",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "da14ecc4-ca0f-445e-9c87-0148a602bfc2": {
      "main": [
        [
          {
            "node": "e3786cd7-baac-4e9e-bd45-63ec3b5cfd5e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "02b052f2-0771-42b3-b4e8-526375654118": {
      "main": [
        [
          {
            "node": "f70d8187-0f57-4680-8155-420d060536f0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f70d8187-0f57-4680-8155-420d060536f0": {
      "main": [
        [
          {
            "node": "07078bdd-6d8e-485e-9581-e359361feba9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "072b61c5-7494-42cd-808f-bb311605f4a3": {
      "main": [
        [
          {
            "node": "bd779c40-a90d-4412-935a-7adc30e431fc",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "e3786cd7-baac-4e9e-bd45-63ec3b5cfd5e": {
      "main": [
        [
          {
            "node": "02b052f2-0771-42b3-b4e8-526375654118",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "01d0a3b7-66db-4032-b7d7-7a7b273920a7": {
      "main": [
        [
          {
            "node": "c8e83410-b334-4c2e-8095-0d424dd8455f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ce87f8ee-3d53-462c-9df5-921fdc42d17c": {
      "main": [
        [
          {
            "node": "072b61c5-7494-42cd-808f-bb311605f4a3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c8e83410-b334-4c2e-8095-0d424dd8455f": {
      "main": [
        [
          {
            "node": "b306aff7-c8b0-4bf7-9eb1-d8eeee45da6e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

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

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

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

上級 - コンテンツ作成, マルチモーダルAI

有料ですか?

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

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

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

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34