Titelklarheit optimieren mit Google Sheets und E-Mail-Benachrichtigungen
Dies ist ein Content Creation, Multimodal AI-Bereich Automatisierungsworkflow mit 14 Nodes. Hauptsächlich werden If, Code, EmailSend, FormTrigger, HttpRequest und andere Nodes verwendet. Optimierung der Titelklarheit mit Google Sheets und E-Mail-Benachrichtigungen
- •Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
- •Google Sheets API-Anmeldedaten
Verwendete Nodes (14)
Kategorie
{
"meta": {
"instanceId": "60c025075753afcab9f803964b4caaca9402f435deb4efafbb8e3b93b54d8752",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "1dc70980-1f3d-4352-8f39-9465eb0357ff",
"name": "Bei Formularübermittlung",
"type": "n8n-nodes-base.formTrigger",
"position": [
-80,
0
],
"webhookId": "a3954bfd-5e79-48fe-a4a9-e6fa35122c14",
"parameters": {
"options": {},
"formTitle": "YouTube Video giveaway ",
"formFields": {
"values": [
{
"fieldLabel": "url",
"requiredField": true
}
]
},
"formDescription": "YouTube Video giveaway "
},
"typeVersion": 2.2
},
{
"id": "bc236f4c-6d15-447b-94a8-d1d435455e20",
"name": "YouTube Kommentare abrufen",
"type": "n8n-nodes-base.httpRequest",
"position": [
176,
0
],
"parameters": {
"url": "https://youtube-comments-scraper.p.rapidapi.com/comment.php",
"method": "POST",
"options": {
"response": {
"response": {
"fullResponse": true
}
}
},
"sendBody": true,
"contentType": "multipart-form-data",
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "url",
"value": "={{ $json.url }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "x-rapidapi-host",
"value": "youtube-comments-scraper.p.rapidapi.com"
},
{
"name": "x-rapidapi-key",
"value": "your key"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "155352c4-d1d6-49c3-a86f-a65176acba98",
"name": "API Antwortstatus prüfen",
"type": "n8n-nodes-base.if",
"position": [
448,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "loose"
},
"combinator": "and",
"conditions": [
{
"id": "38976149-dd8b-452f-a2d1-cd4c88dfa791",
"operator": {
"type": "number",
"operation": "equals"
},
"leftValue": "={{ $json.statusCode }}",
"rightValue": "=200"
}
]
},
"looseTypeValidation": true
},
"typeVersion": 2.2
},
{
"id": "eefb9182-3705-4c12-9e58-7ae37a3e5c88",
"name": "Zufälligen Kommentator auswählen",
"type": "n8n-nodes-base.code",
"position": [
720,
0
],
"parameters": {
"jsCode": "// Extract the array of comment items from the API response\nconst comments = $input.first().json.body.items || [];\n\n// Extract authorDisplayName safely\nconst authors = comments\n .map(item => {\n // Check if snippet and topLevelComment exist before accessing authorDisplayName\n if (item.snippet && item.snippet.topLevelComment && item.snippet.topLevelComment.snippet) {\n return item.snippet.topLevelComment.snippet.authorDisplayName;\n }\n return null; // or undefined\n })\n .filter(name => !!name); // filter out null/undefined\n\nif (authors.length === 0) {\n // No authors found, return empty or null\n return [{ json: { randomAuthorDisplayName: null } }];\n}\n\n// Randomly select one authorDisplayName\nconst randomIndex = Math.floor(Math.random() * authors.length);\nconst randomAuthor = authors[randomIndex];\n\n// Return as output\nreturn [{ json: { randomAuthorDisplayName: randomAuthor } }];\n"
},
"typeVersion": 2
},
{
"id": "ac6097b0-8fd5-41d3-8733-e6d61217b822",
"name": "Benachrichtigung: Ungültige API Antwort",
"type": "n8n-nodes-base.emailSend",
"position": [
704,
320
],
"webhookId": "06e6ac0e-286b-432a-b233-a61817cab593",
"parameters": {
"html": "Hello,\n\nThe attempt to fetch comments from the provided YouTube URL did not succeed. \nPlease verify the URL and try again.\n\nIf the problem persists, please check the API key or contact support.\n\nBest regards, \nYouTube Giveaway Bot\n",
"options": {},
"subject": "YouTube Comments Scraper: API Request Failed",
"toEmail": "owaner@gmail.com",
"fromEmail": "admin@gmail.com"
},
"credentials": {
"smtp": {
"id": "nPwKPPgVavimTJX4",
"name": "SMTP account"
}
},
"typeVersion": 2.1
},
{
"id": "b28e03d1-0103-4453-97bf-cdb69ecb3c49",
"name": "E-Mail an Gewinner senden",
"type": "n8n-nodes-base.emailSend",
"position": [
1312,
-64
],
"webhookId": "b8e21334-f8bb-442e-8060-e3bd170f4f6a",
"parameters": {
"html": "=Hello ,\n\nThe YouTube giveaway has concluded, and the winner has been selected!\n\nWinner: {{$json.randomAuthorDisplayName}}\n\nThe winner's details have been logged in the spreadsheet for your records.\n\nBest regards, \nYour Giveaway Automation Bot\n",
"options": {},
"subject": "=Congratulations! {{$json.randomAuthorDisplayName}} is the Winner of the Giveaway!",
"toEmail": "=owner@gmail.com",
"fromEmail": "admin@gmail.com"
},
"credentials": {
"smtp": {
"id": "H0f4Gja9ECFRA34L",
"name": "SMTP account 2"
}
},
"typeVersion": 2.1
},
{
"id": "00ed6cc0-8f7f-44e9-bf69-cb7512c49163",
"name": "Gewinner in Google Sheet protokollieren",
"type": "n8n-nodes-base.googleSheets",
"position": [
1008,
-48
],
"parameters": {
"columns": {
"value": {
"Url": "={{ $('On form submission').item.json.url }}",
"Date": "={{ $('On form submission').item.json.submittedAt }}",
"Winner": "={{ $json.randomAuthorDisplayName }}"
},
"schema": [
{
"id": "Date",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Url",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Winner",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Winner",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": ""
},
"authentication": "serviceAccount"
},
"credentials": {
"googleApi": {
"id": "Rt0RWApx8PL9t0RF",
"name": "Google Docs account"
}
},
"typeVersion": 4.7
},
{
"id": "7345d6e6-dde3-4880-85a5-e34780ad9335",
"name": "Haftnotiz",
"type": "n8n-nodes-base.stickyNote",
"position": [
128,
-112
],
"parameters": {
"height": 256,
"content": "Sends a POST request to RapidAPI to scrape YouTube comments from the given URL.\nIncludes API key and necessary headers for authentication."
},
"typeVersion": 1
},
{
"id": "9f072800-bbac-412f-99a1-28a552ce9558",
"name": "Haftnotiz1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-128,
-112
],
"parameters": {
"height": 256,
"content": "Triggers the workflow when a form with a YouTube URL is submitted.\nCaptures the URL input for further processing."
},
"typeVersion": 1
},
{
"id": "26e755bc-4755-4dc7-a7d0-4f2f3cfbf0ca",
"name": "Haftnotiz2",
"type": "n8n-nodes-base.stickyNote",
"position": [
384,
-112
],
"parameters": {
"height": 256,
"content": "Checks if the API response status code equals 200 (success).\nRoutes workflow based on success or failure of the API call."
},
"typeVersion": 1
},
{
"id": "449460b5-3b24-42a0-957f-2a47363889bc",
"name": "Haftnotiz3",
"type": "n8n-nodes-base.stickyNote",
"position": [
640,
-112
],
"parameters": {
"height": 256,
"content": "Extracts author names from the fetched comments.\nRandomly selects one commenter as the giveaway winner."
},
"typeVersion": 1
},
{
"id": "023052db-e197-48ff-9567-62d2565cbf2e",
"name": "Haftnotiz4",
"type": "n8n-nodes-base.stickyNote",
"position": [
672,
192
],
"parameters": {
"height": 288,
"content": "Sends an email notification if the API call fails or returns an invalid response.\nAlerts the admin to verify URL or API credentials."
},
"typeVersion": 1
},
{
"id": "f814c860-8649-4f9b-bcb7-8f9a7a83d697",
"name": "Haftnotiz5",
"type": "n8n-nodes-base.stickyNote",
"position": [
944,
-176
],
"parameters": {
"height": 288,
"content": "Appends the winner’s name, URL, and submission date to a Google Sheet.\nUses service account authentication for Google Sheets access."
},
"typeVersion": 1
},
{
"id": "e4feec40-ba6b-4c15-b2a2-5525f4424dfd",
"name": "Haftnotiz6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1264,
-192
],
"parameters": {
"height": 272,
"content": "Sends a congratulatory email announcing the giveaway winner.\nIncludes the winner’s name and relevant giveaway details."
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"1dc70980-1f3d-4352-8f39-9465eb0357ff": {
"main": [
[
{
"node": "bc236f4c-6d15-447b-94a8-d1d435455e20",
"type": "main",
"index": 0
}
]
]
},
"bc236f4c-6d15-447b-94a8-d1d435455e20": {
"main": [
[
{
"node": "155352c4-d1d6-49c3-a86f-a65176acba98",
"type": "main",
"index": 0
}
]
]
},
"eefb9182-3705-4c12-9e58-7ae37a3e5c88": {
"main": [
[
{
"node": "00ed6cc0-8f7f-44e9-bf69-cb7512c49163",
"type": "main",
"index": 0
}
]
]
},
"155352c4-d1d6-49c3-a86f-a65176acba98": {
"main": [
[
{
"node": "eefb9182-3705-4c12-9e58-7ae37a3e5c88",
"type": "main",
"index": 0
}
],
[
{
"node": "ac6097b0-8fd5-41d3-8733-e6d61217b822",
"type": "main",
"index": 0
}
]
]
},
"00ed6cc0-8f7f-44e9-bf69-cb7512c49163": {
"main": [
[
{
"node": "b28e03d1-0103-4453-97bf-cdb69ecb3c49",
"type": "main",
"index": 0
}
]
]
}
}
}Wie verwende ich diesen Workflow?
Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.
Für welche Szenarien ist dieser Workflow geeignet?
Fortgeschritten - Content-Erstellung, Multimodales KI
Ist es kostenpflichtig?
Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.
Verwandte Workflows
Evoort Solutions
@evoortsolutionsDiesen Workflow teilen