Open Source Friday - Remotion - 05-01-2026 #8
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Scheduled Guest & Host Notifications | |
| on: | |
| issues: | |
| types: [labeled] | |
| jobs: | |
| notify-guest: | |
| runs-on: ubuntu-latest | |
| if: github.event.label.name == 'scheduled' | |
| steps: | |
| - name: Notify guest with schedule and prep guide | |
| uses: actions/github-script@v7 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| const githubHandle = context.payload.issue.user.login; | |
| console.log('Processing issue #', context.issue.number, 'by author:', githubHandle); | |
| if (!githubHandle) { | |
| console.log('No GitHub handle found for issue #', context.issue.number); | |
| return; | |
| } | |
| const isValidGitHubHandle = (handle) => { | |
| if (!handle || typeof handle !== 'string') return false; | |
| if (handle.length < 1 || handle.length > 39) return false; | |
| return /^[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]$|^[a-zA-Z0-9]$/.test(handle); | |
| }; | |
| if (!isValidGitHubHandle(githubHandle)) { | |
| console.log('Handle validation failed for issue #', context.issue.number); | |
| return; | |
| } | |
| const safeHandle = githubHandle.replace(/[<>'"&]/g, ''); | |
| const commentBody = [ | |
| `Hey @${safeHandle} ✨`, | |
| '', | |
| "You're officially scheduled for **Open Source Friday**! 🚀🎥", | |
| '', | |
| 'The stream starts at **1:00 PM ET**. Please join at **12:45 PM ET** for prep and tech checks. Be ready with your demo—our audience strongly prefers technical demos.', | |
| '', | |
| 'Here are some guidelines on preparing for the live stream:', | |
| '', | |
| '[Preparation Instructions](https://github.com/githubevents/open-source-friday/blob/main/admin/guest-assets/Streaming-Guide.md)', | |
| '', | |
| 'Let us know if you have any questions!', | |
| '', | |
| 'Kedasha, Andrea & Kevin 👯', | |
| ].join('\n'); | |
| try { | |
| const result = await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.issue.number, | |
| body: commentBody, | |
| }); | |
| console.log('Guest notification created, ID:', result.data.id); | |
| } catch (error) { | |
| console.error('Failed to create guest comment for issue #', context.issue.number); | |
| } | |
| remind-hosts: | |
| runs-on: ubuntu-latest | |
| if: github.event.label.name == 'scheduled' | |
| steps: | |
| - name: Post host checklist | |
| uses: actions/github-script@v7 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| script: | | |
| const commentBody = [ | |
| 'Hi @LadyKerr, @AndreaGriffiths11, and @KevinCrosby,', | |
| '', | |
| 'This stream has been scheduled. Please complete the following tasks:', | |
| '', | |
| '- [ ] Create social card', | |
| '- [ ] Create meetup link', | |
| '- [ ] Create and schedule twitch stream (LinkedIn, Twitch, YouTube)', | |
| '- [ ] Schedule social media post (Twitter)', | |
| '- [ ] Send prep doc to guests', | |
| '', | |
| 'You can find the instructions in this [guide](https://github.com/githubevents/open-source-friday/blob/main/admin/guest-assets/Streaming-Guide.md).', | |
| ].join('\n'); | |
| await github.rest.issues.createComment({ | |
| owner: context.repo.owner, | |
| repo: context.repo.repo, | |
| issue_number: context.issue.number, | |
| body: commentBody, | |
| }); |