.github/workflows/ that handle both scheduled and manual artifact creation. Both workflows require the same two secrets and delegate the actual work to the same CLI command.
Required secrets
Before using either workflow, add these secrets to your repository under Settings → Secrets and variables → Actions:| Secret | Description |
|---|---|
HACKMD_API_TOKEN | Your HackMD API token. GITHUB_TOKEN is provisioned automatically by a GitHub App — see the workflow details below. |
BOT_ID | The GitHub App ID used to generate an installation token with repo scope. |
BOT_PRIVATE_KEY | The private key for the GitHub App. |
The workflows use a GitHub App (
BOT_ID + BOT_PRIVATE_KEY) to generate a scoped GITHUB_TOKEN at runtime via the actions/create-github-app-token action. This allows the token’s permissions to be scoped to the target repository’s organization dynamically, based on the USER field read from the meeting base file.Manual workflow
File:.github/workflows/create-meeting-artifacts-manual.yml
This workflow runs on workflow_dispatch (manual trigger from the GitHub UI) and on workflow_call (called from other workflows, including the scheduled one). It accepts two inputs:
| Input | Type | Required | Default | Description |
|---|---|---|---|---|
meeting_group | string | yes | — | The shortname of the meeting group, matching the meeting_base_<shortname> template filename. |
dry_run | boolean | no | false | When true, passes --dry-run to the CLI. No GitHub issues or HackMD docs are created. |
Triggering manually
Workflow definition
.github/workflows/create-meeting-artifacts-manual.yml
Scheduled workflow
File:.github/workflows/create-meeting-artifacts-scheduled.yml
This workflow runs daily at midnight UTC (0 0 * * *) and can also be triggered manually via workflow_dispatch. It automatically discovers every meeting_base_* file in the templates/ directory and runs the manual workflow for each group in parallel using a matrix strategy.
How group discovery works
Acreate-matrix job runs first and uses find to list all meeting_base_* files, strips the prefix, and outputs a JSON array of shortnames. That array becomes the matrix for the create-artifacts job, which calls the manual workflow once per group.
This means you do not need to edit the scheduled workflow when you add a new meeting group — simply adding a new meeting_base_<shortname> file to templates/ is sufficient.
Workflow definition
.github/workflows/create-meeting-artifacts-scheduled.yml
fail-fast: false ensures that a failure for one meeting group does not cancel artifact creation for the remaining groups in the matrix.Changing the schedule
To change how often the scheduled workflow runs, edit thecron expression in create-meeting-artifacts-scheduled.yml:
Adding a new meeting group
No workflow changes are needed. Add ameeting_base_<shortname> file to your templates/ directory and the scheduled workflow will pick it up on its next run. To test immediately, trigger the manual workflow with the new shortname.
See Meeting base configuration for details on the template file format.