AutomationFlowsEmail & Gmail › Gmail Kleinanzeigen Posting Reminder

Gmail Kleinanzeigen Posting Reminder

Original n8n title: Kleinanzeigen Posting Reminder

11 - Kleinanzeigen Posting Reminder. Uses gmail. Scheduled trigger; 5 nodes.

Cron / scheduled trigger★★★★☆ complexity5 nodesGmail
Email & Gmail Trigger: Cron / scheduled Nodes: 5 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "11 - Kleinanzeigen Posting Reminder",
  "nodes": [
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtDay": [
                1,
                3,
                5
              ],
              "triggerAtHour": 9,
              "triggerAtMinute": 30
            }
          ]
        }
      },
      "id": "cron-trigger",
      "name": "Schedule (Mo/Mi/Fr 09:30)",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        250,
        300
      ]
    },
    {
      "parameters": {
        "jsCode": "// Kleinanzeigen Listings \u2014 Meck-Pomm Elektronik\n// 20 ready-to-post listings, rotiert durch\n\nconst listings = [\n  {\n    id: 1,\n    titel: 'Website-Redesign & Modernisierung f\u00fcr Dein Gesch\u00e4ft',\n    kategorie: 'IT & Web',\n    preis: 'ab 799\u20ac',\n    typ: 'service-it'\n  },\n  {\n    id: 2,\n    titel: 'IT-Wartung & Support \u2014 zuverl\u00e4ssig, schnell, vor Ort',\n    kategorie: 'IT & Web',\n    preis: 'ab 49\u20ac/Stunde',\n    typ: 'service-it'\n  },\n  {\n    id: 3,\n    titel: 'SEO-Optimierung \u2014 bessere Rankings bei Google & Co.',\n    kategorie: 'IT & Web',\n    preis: 'ab 199\u20ac',\n    typ: 'service-it'\n  },\n  {\n    id: 4,\n    titel: 'Sichere Server-Migration \u2014 Deine Daten in guten H\u00e4nden',\n    kategorie: 'IT & Web',\n    preis: 'ab 599\u20ac',\n    typ: 'service-it'\n  },\n  {\n    id: 5,\n    titel: 'Webshop aufbauen \u2014 schnell, sicher, DSGVO-konform',\n    kategorie: 'IT & Web',\n    preis: 'ab 899\u20ac',\n    typ: 'service-it'\n  },\n  {\n    id: 6,\n    titel: 'Datenbank-Optimierung \u2014 schneller Zugriff, sichere Daten',\n    kategorie: 'IT & Web',\n    preis: 'ab 89\u20ac/Stunde',\n    typ: 'service-it'\n  },\n  {\n    id: 7,\n    titel: 'IT-Sicherheit-Audit \u2014 wo sind Deine Schwachstellen?',\n    kategorie: 'IT & Web',\n    preis: 'ab 499\u20ac',\n    typ: 'service-it'\n  },\n  {\n    id: 8,\n    titel: 'Prozess-Automatisierung \u2014 spar Zeit & Kosten',\n    kategorie: 'IT & Web',\n    preis: 'ab 349\u20ac',\n    typ: 'service-it'\n  },\n  {\n    id: 9,\n    titel: 'Laptop-Reparatur & Datensicherung \u2014 Express-Service',\n    kategorie: 'Computer & Zubeh\u00f6r',\n    preis: 'ab 49\u20ac',\n    typ: 'reparatur'\n  },\n  {\n    id: 10,\n    titel: 'Handy-Reparatur \u2014 Bildschirm, Akku, Logicboard',\n    kategorie: 'Handy & Zubeh\u00f6r',\n    preis: 'ab 39\u20ac',\n    typ: 'reparatur'\n  },\n  {\n    id: 11,\n    titel: 'Gaming-PC & Arbeits-PC Reparatur \u2014 oder Zusammenbau',\n    kategorie: 'Computer & Zubeh\u00f6r',\n    preis: 'ab 59\u20ac',\n    typ: 'reparatur'\n  },\n  {\n    id: 12,\n    titel: 'Drucker-Reparatur & Toner-Refill \u2014 kosteng\u00fcnstig',\n    kategorie: 'Computer & Zubeh\u00f6r',\n    preis: 'ab 29\u20ac',\n    typ: 'reparatur'\n  },\n  {\n    id: 13,\n    titel: 'Monitor-Reparatur \u2014 Flackern, Pixel, Standfu\u00df',\n    kategorie: 'Computer & Zubeh\u00f6r',\n    preis: 'ab 39\u20ac',\n    typ: 'reparatur'\n  },\n  {\n    id: 14,\n    titel: 'Defektes Netzteil? Neue oder Reparatur?',\n    kategorie: 'Computer & Zubeh\u00f6r',\n    preis: 'ab 29\u20ac',\n    typ: 'reparatur'\n  },\n  {\n    id: 15,\n    titel: 'Lenovo ThinkPad X1 Carbon (Gen 7) \u2014 999\u20ac',\n    kategorie: 'Elektronik',\n    preis: '999\u20ac VB',\n    typ: 'verkauf'\n  },\n  {\n    id: 16,\n    titel: 'Dell U2720Q 27\\\" 4K Monitor \u2014 349\u20ac',\n    kategorie: 'Elektronik',\n    preis: '349\u20ac VB',\n    typ: 'verkauf'\n  },\n  {\n    id: 17,\n    titel: 'Apple MacBook Air M1 (2020) \u2014 649\u20ac',\n    kategorie: 'Elektronik',\n    preis: '649\u20ac VB',\n    typ: 'verkauf'\n  },\n  {\n    id: 18,\n    titel: 'HP Officejet Pro 8015 \u2014 Tintenstrahl-Drucker',\n    kategorie: 'Elektronik',\n    preis: '79\u20ac VB',\n    typ: 'verkauf'\n  },\n  {\n    id: 19,\n    titel: 'ANKAUF: Alte Laptops, Handys, Monitore \u2014 Gute Preise!',\n    kategorie: 'Sonstiges',\n    preis: 'Vereinbarung',\n    typ: 'ankauf'\n  },\n  {\n    id: 20,\n    titel: 'ANKAUF: Kaputte Elektronik \u2014 Noch Geld draus!',\n    kategorie: 'Sonstiges',\n    preis: 'Je nach Ger\u00e4t',\n    typ: 'ankauf'\n  }\n];\n\n// Rotation: 3 Listings pro Tag, rotiert durch basierend auf Tageszahl\nconst today = new Date();\nconst dayOfYear = Math.floor((today - new Date(today.getFullYear(), 0, 0)) / 86400000);\nconst batchSize = 3;\nconst startIdx = (dayOfYear * batchSize) % listings.length;\n\nconst todaysListings = [];\nfor (let i = 0; i < batchSize; i++) {\n  todaysListings.push(listings[(startIdx + i) % listings.length]);\n}\n\n// Tracking: welche wurden schon gepostet?\nconst postedFile = '/mnt/c/Users/paulg/Obsidian/02_Knowledge/business/marketing/kleinanzeigen-posting-log.md';\n\nreturn todaysListings.map(l => ({\n  json: {\n    ...l,\n    date: today.toISOString().split('T')[0],\n    obsidian_log: postedFile,\n    anleitung: `Kleinanzeigen \u00f6ffnen \u2192 '${l.kategorie}' \u2192 Titel: '${l.titel}' \u2192 Preis: ${l.preis} \u2192 Beschreibung aus kleinanzeigen-20-listings.md #${l.id} kopieren \u2192 Standort: Krakow am See \u2192 Fotos hochladen \u2192 Ver\u00f6ffentlichen`,\n    link_zu_texten: 'Claude-Cowork/01_Business/marketing/kleinanzeigen-20-listings.md',\n    listing_nummer: l.id\n  }\n}));"
      },
      "id": "listing-selector",
      "name": "Listings Ausw\u00e4hlen (3/Tag Rotation)",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        470,
        300
      ]
    },
    {
      "parameters": {
        "jsCode": "// Formatiere als Gmail-Draft mit Copy-Paste-Anleitung\nconst items = $input.all();\nconst today = items[0].json.date;\n\nlet body = `## Kleinanzeigen Posting Reminder \u2014 ${today}\\n\\n`;\nbody += `**3 Listings f\u00fcr heute:**\\n\\n`;\n\nitems.forEach((item, i) => {\n  const l = item.json;\n  body += `### ${i+1}. ${l.titel}\\n`;\n  body += `- **Kategorie:** ${l.kategorie}\\n`;\n  body += `- **Preis:** ${l.preis}\\n`;\n  body += `- **Typ:** ${l.typ}\\n`;\n  body += `- **Anleitung:** ${l.anleitung}\\n\\n`;\n});\n\nbody += `\\n---\\n**Texte:** Datei \\`kleinanzeigen-20-listings.md\\` Listing #${items.map(i => i.json.listing_nummer).join(', #')}\\n`;\nbody += `**Nach dem Posten:** In revenue-log.md eintragen!\\n`;\n\nreturn [{\n  json: {\n    subject: `Kleinanzeigen: 3 Listings posten (${today})`,\n    body: body,\n    to: 'meck.pomm.elektronik@gmail.com',\n    listings: items.map(i => i.json.listing_nummer)\n  }\n}];"
      },
      "id": "format-reminder",
      "name": "Reminder Formatieren",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        690,
        300
      ]
    },
    {
      "parameters": {
        "sendTo": "={{ $json.to }}",
        "subject": "={{ $json.subject }}",
        "emailType": "text",
        "message": "={{ $json.body }}"
      },
      "id": "send-email",
      "name": "Gmail Draft Erstellen",
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        910,
        300
      ],
      "credentials": {
        "gmailOAuth2": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "jsCode": "// Logging: Append to Obsidian posting-log\nconst fs = require('fs');\nconst items = $input.all();\nconst data = items[0].json;\nconst logPath = '/mnt/c/Users/paulg/Obsidian/02_Knowledge/business/marketing/kleinanzeigen-posting-log.md';\n\nconst entry = `| ${data.listings.join(', ')} | ${new Date().toISOString().split('T')[0]} | REMINDER_SENT | n8n WF #11 |\\n`;\n\ntry {\n  fs.appendFileSync(logPath, entry);\n} catch(e) {\n  // Log-Datei existiert noch nicht \u2014 kein Problem\n}\n\nreturn items;"
      },
      "id": "log-to-obsidian",
      "name": "Log in Obsidian",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1130,
        300
      ]
    }
  ],
  "connections": {
    "Schedule (Mo/Mi/Fr 09:30)": {
      "main": [
        [
          {
            "node": "Listings Ausw\u00e4hlen (3/Tag Rotation)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Listings Ausw\u00e4hlen (3/Tag Rotation)": {
      "main": [
        [
          {
            "node": "Reminder Formatieren",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Reminder Formatieren": {
      "main": [
        [
          {
            "node": "Gmail Draft Erstellen",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gmail Draft Erstellen": {
      "main": [
        [
          {
            "node": "Log in Obsidian",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1",
    "saveManualExecutions": true,
    "callerPolicy": "workflowsFromSameOwner"
  },
  "meta": {
    "templateCredsSetupCompleted": false
  },
  "tags": [
    {
      "name": "revenue"
    },
    {
      "name": "kleinanzeigen"
    },
    {
      "name": "posting"
    }
  ]
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

11 - Kleinanzeigen Posting Reminder. Uses gmail. Scheduled trigger; 5 nodes.

Source: https://github.com/NEXUS-OMEGA-Autoresearch-Karpathy/omega-sports/blob/8c0c3f79b91e1be816bd3cffd6ded2cff2f5a13a/_archive/orchestration-n8n/11_kleinanzeigen-posting-reminder.json — original creator credit. Request a take-down →

More Email & Gmail workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Email & Gmail

This workflow runs daily at 9 AM to pull unpaid invoices from Microsoft SQL, send staged payment reminder emails via Gmail based on due date timing, update invoice status and an audit log in the datab

Microsoft Sql, Gmail
Email & Gmail

Relatórios aos Laboratórios. Uses httpRequest, gmail, formTrigger. Scheduled trigger; 54 nodes.

HTTP Request, Gmail, Form Trigger
Email & Gmail

YOUR_ID 4. Uses gmail, googleDrive, googleSheets, httpRequest. Scheduled trigger; 53 nodes.

Gmail, Google Drive, Google Sheets +1
Email & Gmail

14310 Send Overdue Invoice Payment Reminders With Ifirma Gmail Postgrid And Slack. Uses httpRequest, stopAndError, slack, gmail. Scheduled trigger; 53 nodes.

HTTP Request, Stop And Error, Slack +1
Email & Gmail

Addendo — Blog Automatico Don Jacinto Nahual. Uses httpRequest, redis, github, gmail. Scheduled trigger; 51 nodes.

HTTP Request, Redis, GitHub +1