{
  "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"
    }
  ]
}