# Daily AI News Digest: Setup Guide
*Groky Agent Kit #04 · Built and tested on n8n 2.43.7, live-tested with real feeds, OpenAI and Gmail*

**What it does:** Every morning (7:00 AM by default) it:
1. Reads a list of free AI-news RSS feeds.
2. Keeps only fresh, on-topic stories you haven't already received.
3. Has AI pick the best ones and write a short summary plus a "why it matters" line for each.
4. Emails you a clean digest.

**Every link goes to the original article from the feed.** The AI never supplies links. Its picks are matched back to the real feed items, and anything it makes up is thrown away.

Time needed: about 20 minutes.

---

## 1. Checklist: what you need
- [ ] **An n8n account** (Cloud or self-hosted). It must be running at send time.
- [ ] **An OpenAI API account with billing turned on.** One digest is one small request; see https://openai.com/api/pricing.
- [ ] **A Gmail account** to send from.
- [ ] *Optional:* a Slack workspace or a Telegram bot, if you'd also like the digest there.

---

## 2. Import and connect
1. In n8n, click **Create workflow**. In the new empty workflow, open the **⋯** menu next to the workflow name (top left), then choose **Import → From file**, and pick `workflow.json`.

**Connect OpenAI on Pick & Summarize:**
1. Go to https://platform.openai.com/api-keys and click **Create new secret key**. Give it a name and click **Create secret key**, then copy it. You'll only see it once.
2. In n8n, double-click the **Pick & Summarize** node.
3. At the top of the node, click the credential dropdown (labelled **Credential** or **Credential for OpenAI**) and choose **Create new credential**.
4. In the **OpenAI** credential window, paste your key into **API Key**. Leave **Organization ID (optional)** and **Base URL** as they are.
5. Click **Save**. A green **Connection tested successfully** message confirms it worked. Close the window; the node now shows your credential.

**Connect Gmail on Send Digest Email:**
1. Double-click **Send Digest Email**. Click the credential dropdown at the top and choose **Create new credential**.
2. **n8n Cloud:** click **Sign in with Google**, pick your account, and allow access. When you see **Account connected**, click **Save**.
3. **Self-hosted:** follow the box below, then come back.

**Self-hosted n8n only: create your own Google sign-in client (one time, about 10 minutes).** n8n's official guide is at https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/. In short:
1. Go to https://console.cloud.google.com. Click the project dropdown in the top bar, then **New project**. Enter a **Project name**, click **Create**, and make sure the new project is selected in the dropdown.
2. Open the menu (☰) and go to **APIs & Services → Library**. Search for each of these, open it, and click **Enable**: **Gmail API**.
3. Go to **Google Auth Platform → Branding**. If you see "Google Auth platform not configured yet", click **Get started**, then:
   - Under **App Information**, enter an **App name** and choose your **User support email**. Click **Next**.
   - Under **Audience**, pick **External** (or **Internal** if you're on Google Workspace and only your team will use it). Click **Next**.
   - Under **Contact Information**, enter your email. Click **Next**.
   - Tick **I agree to the Google API Services: User Data Policy**, click **Continue**, then click **Create**.
4. If you picked **External**: click **Audience**, and under **Test users** click **Add users**. Enter the Gmail address you'll connect, then click **Save**.
5. In n8n, open the new credential window and copy the **OAuth Redirect URL** (click it to copy). It looks like `https://YOUR-N8N-DOMAIN/rest/oauth2-credential/callback`, or `http://localhost:5678/rest/oauth2-credential/callback` on your own computer.
6. Back in Google, go to **Google Auth Platform → Clients** and click **Create client**. Set **Application type** to **Web application** and give it a name. Under **Authorized redirect URIs**, click **Add URI**, paste the n8n URL, and click **Create**.
7. A window shows your **Client ID** and **Client secret**. Copy both into the n8n fields **Client ID** and **Client Secret**. Google only shows the secret once, so keep a copy somewhere safe.
8. In n8n, click **Sign in with Google** and pick your account. If Google says "Google hasn't verified this app", that's your own app: click **Continue**, then allow access. n8n should now show **Account connected**. Click **Save**.

> While your Google app is in **Testing** mode, Google ends the sign-in after **7 days**. When a node starts failing with an auth error, open the credential and click **Reconnect**. To stop this, publish the app under **Audience** (Google may ask you to verify it).


![The workflow](../screenshots/k04-canvas.png)

---

## 3. Set the time and time zone
**Time zone** (the schedule uses this setting):
1. Open the **⋯** menu next to the workflow name (top left) and choose **Settings**.
2. In the **Workflow settings** window, find **Timezone**. It's set to `America/Chicago`.
3. Click it, type your city or region (for example "London" or "New York"), and pick your zone from the list.
4. Click **Save**.

**Send time:**
1. Double-click the **Every Morning** node.
2. Under **Trigger Rules → Trigger Interval**, leave **Days** selected.
3. Set **Trigger at Hour** (for example **7am**) and **Trigger at Minute** (0–59).
4. Close the node.

**Date in the email:** in **Config**, set `cfg_timezone` to the same zone, written like `Europe/London` or `America/New_York`. This makes the date line in the email match.

---

## 4. Fill in Config
| Field | What it does |
|---|---|
| `cfg_recipient_email` | Where the digest goes. Separate several addresses with commas. |
| `cfg_digest_title` | The email title, for example "Your Daily AI Brief" |
| `cfg_audience` | Who it's for. The AI uses this to choose stories. |
| `cfg_keywords` | Comma-separated. A story is kept only if its title or snippet contains at least one of them. Leave it empty to keep everything. |
| `cfg_feeds` | One RSS feed URL per line (see below) |
| `cfg_max_items` | Stories per digest (default 7) |
| `cfg_max_candidates` | How many fresh stories the AI chooses from (default 40) |
| `cfg_max_age_hours` | Ignore stories older than this (default 36) |
| `cfg_dedupe_days` | How long to remember stories already sent (default 7) |
| `cfg_openai_model` | Default `gpt-5-mini` (updated in v1.1 ahead of OpenAI's Jan 14, 2027 `gpt-4o-mini` retirement; also works with `gpt-5.4-mini`, `gpt-6-luna`, or `gpt-4o-mini`) |

**Default feeds** (all checked working in October 2026):
- TechCrunch AI: `https://techcrunch.com/category/artificial-intelligence/feed/`
- The Verge AI: `https://www.theverge.com/rss/ai-artificial-intelligence/index.xml`
- MIT Technology Review AI: `https://www.technologyreview.com/topic/artificial-intelligence/feed`
- OpenAI News: `https://openai.com/news/rss.xml`
- Hugging Face Blog: `https://huggingface.co/blog/feed.xml`
- MIT News AI: `https://news.mit.edu/rss/topic/artificial-intelligence2`

**To add a feed:** paste its URL on a new line. Most blogs have a `/feed` or `/rss` address. A feed that's down is skipped, and the rest still run.

**How to edit Config:**
1. Double-click the **Config** node. Under **Fields to Set**, you'll see one row per setting, with the name on the left and the value on the right.
2. Click a value box and replace the example text. Keep the field **names** exactly as they are, because the rest of the workflow looks them up by name.
3. Leave the **Mode** setting alone (it should stay on manual mapping) and don't add or delete fields.
4. Close the node. Changes are saved with the workflow, and the editor autosaves.

**Tips for these fields:**
- `cfg_feeds` holds several lines. Click the value box and put one URL per line. The box grows as you type, and you can also drag its corner.
- For several recipients in `cfg_recipient_email`, use commas without line breaks, for example `you@example.com, partner@example.com`.
- To send everything from your feeds, clear `cfg_keywords` completely. Don't type "none".

---

## 5. Test it
1. Click the orange **Execute workflow** button at the bottom of the canvas.
2. Open **Filter & Dedupe** to see how many stories were fetched and kept. `stats` shows why the others were dropped.
3. Open **Build Digest** to preview the result.
4. Check your inbox.
5. Click **Publish** (top right of the editor). On n8n 1.x, this is the **Active** toggle instead.

**Important:** the "already sent" memory is only saved reliably on scheduled runs of the **published** workflow. Manual test runs may not remember what they sent, so you might see the same stories again while testing.

![What the digest looks like](../screenshots/k04-digest-email.png)

---

## 6. Optional: Slack or Telegram
- **Slack:** right-click **Post to Slack (optional)** on the canvas and choose **Activate**. Connect Slack, and set the channel (default `#ai-news`).
- **Telegram:** right-click **Post to Telegram (optional)** on the canvas and choose **Activate**.
  1. Create a bot with @BotFather and paste its token into the credential.
  2. Set **Chat ID**. To find it, message your bot, then open `https://api.telegram.org/bot<TOKEN>/getUpdates`.
  3. Long digests are cut off at 4,000 characters.

---

## 7. Customize it
- **Editorial style:** edit the **System** message in **Pick & Summarize**. For example, "focus on tools I can use today".
- **Email look:** the HTML is in **Build Digest**. Change the colors and fonts in the `style="..."` parts.
- **Fewer, sharper stories:** lower `cfg_max_items` and make the keywords more specific.

---

## 8. Troubleshooting
| Problem | Fix |
|---|---|
| "AI returned no usable picks" | The AI's answer didn't match any story. Run it again. If it keeps happening, check that **Pick & Summarize → Options → Output Format** is still "JSON Schema". |
| No email, and the run stopped at **Anything New?** | There were no fresh, on-topic, unsent stories. Raise `cfg_max_age_hours`, add feeds, or broaden the keywords. |
| A feed always fails | Open its URL in your browser. Some sites rate-limit automated readers. Remove it or swap it for another. |
| The same stories every day | The workflow must be **published** for the memory to save. Also check `cfg_dedupe_days`. |
| Wrong send time | Check **⋯ → Settings → Timezone** (step 3). |
| OpenAI 401 / 429 | Bad API key, or no credit left. |
| Gmail errors | Reconnect the credential, and check `cfg_recipient_email`. |

**Accuracy note:** summaries are written only from each article's RSS title and snippet. The "why it matters" line is the AI's opinion. The email footer says so.


---

## Want the other 4 tested n8n AI agent workflows?

This **Daily AI & Industry News Digest** is Workflow #4 from the **n8n AI Agent Starter Kit**.

The full kit ($39 one-time launch price through Oct 31, then $49 — free lifetime updates) includes all 5 tested workflows:
1. **`01-inbox-triage` — Inbox Triage & Draft Reply:** Labels Gmail (`AI/Urgent`, `AI/Needs Reply`, `AI/Newsletter`, `AI/Receipt`, `AI/Other`) and drafts threaded replies (`drafts_only: true`).
2. **`02-lead-follow-up` — Lead Capture + 3-Touch Follow-Up:** Webhook for any form → Google Sheets log → personalized Day-0 reply + Day-2 and Day-5 nudges that stop automatically when the lead replies.
3. **`03-website-chatbot` — Website FAQ & Lead-Capture Chatbot:** Embeddable website chat widget grounded strictly in your FAQ + lead capture + human handoff email alert.
4. **`04-ai-news-digest` — Daily AI & Industry News Digest:** (This workflow)
5. **`05-content-repurposer` — 1-to-4 Content Repurposer:** Turn one URL or draft into a 5-post X thread, LinkedIn post, 5 video hooks, and newsletter blurb with a source-fidelity checker.

👉 **Get the full n8n AI Agent Starter Kit ($39):** [https://whop.com/jreamers-com/agent-starter-kit/](https://whop.com/jreamers-com/agent-starter-kit/)
👉 **Full test breakdown & architecture notes:** [https://agent-starter-kit-775.pages.dev/](https://agent-starter-kit-775.pages.dev/)
