Build your own newsletter system with AI
Install Keila, Amazon SES and an editable newsletter template with help from ChatGPT, Claude or Grok Bot. Use your own domain, accounts and data.
Create and run your own newsletter: a browser-based page to write editions, Keila to manage subscribers and campaigns, and Amazon SES to deliver the emails.
The public GitHub starter contains English installation instructions, a working generic template, deployment files and an AI runbook. Everyone starts with their own accounts and branding; no private newsletter content, subscribers or credentials from my installation are included.
Give this to your AI assistant
Help me install my own newsletter system using https://github.com/robbertvanempel/newsletter-starter. Read README.md, AGENTS.md, INSTALL.md and docs/aws-ses.md first. Guide me in my preferred language. Use browser and terminal tools for authorized setup when available; otherwise give exact steps. Use my own domain, accounts and branding, keep credentials private, explain costs, verify each phase and leave campaigns unscheduled until I explicitly approve sending.
Open the public GitHub repository to read the English instructions and download the starter.
The instructions work as a shared brief for ChatGPT, Claude and Grok Bot. The assistant must first check which browser, file and terminal tools it actually has. You complete account login, MFA and any confirmations that require you personally.
What you are installing
| Part | What it does |
|---|---|
| Newsletter Studio | Edit branding and story blocks, add public HTTPS images, reorder stories and preview on mobile or desktop. |
| Keila | Manage contacts, signup forms, campaigns, unsubscribe handling and statistics. |
| Amazon SES + SNS | Deliver email and return bounce/complaint feedback to Keila. |
| Docker Compose + Caddy | Run the services on your server with HTTPS and a separate Studio login. |
The portable workflow is Studio → export → import an unscheduled HTML draft → review and send in Keila. Studio autosave stays in the current browser. Save an editable JSON file to back it up or move it to another device. This starter does not include the private production installation’s custom autosync or dashboard integrations.
Prepare your own accounts and budget
- Your own domain and access to its DNS records.
- Your own Linux server with Docker and Compose, or an existing server the assistant can adapt safely.
- Your own AWS account, SES region and verified sender.
- Your newsletter name, branding, organisation details and permission-based subscriber list.
The software is open source. Domain registration, hosting, SES email delivery and other enabled AWS services can cost money. Have the assistant explain the current prices and your choices before buying anything. AWS budget notifications do not cap spending.
Start with the installation guide for the exact commands and checks.
Set up Amazon SES correctly
- Verify your sending domain and publish the exact DKIM records AWS provides. Set up an appropriate MAIL FROM and DMARC configuration.
- Create restricted sending credentials. Regional SMTP credentials are used for system mail; separate AWS API credentials go into Keila’s native SES sender.
- Connect SNS bounce and complaint notifications to Keila and verify that the subscription is confirmed.
- Test with your own verified address while in the sandbox. Request production access using truthful information about subscriptions and opt-outs.
AWS decides whether to approve production access. Submission of the request is a pending milestone, not proof that you can send to subscribers. The AI should record the actual regional quota and approval status.
The detailed SES and SNS instructions link to the official AWS documentation.
Make your first edition
- Open your Studio page and replace the sample branding, subject, introduction, footer and story.
- Add or reorder stories and include images only through public HTTPS URLs.
- Save an editable source file and export the Keila draft JSON.
- Let the assistant validate and import the export with the provided helper. Enter the project API token privately in the terminal, never in the editor or chat.
- Review the actual draft in Keila, select the intended sender and audience, and approve an inbox test before sending anything.
The import helper creates an unscheduled draft and cannot send a campaign. It keeps a private receipt to prevent repeated imports from creating duplicate campaigns in the same clone. Later Studio revisions are separate drafts; use Keila to continue editing an imported campaign.
Read the Studio workflow for exports, imports and browser storage.
Keep credentials and subscribers private
- Generate new secrets locally and keep .env outside the webroot and Git. Never paste credentials into an AI conversation or public issue.
- Use your own accounts and generic templates. The starter has no connection to my subscriber database or production services.
- Use native signup/confirmation and keep unsubscribe, hard-bounce and complaint suppressions intact when migrating your own list.
- Do not ask an AI to send a full campaign until you approve that specific edition, audience and timing.
Finish with a verified installation
Have the assistant check HTTPS, both logins, a real Keila draft, an approved received test email, signup and unsubscribe, SNS feedback, cost notifications and an isolated backup restore. Check the actual SPF, DKIM and DMARC results in the received message.
Source tests alone cannot prove inbox delivery or SES approval. Ask for a handover with your two URLs, private backup location, instructions for your next edition and a clear list of anything still pending.
Keep the maintenance and troubleshooting guide with your private installation notes.