← Back to home

Setup Guide

Everything you need to get your AI newsletter running in minutes.

1

Create your repository

Create a new GitHub repository (public or private) that will host your DayBrief configuration and newsletter output.

2

Create config.yaml

Add a config.yaml at the root of your repository:

gemini:
  model: "gemini-3-flash-preview"

newsletter:
  language: "en"
  max_highlights: 5
  default_lookback: "48h"
  editorial_prompt: "A casual, tech-savvy tone with practical insights."

mail:
  subject_prefix: "[DayBrief]"

sources:
  rss:
    - url: "https://example.com/feed.xml"
      name: "Example Blog"
  youtube:
    - channel_id: "UCxxxxxxxx"
      name: "My Channel"
  podcasts:
    - url: "https://example.com/podcast.xml"
      name: "My Podcast"

See the full config.yaml reference in the repository, or use the web dashboard to edit it visually.

3

Set up GitHub Secrets

Go to your repository's Settings → Secrets and variables → Actions and add:

SecretDescriptionRequired
GEMINI_API_KEYGoogle Gemini API keyYes
YOUTUBE_API_KEYYouTube Data API keyIf YouTube
SMTP_HOSTSMTP server hostnameYes
SMTP_PORTSMTP port (default: 587)Yes
SMTP_USERNAMESMTP usernameYes
SMTP_PASSWORDSMTP passwordYes
MAIL_FROM_EMAILSender emailYes
MAIL_FROM_NAMESender name (default: DayBrief)No
DAYBRIEF_RECIPIENTSComma-separated recipientsYes
4

Add the GitHub Action workflow

Create .github/workflows/daybrief.yml:

name: DayBrief Newsletter
on:
  schedule:
    - cron: '0 7 * * 1-5'  # Weekdays at 7am UTC
  workflow_dispatch:

permissions:
  contents: write

jobs:
  newsletter:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: yoanbernabeu/daybrief@v0.1.0
        with:
          gemini_api_key: ${{ secrets.GEMINI_API_KEY }}
          youtube_api_key: ${{ secrets.YOUTUBE_API_KEY }}
          smtp_host: ${{ secrets.SMTP_HOST }}
          smtp_port: ${{ secrets.SMTP_PORT }}
          smtp_username: ${{ secrets.SMTP_USERNAME }}
          smtp_password: ${{ secrets.SMTP_PASSWORD }}
          mail_from_name: ${{ secrets.MAIL_FROM_NAME }}
          mail_from_email: ${{ secrets.MAIL_FROM_EMAIL }}
          recipients: ${{ secrets.DAYBRIEF_RECIPIENTS }}
5

Run & receive

On each scheduled run, DayBrief will:

  1. Fetch new content published since the last run
  2. Send each item to Gemini AI for individual summarization
  3. Synthesize all summaries into a newsletter with editorial, highlights, and resources
  4. Save the newsletter as JSON in output/
  5. Render HTML and send via SMTP

Trigger manually from the Actions tab to test.

6

Share your newsletter

Anyone can view your newsletter archive via a public URL:

yoanbernabeu.github.io/daybrief/owner/repo

Works for any public repository with JSON files in output/.

Ready to start?

Manage your configuration visually from the dashboard.