Actualizar automáticamente la descripción del video de YouTube e insertar texto

Intermedio

Este es unMarketingflujo de automatización del dominio deautomatización que contiene 9 nodos.Utiliza principalmente nodos como Set, Code, YouTube, ManualTrigger, SplitInBatches. Actualizar automáticamente la descripción del video de YouTube e insertar texto

Requisitos previos
  • No hay requisitos previos especiales, puede importar y usarlo directamente

Categoría

Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "name": "Automatically Update YouTube Video Descriptions with Inserted Text",
  "tags": [],
  "nodes": [
    {
      "id": "19cafddc-6199-4418-8213-9743c34c9176",
      "name": "Obtener todos los videos",
      "type": "n8n-nodes-base.youTube",
      "position": [
        480,
        380
      ],
      "parameters": {
        "limit": 3,
        "filters": {},
        "options": {
          "order": "date"
        },
        "resource": "video"
      },
      "typeVersion": 1
    },
    {
      "id": "63a6a8e6-994f-46ab-a731-609549fec99f",
      "name": "Actualizar descripción de video",
      "type": "n8n-nodes-base.youTube",
      "position": [
        1320,
        460
      ],
      "parameters": {
        "title": "={{ $('Get Specific Video').item.json.snippet.title }}",
        "videoId": "={{ $('Get Specific Video').item.json.id}}",
        "resource": "video",
        "operation": "update",
        "categoryId": "={{ $('Get Specific Video').item.json.snippet.categoryId }}",
        "regionCode": "US",
        "updateFields": {
          "tags": "={{ $('Get Specific Video').item.json.snippet.tags.join() }}",
          "description": "={{ $json.updatedDescription }}"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ce147272-f6c3-4cfb-954b-9a77c63a6232",
      "name": "Al hacer clic en 'Probar flujo de trabajo'",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        120,
        380
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "9ba206b2-1161-41a3-8581-d60dae665096",
      "name": "Nota adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        100,
        120
      ],
      "parameters": {
        "color": 5,
        "width": 580,
        "height": 180,
        "content": "## Insert Text into YouTube Video Descriptions\n**Automatically insert a row of text between two specified rows** in all your YouTube video descriptions. \n\nThis workflow is ideal for YouTubers who need to update multiple video descriptions at once. Easily add a new link or text between existing lines, ensuring consistency across all your video descriptions without manual edits."
      },
      "typeVersion": 1
    },
    {
      "id": "e05f5b9c-c160-45d7-b67a-62d68acc0829",
      "name": "Nota adhesiva1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        100,
        560
      ],
      "parameters": {
        "color": 4,
        "width": 340,
        "height": 260,
        "content": "## Configure text string to insert 👆 \nDefine the text string (row) that will be added to your YouTube video descriptions.\n\n### Variables\n- **rowBefore** → The new row will be inserted *after* this line.\n- **rowToInsert** -→ The text or link you want to add.\n- **rowAfter**→ The new row will be inserted *before* this line.\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "51a3fd15-8767-4cc0-98a8-fe98ec90db70",
      "name": "Establecer texto a insertar",
      "type": "n8n-nodes-base.set",
      "position": [
        300,
        380
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a05b56b1-6f18-4359-aa4b-127399877301",
              "name": "rowBefore",
              "type": "string",
              "value": "=https://firstlink.com"
            },
            {
              "id": "95ac4a95-cdf4-4d7a-b9a3-78d54c879115",
              "name": "rowToInsert",
              "type": "string",
              "value": "https://mynewlinktoinsert.com"
            },
            {
              "id": "ded86a1f-f0a5-42b8-9176-9be4038f6290",
              "name": "rowAfter",
              "type": "string",
              "value": "https://secondlink.com"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "590b8bb3-6eb4-4bb8-af4c-c2d95221f045",
      "name": "Bucle sobre videos",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        700,
        380
      ],
      "parameters": {
        "options": {
          "reset": false
        }
      },
      "typeVersion": 3
    },
    {
      "id": "a80ac941-0a99-4eab-8a6c-effef1e136fa",
      "name": "Obtener video específico",
      "type": "n8n-nodes-base.youTube",
      "position": [
        900,
        460
      ],
      "parameters": {
        "options": {},
        "videoId": "={{ $json.id.videoId }}",
        "resource": "video",
        "operation": "get"
      },
      "typeVersion": 1
    },
    {
      "id": "2c4519e2-1af9-42d7-818c-8165365587fb",
      "name": "Crear nueva descripción de video con fila insertada",
      "type": "n8n-nodes-base.code",
      "position": [
        1100,
        460
      ],
      "parameters": {
        "jsCode": "// Access the input data (YouTube description)\nconst description = $('Get Specific Video').first().json.snippet.description;\n//console.log(inputData)\n\nconst variables = $('Set String to Insert').first().json\n// Define the rows to search for and the row to insert\nconst rowBefore = variables.rowBefore;\nconst rowAfter = variables.rowAfter;\nconst rowToInsert = variables.rowToInsert;\n\n// Split the description into an array of rows\nconst rows = description.split(\"\\n\");\nconsole.log(rows)\n// Find the index of the rowBefore and rowAfter\nconst indexBefore = rows.findIndex(row => row.trim() === rowBefore);\nconst indexAfter = rows.findIndex(row => row.trim() === rowAfter);\n\n// Check if both rows are found and rowBefore comes before rowAfter\nif (indexBefore !== -1 && indexAfter !== -1 && indexBefore < indexAfter) {\n  // Insert the new row between rowBefore and rowAfter\n  rows.splice(indexBefore + 1, 0, rowToInsert);\n}\n\n// Join the rows back into a single string\nconst updatedDescription = rows.join(\"\\n\");\n\n// Return the updated description in the correct n8n output structure\nreturn [\n  {\n    json: {\n      updatedDescription: updatedDescription\n    }\n  }\n];"
      },
      "typeVersion": 2
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "50fd0bcb-7441-45eb-ab58-ca2a7de78516",
  "connections": {
    "19cafddc-6199-4418-8213-9743c34c9176": {
      "main": [
        [
          {
            "node": "590b8bb3-6eb4-4bb8-af4c-c2d95221f045",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "590b8bb3-6eb4-4bb8-af4c-c2d95221f045": {
      "main": [
        [],
        [
          {
            "node": "a80ac941-0a99-4eab-8a6c-effef1e136fa",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a80ac941-0a99-4eab-8a6c-effef1e136fa": {
      "main": [
        [
          {
            "node": "2c4519e2-1af9-42d7-818c-8165365587fb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "51a3fd15-8767-4cc0-98a8-fe98ec90db70": {
      "main": [
        [
          {
            "node": "19cafddc-6199-4418-8213-9743c34c9176",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "63a6a8e6-994f-46ab-a731-609549fec99f": {
      "main": [
        [
          {
            "node": "590b8bb3-6eb4-4bb8-af4c-c2d95221f045",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ce147272-f6c3-4cfb-954b-9a77c63a6232": {
      "main": [
        [
          {
            "node": "51a3fd15-8767-4cc0-98a8-fe98ec90db70",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2c4519e2-1af9-42d7-818c-8165365587fb": {
      "main": [
        [
          {
            "node": "63a6a8e6-994f-46ab-a731-609549fec99f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Intermedio - Marketing

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Información del flujo de trabajo
Nivel de dificultad
Intermedio
Número de nodos9
Categoría1
Tipos de nodos6
Descripción de la dificultad

Adecuado para usuarios con experiencia intermedia, flujos de trabajo de complejidad media con 6-15 nodos

Autor
Akram Kadri

Akram Kadri

@akramkadri

n8n Automation Freelancer ------------------------ Contact me at: akram@digispruce.com

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34