{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "73a62d48-7492-4ba2-bb94-c33382e9e561",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        0,
        0
      ],
      "parameters": {
        "options": {},
        "formTitle": "YouTube Channel Metadata ",
        "formFields": {
          "values": [
            {
              "fieldLabel": "url",
              "placeholder": "Channel url",
              "requiredField": true
            }
          ]
        },
        "formDescription": "YouTube Channel Metadata"
      },
      "typeVersion": 2.2
    },
    {
      "id": "060b798e-25de-4acf-b563-c299ce006f81",
      "name": "Reformat",
      "type": "n8n-nodes-base.code",
      "position": [
        460,
        0
      ],
      "parameters": {
        "jsCode": "// Get the first channel object from items array\nconst channel = $input.first().json.items[0];\n\nconst {\n  snippet,\n  statistics,\n  brandingSettings,\n} = channel;\n\nconst title = snippet.title || 'No title';\nconst description = snippet.description || 'No description available';\nconst customUrl = snippet.customUrl || 'No custom URL';\nconst publishedDate = new Date(snippet.publishedAt).toLocaleDateString();\nconst country = snippet.country || 'Not specified';\n\nconst subscriberCount = statistics.subscriberCount || '0';\nconst viewCount = statistics.viewCount || '0';\nconst videoCount = statistics.videoCount || '0';\n\nconst bannerUrl = brandingSettings.image?.bannerExternalUrl || 'No banner URL';\nconst keywords = brandingSettings.channel?.keywords || 'No keywords';\n\n// Prepare formatted string\nconst formatted = `\n\ud83d\udcfa **Channel:** ${title}  \n\ud83d\udd17 **Custom URL:** https://youtube.com/${customUrl}  \n\ud83d\uddd3\ufe0f **Published On:** ${publishedDate}  \n\ud83c\udf0d **Country:** ${country}\n\n\ud83d\udc65 **Subscribers:** ${subscriberCount}  \n\ud83d\udc41\ufe0f **Total Views:** ${viewCount}  \n\ud83c\udfa5 **Total Videos:** ${videoCount}\n\n\ud83d\udcdd **Description:**  \n${description}\n\n\ud83c\udff7\ufe0f **Keywords:** ${keywords}\n\n\ud83d\uddbc\ufe0f **Banner Image:**  \n${bannerUrl}\n`;\n\n// Return formatted string\nreturn [\n  {\n    json: {\n      docContent: formatted.trim(),\n    }\n  }\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "fca2fbf5-db93-4d05-8e70-c89f90edfaf0",
      "name": "Add Data in Google Docs",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        720,
        0
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ $json.docContent }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "",
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "cff9cbb2-6fc4-4a66-a0b0-16dae3c1fd38",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -720,
        -240
      ],
      "parameters": {
        "width": 520,
        "height": 1300,
        "content": "# **YouTube Channel Metadata to Google Docs**\n\n# Workflow Description  \n\nThis workflow takes a YouTube channel URL submitted via a form, fetches detailed channel metadata using a RapidAPI service, reformats the data into a nicely structured text, and appends it to a Google Docs document.\n\n\n## Nodes Breakdown\n\n### 1. **On form submission** (Form Trigger)  \n*Triggers the workflow when a user submits a YouTube Channel URL via the web form.*\n\n- Collects user input (YouTube channel URL) to start the workflow.\n\n---\n\n### 2. **YouTube Channel Metadata** (HTTP Request)  \n*Calls the RapidAPI YouTube Channel Metadata API with the submitted URL.*\n\n- Sends a POST request with the channel URL to fetch channel data like title, subscribers, description, etc.\n\n---\n\n### 3. **Reformat** (Code)  \n*Transforms the raw API JSON response into a clean, human-readable formatted string.*\n\n- Extracts relevant fields (title, subscribers, keywords, etc.)  \n- Formats data with emojis and markdown-style layout for easy reading  \n- Outputs the formatted string as `docContent`\n\n---\n\n### 4. **Add Data in Google Docs** (Google Docs)  \n*Inserts the formatted channel metadata text into a specified Google Docs document.*\n\n- Uses Google Docs API with service account authentication  \n- Appends the formatted channel data into the doc for record-keeping or sharing\n\n# Summary  \n\nThis flow is designed to automate the process of collecting YouTube channel information from a URL, processing that data into a readable format, and storing it neatly in Google Docs \u2014 all triggered by a simple user form submission.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "2fa66d15-6311-44ff-820a-7bdf42d3b711",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -100,
        -220
      ],
      "parameters": {
        "height": 360,
        "content": "**On form submission** (Form Trigger)  \n*Triggers the workflow when a user submits a YouTube Channel URL via the web form.*\n\n- Collects user input (YouTube channel URL) to start the workflow.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "f6b5cf9b-4bb1-43cb-b0b9-90fa777d913a",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        160,
        -260
      ],
      "parameters": {
        "height": 400,
        "content": "**YouTube Channel Metadata** (HTTP Request)  \n*Calls the RapidAPI YouTube Channel Metadata API with the submitted URL.*\n\n- Sends a POST request with the channel URL to fetch channel data like title, subscribers, description, etc.\n"
      },
      "typeVersion": 1
    },
    {
      "id": "070451b2-9a0b-423b-bbd8-aa163d57178c",
      "name": "YouTube Channel Metadata",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        220,
        0
      ],
      "parameters": {
        "url": "https://youtube-metadata1.p.rapidapi.com/channel_metadata.php",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "contentType": "multipart-form-data",
        "sendHeaders": true,
        "bodyParameters": {
          "parameters": [
            {
              "name": "url",
              "value": "={{ $json.url }}"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "x-rapidapi-host",
              "value": "youtube-metadata1.p.rapidapi.com"
            },
            {
              "name": "x-rapidapi-key",
              "value": "your key"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "9d71eabf-7243-47ce-aa41-9ca2d8bcade4",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        420,
        -260
      ],
      "parameters": {
        "height": 400,
        "content": "**Reformat** (Code)  \n*Transforms the raw API JSON response into a clean, human-readable formatted string.*\n\n- Extracts relevant fields (title, subscribers, keywords, etc.)  \n- Formats data with emojis and markdown-style layout for easy reading  \n- Outputs the formatted string as `docContent`"
      },
      "typeVersion": 1
    },
    {
      "id": "62b9f2a3-2ecc-4a50-979e-e0aaddb24f7c",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        680,
        -260
      ],
      "parameters": {
        "height": 400,
        "content": "**Add Data in Google Docs** (Google Docs)  \n*Inserts the formatted channel metadata text into a specified Google Docs document.*\n\n- Uses Google Docs API with service account authentication  \n- Appends the formatted channel data into the doc for record-keeping or sharing\n"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Reformat": {
      "main": [
        [
          {
            "node": "Add Data in Google Docs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "On form submission": {
      "main": [
        [
          {
            "node": "YouTube Channel Metadata",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "YouTube Channel Metadata": {
      "main": [
        [
          {
            "node": "Reformat",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}