{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "88ced829-6881-4846-93b1-b2f7d1779841",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        768,
        80
      ],
      "parameters": {
        "width": 380,
        "height": 460,
        "content": "## Weekly Email Newsletter Generator\n\n**What it does:**\n- Fetches your latest WordPress posts every Friday\n- AI creates engaging newsletter content\n- Sends formatted emails to your subscriber list\n- Tracks which posts were included to avoid duplicates\n\n**Setup Required:**\n1. Configure WordPress credentials to fetch posts\n2. Set up SMTP email credentials (Gmail, SendGrid, Mailgun, etc.)\n3. Replace email addresses in Send Newsletter node with your subscriber list\n4. Set up Google Gemini API credentials for AI\n\n**Customization:**\n- Change schedule (currently Friday 10 AM)\n- Adjust number of posts to include\n- Modify email template and styling\n- Add custom intro/outro messages\n\n**Need Help?**\nFor n8n coaching or one-on-one consultation:\nmailto:david@daexai.com"
      },
      "typeVersion": 1
    },
    {
      "id": "c6dd067a-b2b4-4fc4-b14d-d300aa789437",
      "name": "Weekly Friday 10AM",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        976,
        192
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 10 * * 5"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "396b5f52-a71c-4235-9409-25850114eda3",
      "name": "Fetch Recent Posts",
      "type": "n8n-nodes-base.wordpress",
      "position": [
        1168,
        192
      ],
      "parameters": {
        "options": {},
        "operation": "getAll"
      },
      "typeVersion": 1
    },
    {
      "id": "08ae5166-ef2d-47db-9138-6de7a1621d95",
      "name": "Check Posts Exist",
      "type": "n8n-nodes-base.if",
      "position": [
        1376,
        192
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "c0a1b2c3-d4e5-f6g7-h8i9-j0k1l2m3n4o5",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{$json.length}}",
              "rightValue": 0
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "97d30b53-49ab-4e86-910e-a23550a9cb4e",
      "name": "AI Newsletter Creator",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        1568,
        192
      ],
      "parameters": {
        "options": {
          "systemMessage": "You are an email newsletter writer. Create an engaging weekly newsletter based on the provided blog posts. Include: 1) Catchy subject line, 2) Personal greeting, 3) Brief intro about this week's content, 4) Formatted summaries of each post with compelling descriptions, 5) Call-to-action to read full posts, 6) Friendly sign-off. Keep it conversational and engaging. Format in HTML for email."
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "aa3ee18d-2858-456b-a3de-c3ec6888d87f",
      "name": "Parse Newsletter Content",
      "type": "n8n-nodes-base.code",
      "position": [
        1952,
        192
      ],
      "parameters": {
        "jsCode": "const items = $input.all();\n\nreturn items.map(item => {\n  // Remove markdown code blocks and parse JSON\n  let aiOutput = item.json.output;\n  \n  // Remove ```json and ``` markers if present\n  aiOutput = aiOutput.replace(/```json\\s*/, '').replace(/```\\s*$/, '');\n  \n  // Try to parse as JSON, fallback to plain text\n  let parsedOutput;\n  try {\n    parsedOutput = JSON.parse(aiOutput.trim());\n  } catch (e) {\n    // If not JSON, treat as plain text\n    parsedOutput = {\n      subject: \"Weekly Newsletter - \" + new Date().toLocaleDateString(),\n      content: aiOutput\n    };\n  }\n  \n  return {\n    json: {\n      subject: parsedOutput.subject || \"Weekly Newsletter - \" + new Date().toLocaleDateString(),\n      content: parsedOutput.content || aiOutput,\n      date: new Date().toISOString()\n    }\n  };\n});"
      },
      "typeVersion": 2
    },
    {
      "id": "759e35de-6eaa-4b3e-b1a1-94d9d029a4d3",
      "name": "Send Newsletter",
      "type": "n8n-nodes-base.emailSend",
      "position": [
        2144,
        192
      ],
      "parameters": {
        "html": "={{$json.content}}",
        "options": {},
        "subject": "={{$json.subject}}",
        "toEmail": "=subscribers@yourlist.com,subscriber2@email.com,subscriber3@email.com",
        "fromEmail": "user@example.com",
        "emailFormat": "html"
      },
      "credentials": {
        "smtp": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "48dc6212-0580-40f5-94ba-5f6dc3f207d8",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        1472,
        384
      ],
      "parameters": {
        "options": {}
      },
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Check Posts Exist": {
      "main": [
        [
          {
            "node": "AI Newsletter Creator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Fetch Recent Posts": {
      "main": [
        [
          {
            "node": "Check Posts Exist",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Weekly Friday 10AM": {
      "main": [
        [
          {
            "node": "Fetch Recent Posts",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Newsletter Creator": {
      "main": [
        [
          {
            "node": "Parse Newsletter Content",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Newsletter Creator",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Parse Newsletter Content": {
      "main": [
        [
          {
            "node": "Send Newsletter",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}