A GitHub Actions workflow that lets you download files into your repository just by writing a special commit message — no terminal or command line needed.
- Fork this repo
- Go to your repository on GitHub
- Click Settings → Actions → General
- Scroll down to Workflow permissions
- Select Read and write permissions and click Save
That's it — no tokens or secrets needed.
You trigger downloads by editing any file directly on GitHub and using a special commit message when saving.
- Open any file in your repository on GitHub (for example, this
README.md) - Click the pencil icon (✏️) at the top right to edit it
- Make any small change (add a space, a blank line, anything)
- Scroll down to the Commit changes section
- Select Commit directly to the
mainbranch - In the commit message box, type one of the commands below
- Click Commit changes
The workflow will run automatically and the downloaded files will appear in the downloads/ folder.
Downloads each file and saves it by its original filename.
download: URL1 URL2 URL3
Examples:
download: https://example.com/file.zip
download: https://example.com/a.zip https://example.com/b.pdf https://example.com/c.zip
Downloads all files and bundles them into one timestamped .zip archive saved to downloads/.
download-zip: URL1 URL2 URL3
Examples:
download-zip: https://example.com/file.zip
download-zip: https://example.com/a.zip https://example.com/b.pdf https://example.com/c.zip
The resulting archive will be named like: archive_20250423_153012.zip
| Command | Result |
|---|---|
download: |
Each file saved individually in downloads/ with its original name |
download-zip: |
All files bundled into a single archive_YYYYMMDD_HHMMSS.zip in downloads/ |
After committing, you can monitor the workflow:
- Click the Actions tab in your repository
- Click the latest workflow run to see progress and logs
- Once it completes, go back to the Code tab and open the
downloads/folder to find your files
- URLs must be publicly accessible (no login required)
- Separate multiple URLs with spaces
- The workflow skips itself using
[skip ci]in its own commit message to avoid infinite loops - If no valid
download:ordownload-zip:command is found in the commit message, the workflow will exit without doing anything