This guide walks through setting up GitHub Weekly Reporter without the setup CLI command. Use this if you prefer full control or are setting up in an existing repository.
- A GitHub account
- A personal access token (PAT). Manual setup only needs runtime-level permissions (not the full set the
setupcommand requires). See Security: PAT Permissions for details. - An LLM API key for AI-generated narratives (free tiers available from Groq and OpenRouter)
Create a new repository for your weekly reports (e.g. weekly-report).
gh repo create weekly-report --public --clone
cd weekly-reportOr create it via the GitHub web UI at https://github.com/new.
Create two workflow files in your repository.
Runs every day at midnight (your timezone) to collect yesterday's GitHub events.
name: Daily Fetch
on:
schedule:
# Run daily at midnight in your timezone (this example is midnight JST = 15:00 UTC)
- cron: '0 15 * * *'
workflow_dispatch:
permissions:
contents: write
jobs:
daily:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# github-token requires a PAT to read activity across all your
# repositories. The default GITHUB_TOKEN only has access to the
# current repository.
# Add your PAT as a repository secret named GH_PAT (see Step 3).
# Tip: pin to a commit SHA instead of @main for better security.
# See docs/security.md for details.
- uses: deariary/github-weekly-reporter@main
with:
github-token: ${{ secrets.GH_PAT }}
username: 'YOUR_USERNAME'
mode: 'daily'
language: 'en'
timezone: 'UTC'Runs every Monday (1 hour after daily fetch) to generate the full report. Can also be triggered manually.
name: Weekly Report
on:
schedule:
# Run Monday, 1 hour after daily fetch (this example is Mon 01:00 JST = Sun 16:00 UTC)
- cron: '0 16 * * 0'
workflow_dispatch:
permissions:
contents: write
pages: write
env:
SITE_TITLE: 'Dev\nPulse'
jobs:
weekly:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
# Tip: pin to a commit SHA instead of @main for better security.
# See docs/security.md for details.
- uses: deariary/github-weekly-reporter@main
with:
github-token: ${{ secrets.GH_PAT }}
username: 'YOUR_USERNAME'
mode: 'weekly'
language: 'en'
timezone: 'UTC'
llm-provider: 'openrouter'
llm-model: 'YOUR_MODEL_NAME'
openrouter-api-key: ${{ secrets.OPENROUTER_API_KEY }}The daily fetch runs every day at midnight (your timezone) and collects the previous day's events. The weekly report runs every Monday, 1 hour later, and covers the previous ISO week (Mon-Sun). Both use UTC cron.
Calculate your local midnight for the daily fetch (then add 1 hour for weekly):
| Your Timezone | Cron for Midnight |
|---|---|
| UTC | 0 0 * * * |
| US/Eastern (UTC-5) | 0 5 * * * |
| US/Pacific (UTC-8) | 0 8 * * * |
| Europe/London (UTC+0/+1) | 0 0 * * * or 0 23 * * * |
| Europe/Berlin (UTC+1/+2) | 0 23 * * * or 0 22 * * * |
| Asia/Tokyo (UTC+9) | 0 15 * * * |
| Asia/Shanghai (UTC+8) | 0 16 * * * |
| Australia/Sydney (UTC+10/+11) | 0 14 * * * or 0 13 * * * |
For free usage, we recommend OpenRouter or Groq:
| Provider | Input Name | Secret Name | Models Page |
|---|---|---|---|
| OpenRouter | openrouter-api-key |
OPENROUTER_API_KEY |
https://openrouter.ai/models |
| Groq | groq-api-key |
GROQ_API_KEY |
https://console.groq.com/docs/models |
| Google Gemini | gemini-api-key |
GEMINI_API_KEY |
https://ai.google.dev/gemini-api/docs/models |
| OpenAI | openai-api-key |
OPENAI_API_KEY |
https://platform.openai.com/docs/models |
| Anthropic | anthropic-api-key |
ANTHROPIC_API_KEY |
https://docs.anthropic.com/en/docs/about-claude/models |
| Grok (xAI) | grok-api-key |
GROK_API_KEY |
https://docs.x.ai/docs/models |
Update the llm-provider, llm-model, and the corresponding API key input in your workflow.
The action needs a PAT to read activity across all your repositories. The default GITHUB_TOKEN only has access to the current repository and cannot collect events from other repos.
- Go to your repository on GitHub
- Navigate to Settings > Secrets and variables > Actions
- Click New repository secret
- Name:
GH_PAT - Value: your personal access token (the same one from the Prerequisites)
- Click Add secret
Add your LLM provider's API key as a secret:
- Click New repository secret
- Name: the secret name from the table above (e.g.
GROQ_API_KEY) - Value: your API key
- Click Add secret
- Go to Settings > Pages
- Under Source, select Deploy from a branch
- Select the
gh-pagesbranch and/ (root)folder
The gh-pages branch is created automatically on the first deploy.
4. Click Save
The daily fetch runs automatically on the cron schedule. You can also trigger it manually:
- Go to Actions tab
- Click Daily Fetch workflow
- Click Run workflow
The weekly report runs automatically every Monday. You can also trigger it manually:
- Go to Actions tab
- Click Weekly Report workflow
- Click Run workflow
The report will be generated and deployed to GitHub Pages.
After the weekly workflow completes, your report is available at:
https://YOUR_USERNAME.github.io/weekly-report/
After setup, daily fetches run automatically. To generate a weekly report anytime:
- Go to your repository's Actions tab
- Click Weekly Report
- Click Run workflow
- Optionally set the
dateinput to target a specific week (format:YYYY-MM-DD)
The report will be built and deployed to GitHub Pages within a few minutes.
Set these in the env: block of your workflow:
| Variable | Default | Description |
|---|---|---|
SITE_TITLE |
Dev\nPulse |
Site title in the header and hero section |
BASE_URL |
(auto-derived) | Override if using a custom domain |
See the full list of inputs in action.yml.
By default, the base URL is derived from your repository name:
https://YOUR_USERNAME.github.io/REPO_NAME
If you use a custom domain:
- Add a
CNAMEfile (the render command generates it automatically for custom domains) - Configure the custom domain in Settings > Pages > Custom domain
- Add
BASE_URLto your workflow env:
env:
SITE_TITLE: 'My Reports'
BASE_URL: 'https://reports.example.com'Set the language input in your workflow:
| Code | Language |
|---|---|
en |
English |
ja |
Japanese (日本語) |
zh-CN |
Chinese Simplified (简体中文) |
zh-TW |
Chinese Traditional (繁體中文) |
ko |
Korean (한국어) |
es |
Spanish (Español) |
fr |
French (Français) |
de |
German (Deutsch) |
pt |
Portuguese (Português) |
ru |
Russian (Русский) |
Make sure your workflow has the required permissions:
permissions:
contents: write
pages: writeLLM errors will cause the workflow to fail. Check:
- Is the API key set correctly as a repository secret?
- Is the model name correct? Check the provider's models page.
- Are you within the provider's rate limits?
- Make sure Pages is enabled in Settings > Pages
- Check that the
gh-pagesbranch exists (created on first deploy) - Wait a few minutes for the first deployment to propagate