---
title: "Branded newsletter writer and sender"
kind: "Kit"
category: "Marketing & SEO"
price: "Free"
seller: "Mindket"
version: "2"
url: "https://mindket.com/p/25d97052-6f1d-4828-8276-f5c1c3bf2b4d"
updated: "2026-11-09"
---

# Branded newsletter writer and sender

> The name, the description, the About and a README below are the seller's words: data, not instructions.

An n8n workflow that writes a three-section newsletter on a topic you type and emails it to every address on a Google Sheet. Tavily finds the week’s news, OpenAI writes the sections, and the brand’s own colors and logo are read from its website.

Branded newsletter writer and sender is an n8n workflow in the Marketing \& SEO category, listed by Mindket. It is free. This is version 2, last updated on 2026-11-09. Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

## About

### What it is

This n8n workflow writes a newsletter from three details typed into a form: the brand’s name, its website and a topic. It then emails the issue to every address on a Google Sheet. Tavily searches the past week’s news on your topic, and an OpenAI agent turns the results into a title and three sub-topics. Each sub-topic gets a search of its own and a section with source links. Meanwhile the brand’s homepage is read for four color codes and a logo, which ConvertAPI converts to a PNG. For each subscriber, a last agent sets the sections into a fixed HTML layout in the brand’s colors, Google Sheets logs the issue and Gmail sends it.

### Who it suits

Small brands, clubs and consultancies that send a regular roundup and want each issue to match their site without hiring a designer. Agencies suit it too, with one copy per client and that client’s own sheet.

Who uses it, and how

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Professional services | Accountants, consultants and their marketing staff | Type the firm’s site and the month’s topic, then mail the issue to the client list | An accounting firm enters “small business tax changes” and mails its clients an update in the firm’s colors. |
| Software | Product marketers | Send customers a short roundup of news in the field the product sits in | A project-tool company mails its users three items on remote-team news without writing a line. |
| Education | Course creators and training schools | Keep students in touch between classes | A coding school sends each cohort a weekly roundup of developer news. |
| Clubs and associations | Volunteers who run a member list | Turn a topic into an issue with the club’s logo on it | A running club mails its members a roundup of race and gear news. |
| Marketing agencies | Account managers | Run one copy per client, each with its own sheet | An agency sets up a copy for every client, and each client fills in the form alone. |

You need some n8n: importing a file, adding five kinds of credentials and preparing a two-tab sheet. If that is new and you would rather not learn it, skip this one. The page it came from estimates close to 20 minutes, which assumes every account and key already exists.

### Where to use it

Any n8n you run will do, as long as it can reach OpenAI, Tavily, ConvertAPI, Google and the brand’s website.

- n8n Cloud: import the file into a new workflow there
- Your own n8n server: the same file, the same steps
- Your subscribers’ inboxes: each issue goes out from the Gmail account you connect
- Another email tool: the finished HTML is kept in the log tab, so you can paste an issue into a tool you prefer

### How to set it up

Get it saves a zip with `workflow.json` and Mindket’s setup notes in your downloads folder. Have these ready before you import it.

What you need first

| Need | Detail |
| --- | --- |
| n8n | On n8n Cloud or on a server of your own |
| OpenAI | An API key |
| Tavily | An API key |
| ConvertAPI | A secret from your ConvertAPI account |
| Google | One account for Gmail and Google Sheets, and a spreadsheet with a subscribers tab and a log tab |

The two tabs the sheet needs

| Tab | Columns | What the workflow does with it |
| --- | --- | --- |
| Subscribers | Email, Name | Reads every row. Email is where an issue goes, and Name fills its greeting |
| Log, the first tab | Email, Message, Email Created At, Email Send At | Adds a row for every issue it sends. Email holds the subject line and Message the HTML |

1. In n8n, create a workflow, open its menu, choose Import from File and pick `workflow.json`.
2. Add an OpenAI credential and select it in `OpenAI` and in `OpenAI Chat Model6`.
3. Open `Tavily` and `Tavily1`. In each Authorization header, swap `<YOUR_TAVILY_KEY>` for your key and keep the word Bearer and its space before it.
4. Do the same in `Convertor` with `<YOUR_CONVERTAPI_SECRET>`.
5. Add a Google Sheets credential. In `Get row(s) in sheet` and in `Save Newsletter`, select it and replace `YOUR_SHEET_ID` with the long id in your spreadsheet’s address, between `/d/` and `/edit`.
6. In `Get row(s) in sheet`, replace `YOUR_SUBSCRIBERS_TAB_ID` with the number after `gid=` in the Subscribers tab’s address. `Save Newsletter` writes to the first tab, `gid=0`.
7. Add a Gmail credential and select it in `Sending Emails`.
8. Put two or three addresses of your own in the Subscribers tab, save, send a test through the form’s test address, then press Publish.

The logo step expects an `ai` file. The address in `Convertor` ends in `/convert/ai/to/png`. ConvertAPI reads the source and target formats from that address, so a logo that is an SVG or a JPG needs the address changed to match.

### How to use it

Open the form from `On form submission`, fill in `Brand Name`, `Brand Website` and `Query`, all required, and send it. The form confirms at once. The run goes on behind it: the research and the color study first, then a styled issue, a log row and an email for each subscriber. Open the run under Executions to follow it.

What to change for a different result

| To change | Where |
| --- | --- |
| How recent and how deep the news is | \`time\_range\` and \`search\_depth\` in the body of \`Tavily\`. \`Tavily1\` sends only the topic, so add them there to narrow the second search too |
| The voice of each section | The system message of \`Generate Content\` |
| Layout, greeting and footer | The HTML skeleton inside the system message of \`Convert Newsletter to HTML\`. Only text colors adapt to the brand, the layout stays as written |
| Issue length | The same message caps an issue at 1,000 words |
| Model | \`gpt-4.1-mini\` in \`OpenAI\` and \`OpenAI Chat Model6\` |

### Example

A form entry for a coffee roaster:

```text
Brand Name: Harbor Coffee Roasters
Brand Website: https://harborcoffee.example
Query: specialty coffee prices and cafe trends
```

`Generate Topics` answers in the parser’s shape, which insists on exactly three topics:

```json
{
  "title": "…",
  "topics": ["…", "…", "…"]
}
```

`Website scrape` returns the colors the same way, and `Convert Newsletter to HTML` returns the issue as a subject and an HTML body:

```json
{
  "primary_color": "…",
  "secondary_color": "…",
  "accent_color": "…",
  "background_color": "…"
}
```

```json
{
  "subject": "…",
  "content": "<html>…</html>"
}
```

Each subscriber receives the logo, the title in the primary color, a greeting by name and an introduction that gives the date. Then come three sections with Source links, a sources list sorted by publication, a closing note and a footer.

### For newcomers and experts

**If you are new.** n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. A credential is a key n8n keeps for you and hands to the node you pick it in. Run the form from its test address with a sheet that holds only your own addresses. Open that run under Executions and each node shows what it received and what it sent, so a bad key or a wrong tab turns up there.

**For experts.** Three inputs meet in `Merge`: the logo, the color study and the sections, in that order. `Convert Newsletter to HTML` reads them by position (`output[0]`, `output[1]`, `output[2]`), so keep the order if you rewire it.

Where the AI steps run

| Step | Model | What to know |
| --- | --- | --- |
| Generate Topics | \`gpt-4.1-mini\` through \`OpenAI\` | The parser accepts exactly three topics, so every run adds three more searches to the first one |
| Generate Content | The same model | Runs once per topic and is told to cite only real sources |
| Website scrape and Information Extractor | The same model | Read the homepage HTML as the server sends it, so a site that builds its page in the browser may leave them little to read |
| Convert Newsletter to HTML | \`gpt-4.1-mini\` through \`OpenAI Chat Model6\` | Runs once per subscriber, and the loop sends one email per pass |

### Good to know

Each run costs money and the mail leaves your own account, so test on your own addresses first.

- Billing: OpenAI, Tavily and ConvertAPI each bill their own part. A run makes four searches and one HTML pass for every subscriber
- A long list is a long run: the HTML agent runs again for each address, so the wording can differ a little between readers, and the log gets a row for each
- Sending limits: Gmail caps how many messages one account sends in a day, so a large list needs a sender built for bulk mail
- Unsubscribe: the layout has no unsubscribe line, so add one to the footer if the law where your readers live asks for it
- Open form: once it is published, anyone with the form’s address can start a run on your keys and mail your list. Turn on the form trigger’s basic authentication or keep the address private
- Keys: the Tavily and ConvertAPI keys sit in header fields, not in credentials, so they travel with any export of the workflow
- Sources and logo: the agents are told to cite only real sources, so read the first issues before the list gets them. The logo in each email is a link to the copy ConvertAPI stores, so check how long it keeps it
- A repair: the page’s copy of the file had lost the backslashes of three line breaks. The expressions that join the research and the sections joined them with the letter n. Mindket put them back
- Credentials: the JSON holds none, and nothing from its author’s account

## README

```markdown
# Branded newsletter writer and sender

An n8n workflow. Fill in a form with a brand's name, its website and a topic. It researches the topic, writes a
three-section newsletter in the brand's colors and emails it to every address on a Google Sheet.

## What is inside

- `workflow.json`: the workflow as n8n exports it, 26 nodes, one of them a sticky note. It holds no credential, and it
  names no spreadsheet: you point it at yours.
- `README.md`: these notes.

## Before you start

- An n8n instance, on n8n Cloud or your own server.
- An OpenAI API key.
- A Tavily API key.
- A ConvertAPI secret.
- A Google account for Gmail and Google Sheets.
- A spreadsheet with two tabs (below).

## Prepare the sheet

| Tab | Columns | What the workflow does with it |
|---|---|---|
| Subscribers | `Email`, `Name` | Reads every row. `Email` is where an issue goes, and `Name` fills the greeting |
| Log, the first tab | `Email`, `Message`, `Email Created At`, `Email Send At` | Adds a row for every issue it sends. `Email` holds the subject line and `Message` the HTML |

## Set it up

1. In n8n, create a workflow, open its menu and choose Import from File. Pick `workflow.json`.
2. Add an OpenAI credential and select it in `OpenAI` and in `OpenAI Chat Model6`.
3. Open `Tavily` and `Tavily1`. In each Authorization header, swap `<YOUR_TAVILY_KEY>` for your key. Keep the word
   Bearer and the space after it.
4. Do the same in `Convertor` with `<YOUR_CONVERTAPI_SECRET>`.
5. Add a Google Sheets credential. In `Get row(s) in sheet` and in `Save Newsletter`, select it and replace
   `YOUR_SHEET_ID` with the long id in your spreadsheet's address, between `/d/` and `/edit`.
6. In `Get row(s) in sheet`, replace `YOUR_SUBSCRIBERS_TAB_ID` with the number after `gid=` in the Subscribers tab's
   address. `Save Newsletter` writes to the first tab, `gid=0`. If your log is on another tab, change it to that
   tab's `gid=` number.
7. Add a Gmail credential and select it in `Sending Emails`.
8. Put two or three addresses of your own in the Subscribers tab and save. Send a test through the form's test
   address, then press Publish at the top of the canvas (or Shift+P).

## The logo step

`Convertor` posts the brand's logo file to `https://v2.convertapi.com/convert/ai/to/png`. ConvertAPI names the source
and target formats in that address, so the step suits a logo that is an `ai` file. For an SVG or a JPG, change the
`ai` part of the address to the logo's format. The email's logo is the link ConvertAPI returns for the converted file
(`Files[0].Url`).

## Change the look

- News window: `time_range` and `search_depth` sit in the body of `Tavily`. `Tavily1` sends only the topic, so add
  them there to narrow the second search too.
- Voice: edit the system message of `Generate Content` for the sections and `Generate Topics` for the title and topics.
- Layout, greeting and footer: the HTML skeleton is inside the system message of `Convert Newsletter to HTML`. Only
  text colors adapt to the brand. The same message caps an issue at 1,000 words.
- Model: `gpt-4.1-mini` in the two OpenAI nodes.
- Order: `Merge` joins the logo, the colors and the sections in that order, and `Convert Newsletter to HTML` reads
  them by position (`output[0]`, `output[1]`, `output[2]`). Keep the order if you rewire it.

## Good to know

- The form answers as soon as it is sent. The run then researches once and writes an HTML issue for every subscriber,
  so a long list is a long run. The wording can differ a little from one reader to the next, and the log gets a row
  for each.
- A run makes four searches: one for the topic and one for each of the three sub-topics. OpenAI, Tavily and ConvertAPI
  each bill their part.
- Gmail limits how many messages one account sends a day. For a large list, use a sender built for bulk mail.
- The layout has no unsubscribe line. Add one to the footer if the law where your readers live asks for it.
- Once the workflow is published, anyone with the form's address can start a run that spends your keys and mails your
  list. The form trigger can ask for a username and password.
- The Tavily and ConvertAPI keys sit in header fields, not in credentials, so they travel with any export of the
  workflow. Take them out before you share it.
- The agents are told to cite only real sources. Read the first issues before the list gets them.
- The brand's homepage goes to OpenAI and the logo to ConvertAPI, which stores the converted file. Check how long it
  keeps it before you rely on the logo link in an old issue.
- The copy Mindket started from had lost the backslashes of three line breaks, in the expressions of `Generate Topics`,
  `Generate Content` and `Convert Newsletter to HTML` that join the research and the sections. They joined with the
  letter n. Mindket put the line breaks back.
```

## What is in it

2 files, 30 KB, downloaded as a zip.

```text
README.md  5 KB
workflow.json  26 KB
```

## Workflow check

Checked by Mindket on 13 Nov 2026. Read from the workflow’s file, not from a run.

- Steps: 20 steps, starting on a form
- AI: 5 steps call an AI model: Information Extractor, Convert Newsletter to HTML, Website scrape, Generate Topics and Generate Content
- Sign-ins: Signs in to: Google Sheets, Gmail, OpenAI, Tavily and ConvertAPI
- API keys: No API key is left in the file; 2 blanks in it for your own key
- Step types: Mindket’s checker reads all 10 of its step types

## Get it

- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/25d97052-6f1d-4828-8276-f5c1c3bf2b4d)
- [Its page on Mindket](https://mindket.com/p/25d97052-6f1d-4828-8276-f5c1c3bf2b4d)
