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:
| Secret | Description | Required |
|---|---|---|
GEMINI_API_KEY | Google Gemini API key | Yes |
YOUTUBE_API_KEY | YouTube Data API key | If YouTube |
SMTP_HOST | SMTP server hostname | Yes |
SMTP_PORT | SMTP port (default: 587) | Yes |
SMTP_USERNAME | SMTP username | Yes |
SMTP_PASSWORD | SMTP password | Yes |
MAIL_FROM_EMAIL | Sender email | Yes |
MAIL_FROM_NAME | Sender name (default: DayBrief) | No |
DAYBRIEF_RECIPIENTS | Comma-separated recipients | Yes |
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:
- Fetch new content published since the last run
- Send each item to Gemini AI for individual summarization
- Synthesize all summaries into a newsletter with editorial, highlights, and resources
- Save the newsletter as JSON in
output/ - 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.