{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "10e566e2-6c1e-4a0f-8256-e232d3a33137",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -16,
        -832
      ],
      "parameters": {
        "color": 7,
        "width": 1024,
        "height": 336,
        "content": "## Need more advanced automation solutions? Contact us for custom enterprise workflows!\n\n# Growth-AI.fr\n\n## https://www.linkedin.com/in/allanvaccarizi/\n## https://www.linkedin.com/in/hugo-marinier-%F0%9F%A7%B2-6537b633/"
      },
      "typeVersion": 1
    },
    {
      "id": "279e15a9-f449-4a75-aaed-7ad00fc62491",
      "name": "Sticky Note16",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -16,
        -1248
      ],
      "parameters": {
        "color": 7,
        "width": 1024,
        "height": 400,
        "content": "![Logo Growth AI](https://cdn.prod.website-files.com/6825df5b20329ba581df4914/68d413c43f8729fa336568a6_Logo_horizontal.png)"
      },
      "typeVersion": 1
    },
    {
      "id": "01eb1809-6b55-4a8b-ae36-e67b005b0e52",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -576,
        -448
      ],
      "parameters": {
        "width": 480,
        "height": 672,
        "content": "## Linkedin comment scraper\n### How it works\n\n1. A user submits a form providing the LinkedIn post URL or scraping parameters to trigger the workflow.\n2. A new Google Sheets spreadsheet is created to store the results for that session.\n3. The workflow sends a POST request to Apify's LinkedIn comment scraper actor to collect comments.\n4. The raw Apify response is transformed, extracting key fields: Comment, Author, Author Headline, and Comment URL.\n5. The cleaned comment data is appended or updated in the Google Sheet for easy review.\n\n### Setup steps\n\n- - [ ] Configure the **On form submission** trigger with the required form fields (e.g., LinkedIn post URL).\n- - [ ] Add your **Apify API key** to the HTTP Request node's authentication and verify the actor ID in the endpoint URL.\n- - [ ] Connect a **Google account** with Sheets access to both the 'Create spreadsheet' and 'Append or update row in sheet' nodes.\n- - [ ] Set the target Google Drive folder and spreadsheet name in the 'Create spreadsheet' node.\n- - [ ] Verify the column mapping in 'Edit Fields' matches the headers in your spreadsheet.\n\n### Customization\n\nYou can extend the 'Edit Fields' node to capture additional Apify response fields (e.g., likes, timestamps). You can also add a filter node after scraping to only store comments matching certain keywords."
      },
      "typeVersion": 1
    },
    {
      "id": "015713dc-e365-4f77-bafc-2e5263b63e7f",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -16,
        -448
      ],
      "parameters": {
        "color": 7,
        "width": 400,
        "height": 336,
        "content": "## Form trigger and sheet setup\n\nA form submission starts the workflow and immediately creates a new Google Sheets spreadsheet to hold the scraped results."
      },
      "typeVersion": 1
    },
    {
      "id": "2c505aae-6c38-4318-9b4d-83e7e0f62f8c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        432,
        -448
      ],
      "parameters": {
        "color": 7,
        "width": 432,
        "height": 336,
        "content": "## Scrape and transform comments\n\nTriggers the Apify LinkedIn comment scraper via an HTTP POST request, then normalises the raw response into structured fields (Comment, Author, Author Headline, Comment URL)."
      },
      "typeVersion": 1
    },
    {
      "id": "a6fa4d92-d02a-4a1a-82ac-a2f85c1e5e08",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        896,
        -448
      ],
      "parameters": {
        "color": 7,
        "height": 336,
        "content": "## Save results to sheet\n\nAppends or updates each processed comment row in the Google Sheet created at the start of the workflow."
      },
      "typeVersion": 1
    },
    {
      "id": "190d8893-f5a1-4a05-9e81-56159ffb1015",
      "name": "When Form Submitted",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        32,
        -272
      ],
      "parameters": {
        "options": {},
        "formTitle": "Linkedin comment scraper",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Post URL"
            }
          ]
        },
        "formDescription": "Paste your post URL here"
      },
      "typeVersion": 2.5
    },
    {
      "id": "2cd51278-84e9-47f6-8ebe-61251998060a",
      "name": "Set Comment Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        720,
        -272
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "bfb4f6dc-59e2-40cc-9d19-2bd04bcbfe1e",
              "name": "Comment",
              "type": "string",
              "value": "={{ $json.commentary }}"
            },
            {
              "id": "befc7dff-4eac-45ef-9ecf-9f247f7d4717",
              "name": "Author",
              "type": "string",
              "value": "==HYPERLINK(\"{{ $json.actor.linkedinUrl }}\" ; \"{{ $json.actor.name }}\")"
            },
            {
              "id": "72ca9775-2939-4367-b558-caae63909bdd",
              "name": "Position",
              "type": "string",
              "value": "={{ $json.actor.position }}"
            },
            {
              "id": "a3dec20c-0f28-4a2b-8485-953567c9301c",
              "name": "Comment URL",
              "type": "string",
              "value": "={{ $json.linkedinUrl }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "3a2e54dd-e872-4b2b-9e5b-0f6943bd0e0a",
      "name": "Append or Update Sheet Row",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        944,
        -272
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Create Sheet Data').item.json.sheets[0].properties.sheetId }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Create Sheet Data').item.json.spreadsheetId }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "eb19af88-ed8d-4fe7-88bc-e1baa41b9881",
      "name": "Create Sheet Data",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        240,
        -272
      ],
      "parameters": {
        "title": "=Linkedin comments",
        "options": {},
        "resource": "spreadsheet",
        "sheetsUi": {
          "sheetValues": [
            {
              "title": "=Comments"
            }
          ]
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.7
    },
    {
      "id": "34b50b06-c3b6-4624-b979-579bf87c5534",
      "name": "Scrape LinkedIn Comments via Apify1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        496,
        -272
      ],
      "parameters": {
        "url": "https://api.apify.com/v2/acts/ZI6ykbLlGS3APaPE8/run-sync-get-dataset-items",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n    \"maxItems\": 500,\n    \"postedLimit\": \"year\",\n    \"posts\": [\n        \"{{ $('When Form Submitted').item.json['Post URL'] }}\"\n    ],\n    \"profileScraperMode\": \"short\",\n    \"scrapeReplies\": true\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "apifyApi"
      },
      "credentials": {
        "apifyApi": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2,
      "alwaysOutputData": true,
      "waitBetweenTries": 5000
    }
  ],
  "connections": {
    "Create Sheet Data": {
      "main": [
        [
          {
            "node": "Scrape LinkedIn Comments via Apify1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Comment Fields": {
      "main": [
        [
          {
            "node": "Append or Update Sheet Row",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When Form Submitted": {
      "main": [
        [
          {
            "node": "Create Sheet Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape LinkedIn Comments via Apify1": {
      "main": [
        [
          {
            "node": "Set Comment Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}