Due to OAuth token scope limitations, the GitHub Actions workflow file needs to be added via the web interface.
- Go to: https://github.com/sionsmith/zoom-meeting-notes/new/main
- In the filename field, type:
.github/workflows/sync-zoom-recordings.yml - Copy and paste the content below into the editor
- Click "Commit new file"
name: Sync Zoom Recordings
on:
# Run every 15 minutes
schedule:
- cron: '*/15 * * * *'
# Allow manual trigger
workflow_dispatch:
# Prevent concurrent runs
concurrency:
group: zoom-sync
cancel-in-progress: false
jobs:
sync:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
# Fetch full history for proper git operations
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build TypeScript
run: npm run build
- name: Sync Zoom recordings
env:
ZOOM_ACCOUNT_ID: ${{ secrets.ZOOM_ACCOUNT_ID }}
ZOOM_CLIENT_ID: ${{ secrets.ZOOM_CLIENT_ID }}
ZOOM_CLIENT_SECRET: ${{ secrets.ZOOM_CLIENT_SECRET }}
ZOOM_USER_ID: ${{ secrets.ZOOM_USER_ID }}
OUTPUT_DIR: 'meeting-notes'
ENABLE_ACTION_ITEMS: 'true'
run: npm start
- name: Configure Git
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
- name: Commit and push changes
run: |
# Check if there are any changes
if [ -n "$(git status --porcelain)" ]; then
# Count new markdown files
NEW_FILES=$(git status --porcelain | grep "^??" | grep "\.md$" | wc -l | tr -d ' ')
# Add all changes
git add .
# Create commit message
DATE=$(date -u +"%Y-%m-%d")
git commit -m "chore: add meeting notes for ${DATE} (${NEW_FILES} meetings)
🤖 Generated with Zoom Meeting Notes Archiver
Automated sync of Zoom cloud recordings and transcripts
Co-Authored-By: GitHub Actions <github-actions[bot]@users.noreply.github.com>"
# Push changes
git push
echo "✅ Pushed ${NEW_FILES} new meeting notes"
else
echo "ℹ️ No new meeting notes to commit"
fi
- name: Upload state as artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: state-file
path: .state.json
retention-days: 7Go to: https://github.com/sionsmith/zoom-meeting-notes/settings/secrets/actions
Add the following secrets:
ZOOM_ACCOUNT_ID- Your Zoom Account IDZOOM_CLIENT_ID- Your Zoom Client IDZOOM_CLIENT_SECRET- Your Zoom Client SecretZOOM_USER_ID- (Optional) User ID or "me"
- Go to: https://github.com/sionsmith/zoom-meeting-notes/settings/actions
- Under "Workflow permissions", select:
- ✅ Read and write permissions
- Click "Save"
- Go to: https://github.com/sionsmith/zoom-meeting-notes/actions
- Select "Sync Zoom Recordings" workflow
- Click "Run workflow"
- Click the green "Run workflow" button
Note: The workflow will automatically run every 15 minutes once set up.