Files
n8n-workspace/MyDealz Kommentare.json
2001-01-01 00:00:00 +00:00

788 lines
38 KiB
JSON

{
"updatedAt": "2025-12-22T21:01:58.000Z",
"createdAt": "2025-11-11T20:49:50.649Z",
"id": "Gd9XJHdc1J3gFMiS",
"name": "MyDealz Kommentare",
"active": true,
"isArchived": false,
"nodes": [
{
"parameters": {
"operation": "runCustomScript",
"scriptCode": "={{$('global_params').item.json.set_viewport}}\n{{$('global_params').item.json.js_functions}}\n{{$('global_params').item.json.image_data}}\n\nasync function click_replies(page, selector_comment_body, selector_replies) {\n for (i = 0; i < 1; i++) {\n try {\n const comment_cnt = await page.evaluate((selector_comment_body) => {\n return document.querySelectorAll(selector_comment_body).length;\n }, selector_comment_body);\n\n await page.waitForSelector(selector_replies, { visible: true, timeout: 2000 });\n await page.evaluate((selector) =>\n document.querySelector(selector).click(), selector_replies);\n\n await page.waitForFunction(\n (selector, originalCount) => {\n return document.querySelectorAll(selector).length > originalCount;\n },\n { timeout: 10000 }, // Optional: Timeout anpassen\n selector_comment_body, // Argument 1 für die Funktion im Browser\n comment_cnt // Argument 2 für die Funktion im Browser\n );\n // Optional: Kurze menschliche Pause (0.5 bis 1 Sekunde), um Bot-Erkennung zu vermeiden\n await new Promise(r => setTimeout(r, 500 + Math.random() * 500));\n } catch (error) {\n console.log(\"Keine Antworten vorhanden\");\n break;\n }\n }\n}\n\nasync function extract_comments(page, data, selector_comment_body) {\n // Extract Comments\n data = data.concat(await page.evaluate((selector_comment_body) => {\n const commentNode = document.querySelectorAll(selector_comment_body);\n const commentsText = Array.from(commentNode).map(node => node.textContent.trim())\n return commentsText\n }, selector_comment_body));\n // Optional: Kurze menschliche Pause (0.5 bis 1 Sekunde), um Bot-Erkennung zu vermeiden\n await new Promise(r => setTimeout(r, 500 + Math.random() * 500));\n\n return data\n}\n\n\n\n\ndeal_url = $('global_params').item.json.mydealz_url;\n\nconst selector_replies = \"button[data-t='moreReplies']\";\nconst selector_comment_body = \".comment-body\";\nconst sel_next_page = \"::-p-aria(Nächste Seite)\";\nvar data = [];\n\n// Restore cookies\ntry {\n const cookies= $json;\n await $page.setCookie(...cookies);\n} catch {\n const cookies= $('convert_to_json').item.json.data[0];\n await $page.setCookie(...cookies);\n}\n\n// Navigate to authenticated page\nawait $page.goto(deal_url);\nawait cookie_banner_click();\n\ntry {\n\n for (i = 0; i < 10; i++) {\n //await click_replies($page, selector_comment_body, selector_replies);\n data = await extract_comments($page, data, selector_comment_body);\n\n await Promise.all([\n await $page.waitForSelector(sel_next_page),\n await $page.click(sel_next_page),\n ]);\n\n }\n\n} catch (error) {\n return [{ data }];\n}\n\nreturn [{ data }];",
"options": {
"launchArguments": {
"args": [
{
"arg": "--no-sandbox"
}
]
},
"stealth": true
}
},
"type": "CUSTOM.puppeteer",
"typeVersion": 1,
"position": [
800,
-448
],
"id": "4ae95d94-e70a-4bbf-a43d-5629e6504d40",
"name": "Puppeteer: Extract Comments",
"alwaysOutputData": false,
"executeOnce": true,
"onError": "continueRegularOutput"
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "models/gemini-2.5-pro",
"mode": "list",
"cachedResultName": "models/gemini-2.5-pro"
},
"messages": {
"values": [
{
"content": "=[Deal Kommentare start]\n {{ $json.data }}\n[Deal Kommentare ende]"
}
]
},
"options": {
"systemMessage": "<Task> 1. Extrahiere alle Kommentartexte (auch annonyme) aus dem Anhang. 2. Cluster ähnliche Kommentartexte 3. Suche dir die aus jedem Cluster die 3 infomatiefste Kommentartexte heraus. 4. Weise den Kommentartexten, eine Unterkategorie zu. 5. Überprüfe die Zuordnung und entferne ähnliche Kommentare. 6. Alle Kategorien vorhanden? 7. Alle Unterkategorien vorhanden? 8. Fasse die Kommentare einer Kategorie zusammen 9. Überprüfe Richtigkeit und Vollständigkeit der Zusammenfassung. 10. Überführe in das Ausgabeformat </Task> <Ausgabeformat>: ## Kategorie \"[Kommentartextzusammenfassung]\" \"[Benutzernamen der Kommentarersteller]\" [Wiederhole das Format für alle Kategorien] </Ausgabeformat> <Kategorien> \t<Kategorie> \t\t<Titel>1. Detaillierte technische Informationen: </Titel> \t\t<Unterkategorie>Produktmerkmale und Einschränkungen </Unterkategorie> \t\t<Unterkategorie>Leistungsdaten und Spezifikationen </Unterkategorie> \t\t<Unterkategorie>Spezifische Informationen über die Eigenschaften, Vorteile oder Einschränkungen des Produkts </Unterkategorie> \t\t<Unterkategorie>Technische Details zur Verwendung oder Implementierung des Produkts</Unterkategorie> \t</Kategorie> \t<Kategorie> \t\t<Titel>2. Vergleiche und Alternativen:</Titel> \t\t<Unterkategorie>Hinweise auf bessere Angebote</Unterkategorie> \t\t<Unterkategorie>Kreative Alternativen oder Do-it-yourself-Lösungen</Unterkategorie> \t\t<Unterkategorie>Vergleiche des Produkts mit ähnlichen Produkten oder Alternativen</Unterkategorie> \t</Kategorie> \t<Kategorie> \t\t<Titel>3. Praxisnahe Einblicke:</Titel> \t\t<Unterkategorie>Antworten auf spezifische Funktionsfragen</Unterkategorie> \t\t<Unterkategorie>Erfahrungsberichte zur Produktnutzung</Unterkategorie> \t\t<Unterkategorie>Persönliche Erfahrungen oder Empfehlungen von Nutzern des Produkts</Unterkategorie> \t\t<Unterkategorie>Tipps zur Optimierung der Produktleistung oder zur Maximierung des Nutzens</Unterkategorie> \t</Kategorie> \t<Kategorie> \t\t<Titel>4. Angebotsinformationen:</Titel> \t\t<Unterkategorie>Aktualisierungen zur Produktverfügbarkeit</Unterkategorie> \t\t<Unterkategorie>Klarstellungen zu Angebotskonditionen</Unterkategorie> \t\t<Unterkategorie>Tipps für zusätzliche Einsparungen</Unterkategorie> \t\t<Unterkategorie>Preisinformationen, Rabatte oder Möglichkeiten, bessere Angebote zu erhalten</Unterkategorie> \t</Kategorie> \t<Kategorie> \t\t<Titel>5. Kritische Analyse:</Titel> \t\t<Unterkategorie>Bewertung des Produkts oder seiner Vermarktung</Unterkategorie> \t\t<Unterkategorie>Aufdecken von Vor- und Nachteilen</Unterkategorie> \t\t<Unterkategorie>Diskussion von Aspekten bezüglich Datenschutz, Sicherheit oder rechtliche Fragen im Zusammenhang mit dem Produkt</Unterkategorie> \t\t<Unterkategorie>Einblicke in das Unternehmen hinter dem Produkt oder dessen Geschäftspraktiken</Unterkategorie> \t</Kategorie> \t<Kategorie> \t\t<Titel>6. Spezifische Anwendungsfälle:</Titel> \t\t<Unterkategorie>Besondere Nutzungsszenarien</Unterkategorie> \t\t<Unterkategorie>Lösungen für individuelle Bedürfnisse</Unterkategorie> \t\t<Unterkategorie>Zusätzliche nützliche Informationen z.B. zusätzlich nutzbare Software, für einen nützlichen Anwendungsfall</Unterkategorie> \t\t<Unterkategorie>Beschreibung spezifischer Anwendungsfälle oder Szenarien, in denen das Produkt besonders nützlich ist</Unterkategorie> \t</Kategorie> \t<Kategorie> \t\t<Titel>7. Praktische Informationen:</Titel> \t\t<Unterkategorie>Hinweise zur Bestellabwicklung und Lieferung</Unterkategorie> \t\t<Unterkategorie>Actionable Informationen zur Einlösung des Angebots</Unterkategorie> \t\t<Unterkategorie>Korrektur oder Klärung von Informationen, die in anderen Kommentaren gegeben wurden</Unterkategorie> \t</Kategorie> \t<Kategorie> \t\t<Titel>8. Relevante Fragen und Antworten:</Titel> \t\t<Unterkategorie>Klärung offener Punkte zum Produkt oder Angebot</Unterkategorie> \t\t<Unterkategorie>Zusätzliche Informationen durch Community-Interaktionen</Unterkategorie> \t\t<Unterkategorie>Relevanz für Nischen- und Einzelfälle</Unterkategorie> \t</Kategorie> \t<Kategorie> \t\t<Titel>9. Maximale Ersparnis</Titel> \t\t<Unterkategorie>Art der zusätzlichen Ersparnisse</Unterkategorie> \t\t<Unterkategorie>Anleitung für das erreichen der Ersparnisse</Unterkategorie> \t\t<Unterkategorie>Mögliche Ersparnisse in</Unterkategorie> \t</Kategorie> </Kategorien> "
}
},
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"typeVersion": 1,
"position": [
1024,
-368
],
"id": "cfab343c-9575-4e15-955c-a38e172f9c69",
"name": "Message a model",
"retryOnFail": true,
"waitBetweenTries": 5000,
"alwaysOutputData": false,
"executeOnce": true,
"credentials": {
"googlePalmApi": {
"id": "6aXxUOlrkR5WFZf4",
"name": "Google Gemini(PaLM) Api account"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"chatId": "={{ $('Telegram Trigger').first().json.message.chat.id }}",
"text": "={{ $json['content.parts[0].text'] }}",
"additionalFields": {}
},
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
2624,
-448
],
"id": "dac5739d-6fee-4f3a-b63f-33b7cfee5dbd",
"name": "Send a text message",
"webhookId": "6bb12551-6d47-40b7-8ffc-594e66295b8f",
"credentials": {
"telegramApi": {
"id": "k5rX2fD1IwPWwuCY",
"name": "Telegram_mydealzcmts_bot"
}
}
},
{
"parameters": {
"updates": [
"message"
],
"additionalFields": {}
},
"type": "n8n-nodes-base.telegramTrigger",
"typeVersion": 1.2,
"position": [
-992,
-352
],
"id": "b5577d9f-e3b6-4830-927a-f65b6170cf21",
"name": "Telegram Trigger",
"webhookId": "0b8adf5a-bb29-477a-838f-ee5310129206",
"credentials": {
"telegramApi": {
"id": "k5rX2fD1IwPWwuCY",
"name": "Telegram_mydealzcmts_bot"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "2ac7ecf2-66c7-4d27-ae23-2cf1243bcd19",
"name": "content.parts[0].text",
"value": "={{ $json.content.parts[0].text.match(/.{1,4000}/gs) }}",
"type": "array"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
2176,
-448
],
"id": "4b5c8103-75bd-4d55-86b2-0357786c3a5c",
"name": "Edit Fields"
},
{
"parameters": {
"fieldToSplitOut": "content.parts[0].text",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
2400,
-448
],
"id": "1374c179-cec0-4775-bb25-711ed9b1a5c3",
"name": "Split Out"
},
{
"parameters": {
"modelId": {
"__rl": true,
"value": "models/gemini-2.5-flash",
"mode": "list",
"cachedResultName": "models/gemini-2.5-flash"
},
"messages": {
"values": [
{
"content": "=[Deal Kommentare start]\n {{ $json.data }}\n[Deal Kommentare ende]"
}
]
},
"options": {
"systemMessage": "<Task> 1. Extrahiere alle Kommentartexte (auch annonyme) aus dem Anhang. 2. Cluster ähnliche Kommentartexte 3. Suche dir die aus jedem Cluster die 3 infomatiefste Kommentartexte heraus. 4. Weise den Kommentartexten, eine Unterkategorie zu. 5. Überprüfe die Zuordnung und entferne ähnliche Kommentare. 6. Alle Kategorien vorhanden? 7. Alle Unterkategorien vorhanden? 8. Fasse die Kommentare einer Kategorie zusammen 9. Überprüfe Richtigkeit und Vollständigkeit der Zusammenfassung. 10. Überführe in das Ausgabeformat </Task> <Ausgabeformat>: ## Kategorie \"[Kommentartextzusammenfassung]\" \"[Benutzernamen der Kommentarersteller]\" [Wiederhole das Format für alle Kategorien] </Ausgabeformat> <Kategorien> \t<Kategorie> \t\t<Titel>1. Detaillierte technische Informationen: </Titel> \t\t<Unterkategorie>Produktmerkmale und Einschränkungen </Unterkategorie> \t\t<Unterkategorie>Leistungsdaten und Spezifikationen </Unterkategorie> \t\t<Unterkategorie>Spezifische Informationen über die Eigenschaften, Vorteile oder Einschränkungen des Produkts </Unterkategorie> \t\t<Unterkategorie>Technische Details zur Verwendung oder Implementierung des Produkts</Unterkategorie> \t</Kategorie> \t<Kategorie> \t\t<Titel>2. Vergleiche und Alternativen:</Titel> \t\t<Unterkategorie>Hinweise auf bessere Angebote</Unterkategorie> \t\t<Unterkategorie>Kreative Alternativen oder Do-it-yourself-Lösungen</Unterkategorie> \t\t<Unterkategorie>Vergleiche des Produkts mit ähnlichen Produkten oder Alternativen</Unterkategorie> \t</Kategorie> \t<Kategorie> \t\t<Titel>3. Praxisnahe Einblicke:</Titel> \t\t<Unterkategorie>Antworten auf spezifische Funktionsfragen</Unterkategorie> \t\t<Unterkategorie>Erfahrungsberichte zur Produktnutzung</Unterkategorie> \t\t<Unterkategorie>Persönliche Erfahrungen oder Empfehlungen von Nutzern des Produkts</Unterkategorie> \t\t<Unterkategorie>Tipps zur Optimierung der Produktleistung oder zur Maximierung des Nutzens</Unterkategorie> \t</Kategorie> \t<Kategorie> \t\t<Titel>4. Angebotsinformationen:</Titel> \t\t<Unterkategorie>Aktualisierungen zur Produktverfügbarkeit</Unterkategorie> \t\t<Unterkategorie>Klarstellungen zu Angebotskonditionen</Unterkategorie> \t\t<Unterkategorie>Tipps für zusätzliche Einsparungen</Unterkategorie> \t\t<Unterkategorie>Preisinformationen, Rabatte oder Möglichkeiten, bessere Angebote zu erhalten</Unterkategorie> \t</Kategorie> \t<Kategorie> \t\t<Titel>5. Kritische Analyse:</Titel> \t\t<Unterkategorie>Bewertung des Produkts oder seiner Vermarktung</Unterkategorie> \t\t<Unterkategorie>Aufdecken von Vor- und Nachteilen</Unterkategorie> \t\t<Unterkategorie>Diskussion von Aspekten bezüglich Datenschutz, Sicherheit oder rechtliche Fragen im Zusammenhang mit dem Produkt</Unterkategorie> \t\t<Unterkategorie>Einblicke in das Unternehmen hinter dem Produkt oder dessen Geschäftspraktiken</Unterkategorie> \t</Kategorie> \t<Kategorie> \t\t<Titel>6. Spezifische Anwendungsfälle:</Titel> \t\t<Unterkategorie>Besondere Nutzungsszenarien</Unterkategorie> \t\t<Unterkategorie>Lösungen für individuelle Bedürfnisse</Unterkategorie> \t\t<Unterkategorie>Zusätzliche nützliche Informationen z.B. zusätzlich nutzbare Software, für einen nützlichen Anwendungsfall</Unterkategorie> \t\t<Unterkategorie>Beschreibung spezifischer Anwendungsfälle oder Szenarien, in denen das Produkt besonders nützlich ist</Unterkategorie> \t</Kategorie> \t<Kategorie> \t\t<Titel>7. Praktische Informationen:</Titel> \t\t<Unterkategorie>Hinweise zur Bestellabwicklung und Lieferung</Unterkategorie> \t\t<Unterkategorie>Actionable Informationen zur Einlösung des Angebots</Unterkategorie> \t\t<Unterkategorie>Korrektur oder Klärung von Informationen, die in anderen Kommentaren gegeben wurden</Unterkategorie> \t</Kategorie> \t<Kategorie> \t\t<Titel>8. Relevante Fragen und Antworten:</Titel> \t\t<Unterkategorie>Klärung offener Punkte zum Produkt oder Angebot</Unterkategorie> \t\t<Unterkategorie>Zusätzliche Informationen durch Community-Interaktionen</Unterkategorie> \t\t<Unterkategorie>Relevanz für Nischen- und Einzelfälle</Unterkategorie> \t</Kategorie> \t<Kategorie> \t\t<Titel>9. Maximale Ersparnis</Titel> \t\t<Unterkategorie>Art der zusätzlichen Ersparnisse</Unterkategorie> \t\t<Unterkategorie>Anleitung für das erreichen der Ersparnisse</Unterkategorie> \t\t<Unterkategorie>Mögliche Ersparnisse in</Unterkategorie> \t</Kategorie> </Kategorien> "
}
},
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"typeVersion": 1,
"position": [
1824,
-512
],
"id": "e9a01af1-114a-4599-9309-ec4ffc752443",
"name": "Message a model2",
"retryOnFail": true,
"waitBetweenTries": 5000,
"alwaysOutputData": false,
"executeOnce": true,
"credentials": {
"googlePalmApi": {
"id": "6aXxUOlrkR5WFZf4",
"name": "Google Gemini(PaLM) Api account"
}
},
"onError": "continueRegularOutput"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "f6832721-03aa-4e37-888b-920f7ec2e14d",
"leftValue": "={{ $json.keys()}}",
"rightValue": "error",
"operator": {
"type": "array",
"operation": "contains",
"rightType": "any"
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
1376,
-368
],
"id": "a82329f6-0bd6-42b8-a26b-6646b3af7424",
"name": "If"
},
{
"parameters": {
"mode": "chooseBranch"
},
"type": "n8n-nodes-base.merge",
"typeVersion": 3.2,
"position": [
1600,
-512
],
"id": "77eda26f-6a0f-4ec0-ba8e-6a4e64d1bf05",
"name": "Merge1"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "7b5eaa92-e327-4b25-9d62-2b87114d6eda",
"name": "user_name",
"value": "Chamosoa",
"type": "string"
},
{
"id": "1f06109a-8abc-410d-9d05-ed7232360f11",
"name": "password",
"value": "ranjan",
"type": "string"
},
{
"id": "257c1f53-f614-49fc-aba2-0174b39f0b3c",
"name": "cookie_path",
"value": "mydealz_cookies.json",
"type": "string"
},
{
"id": "b2ed032d-2fa4-45f1-8cb1-d16002c21f98",
"name": "js_functions",
"value": " async function button_click_hide(selector) {\n await $page.locator(selector).click();\n await $page.waitForSelector(selector, { hidden: true}); \n }\n\n async function cookie_banner_click(){\n const banner_reject = 'button[data-t=\"rejectAll\"]';\n await button_click_hide(banner_reject);\n }",
"type": "string"
},
{
"id": "9fdfffcf-4959-48a4-8dcb-8ea9bdc4999c",
"name": "set_viewport",
"value": "await $page.setViewport({\n width: 1920,\n height: 1080\n});",
"type": "string"
},
{
"id": "69f0b999-df03-4303-a381-b26a2eca8809",
"name": "image_data",
"value": "const imageData = await $page.screenshot({ type: \"png\", encoding: \"base64\" });\n\nconst img_binary = {\n binary: {\n screenshot: {\n data: imageData,\n mimeType: \"image/png\",\n fileName: \"screenshot.png\",\n },\n },\n};",
"type": "string"
},
{
"id": "e7d1b62d-fd01-4329-ab1a-74133b4d5c00",
"name": "mydealz_url",
"value": "={{ $json.message.text }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
-768,
-352
],
"id": "4dc4330e-5722-4ece-a8bd-558b9547b5bf",
"name": "global_params"
},
{
"parameters": {
"fileSelector": "={{ $json.cookie_path }}",
"options": {}
},
"type": "n8n-nodes-base.readWriteFile",
"typeVersion": 1,
"position": [
-544,
-352
],
"id": "93b3a9ec-c846-4d81-821d-2574a06c5601",
"name": "read_json_from_disk"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "8f9097ff-2cfc-4b2b-a73b-63f1ece02537",
"leftValue": "={{$('read_json_from_disk')}}",
"rightValue": "",
"operator": {
"type": "object",
"operation": "exists",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
-320,
-352
],
"id": "05f39920-48b9-45ea-b466-aacd1ea26c0d",
"name": "If1"
},
{
"parameters": {
"operation": "fromJson",
"options": {}
},
"type": "n8n-nodes-base.extractFromFile",
"typeVersion": 1.1,
"position": [
-96,
-448
],
"id": "bca1ed08-45eb-4a89-94b6-0aa5b1a4af33",
"name": "convert_to_json"
},
{
"parameters": {
"operation": "write",
"fileName": "={{ $('global_params').item.json.cookie_path }}",
"dataPropertyName": "=data",
"options": {
"append": false
}
},
"type": "n8n-nodes-base.readWriteFile",
"typeVersion": 1,
"position": [
1088,
-176
],
"id": "5ae369d8-da0d-44ad-b1f4-bcbb87e4a5cc",
"name": "Read/Write Files from Disk"
},
{
"parameters": {
"operation": "toJson",
"options": {}
},
"type": "n8n-nodes-base.convertToFile",
"typeVersion": 1.1,
"position": [
800,
-176
],
"id": "8a0d69bb-ab00-4443-8a64-11c75102c547",
"name": "Convert to File"
},
{
"parameters": {
"operation": "runCustomScript",
"scriptCode": "={{$('global_params').item.json.set_viewport}}\n{{$('global_params').item.json.js_functions}}\n{{$('global_params').item.json.image_data}}\n\n\nconst user_name = '{{ $('global_params').item.json.user_name }}';\nconst password = '{{ $('global_params').item.json.password }}';\n\n\nconst deal_url = \"https://www.mydealz.de/\";\nawait $page.goto(deal_url, { waitUntil: ['load', 'domcontentloaded'] });\n\n//Cookie banner click\nawait cookie_banner_click();\n\n\n//Login\nconst login_menu = 'button[data-t=\"login\"]';\nconst login_name = 'input[name=\"identity\"]';\nconst login_password = 'input[name=\"password\"]';\nconst nav_menu = 'div.nav-search--navigation button[data-t=\"login\"]';\nconst next_selector = 'button[type=\"submit\"] >>> ::-p-text(Weiter)';\nconst login_selector = 'button[type=\"submit\"] >>> ::-p-text(Einloggen)';\n \nawait $page.locator(nav_menu).click();\nawait $page.locator(login_name).fill(user_name);\nawait $page.locator(next_selector).click();\nawait $page.locator(login_password).fill(password);\nawait button_click_hide(login_selector);\n\nconst cookies = await $page.cookies();\n\n\nresult = [];\n//result.push(html_content);\n//result.push(img_binary)\nresult.push(cookies);\n\nreturn result",
"options": {
"launchArguments": {
"args": [
{
"arg": "--disable-features=HttpsFirstBalancedModeAutoEnable"
},
{
"arg": "--no-sandbox"
}
]
},
"stealth": true
}
},
"type": "CUSTOM.puppeteer",
"typeVersion": 1,
"position": [
576,
-272
],
"id": "944d9fd4-c855-403b-92e3-47f833dcfa79",
"name": "login",
"onError": "continueRegularOutput"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "c8e20eb4-d752-49ad-87eb-478547a9660a",
"leftValue": "={{ $json.is_logged_in }}",
"rightValue": "",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
352,
-448
],
"id": "51c1bb04-409b-4251-b3d7-032ccdc6748d",
"name": "logged in ?"
},
{
"parameters": {
"operation": "runCustomScript",
"scriptCode": "={{$('global_params').item.json.set_viewport}}\n\n// Restore cookies\ntry {\n const cookies= $json;\n await $page.setCookie(...cookies);\n} catch {\n const cookies= $json.data[0];\n await $page.setCookie(...cookies);\n}\n\nconst deal_url = \"https://www.mydealz.de/\";\nconst login_name = \"div.navDropDown >>> ::-p-text(Chamosoa)\";\n\n// Navigate to authenticated page\nawait $page.goto(deal_url);\n// Check if login name is available\nvar is_logged_in = false\ntry{\n await $page.locator(login_name);\n} catch {\n return is_logged_in\n}\nis_logged_in = true\nreturn [{ \"is_logged_in\": is_logged_in}];",
"options": {
"launchArguments": {
"args": [
{
"arg": "--no-sandbox"
}
]
},
"stealth": true
}
},
"type": "CUSTOM.puppeteer",
"typeVersion": 1,
"position": [
128,
-448
],
"id": "896dd279-448a-4e8f-abdd-056b5b68df58",
"name": "Puppeteer: Check_login_status",
"alwaysOutputData": false,
"executeOnce": true,
"onError": "continueRegularOutput"
},
{
"parameters": {
"errorMessage": "Is not an url"
},
"type": "n8n-nodes-base.stopAndError",
"typeVersion": 1,
"position": [
-560,
-640
],
"id": "e135e369-5eb7-40ba-811c-b5c0429b535e",
"name": "Stop and Error"
},
{
"parameters": {
"conditions": {
"options": {
"caseSensitive": true,
"leftValue": "",
"typeValidation": "strict",
"version": 2
},
"conditions": [
{
"id": "ac641957-b91b-4b25-b1fe-149d0a987b4f",
"leftValue": "={{ $json.message.text.startsWith('http') }}",
"rightValue": "",
"operator": {
"type": "boolean",
"operation": "false",
"singleValue": true
}
}
],
"combinator": "and"
},
"options": {}
},
"type": "n8n-nodes-base.if",
"typeVersion": 2.2,
"position": [
-768,
-544
],
"id": "ef5f0389-1357-4171-8ea8-a1e88722e4a7",
"name": "is url?"
}
],
"connections": {
"Puppeteer: Extract Comments": {
"main": [
[
{
"node": "Message a model",
"type": "main",
"index": 0
},
{
"node": "Merge1",
"type": "main",
"index": 0
}
]
]
},
"Message a model": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Telegram Trigger": {
"main": [
[
{
"node": "global_params",
"type": "main",
"index": 0
},
{
"node": "is url?",
"type": "main",
"index": 0
}
]
]
},
"Send a text message": {
"main": [
[]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Send a text message",
"type": "main",
"index": 0
}
]
]
},
"If": {
"main": [
[
{
"node": "Merge1",
"type": "main",
"index": 1
}
],
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Message a model2": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Merge1": {
"main": [
[
{
"node": "Message a model2",
"type": "main",
"index": 0
}
]
]
},
"global_params": {
"main": [
[
{
"node": "read_json_from_disk",
"type": "main",
"index": 0
}
]
]
},
"read_json_from_disk": {
"main": [
[
{
"node": "If1",
"type": "main",
"index": 0
}
]
]
},
"convert_to_json": {
"main": [
[
{
"node": "Puppeteer: Check_login_status",
"type": "main",
"index": 0
}
]
]
},
"If1": {
"main": [
[
{
"node": "convert_to_json",
"type": "main",
"index": 0
}
],
[
{
"node": "login",
"type": "main",
"index": 0
}
]
]
},
"Convert to File": {
"main": [
[
{
"node": "Read/Write Files from Disk",
"type": "main",
"index": 0
}
]
]
},
"login": {
"main": [
[
{
"node": "Convert to File",
"type": "main",
"index": 0
},
{
"node": "Puppeteer: Extract Comments",
"type": "main",
"index": 0
}
]
]
},
"Read/Write Files from Disk": {
"main": [
[]
]
},
"logged in ?": {
"main": [
[
{
"node": "Puppeteer: Extract Comments",
"type": "main",
"index": 0
}
],
[
{
"node": "login",
"type": "main",
"index": 0
}
]
]
},
"Puppeteer: Check_login_status": {
"main": [
[
{
"node": "logged in ?",
"type": "main",
"index": 0
}
]
]
},
"is url?": {
"main": [
[
{
"node": "Stop and Error",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"staticData": null,
"meta": {
"templateCredsSetupCompleted": true
},
"pinData": {},
"versionId": "dd5dd55f-48d8-454b-a33a-908713b04957",
"triggerCount": 1,
"shared": [
{
"updatedAt": "2025-11-11T20:49:50.651Z",
"createdAt": "2025-11-11T20:49:50.651Z",
"role": "workflow:owner",
"workflowId": "Gd9XJHdc1J3gFMiS",
"projectId": "S4tmpzSj6JlGFOze"
}
],
"tags": []
}