🔔
GitHub リポジトリの更新を Nostr へ通知する
概要
GitHub リポジトリの更新は GitHub Actions ワークフローを使うと簡単に拾うことができます。
トリガーされたら Nostr へ通知します。
そもそも Nostr とは
こちらに軽くまとめてあります。
ワークフロー
on
と jobs.if
で Pull request がマージされたときにトリガーし snow-actions/nostr で投稿します。
投稿
通常の投稿は NIP-01 kind 1 です。
vars.NOSTR_RELAYS
と secrets.NOSTR_PRIVATE_KEY
はリポジトリ設定の Secrets and variables > Actions から設定しておきます。
jobs:
notify:
if: ${{ github.event.pull_request.merged == true }}
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: snow-actions/nostr@v1.6.0
with:
relays: ${{ vars.NOSTR_RELAYS }}
private-key: ${{ secrets.NOSTR_PRIVATE_KEY }}
content: |
#nostter ${{ github.event.pull_request.title }}
${{ github.event.pull_request.html_url }}
tags: |
- ["t", "nostter"]
※ハッシュタグがなければ tags
は不要です。
ユーザーステータス
また NIP-38 kind 30315 でユーザーステータスを更新できます。
ずっと表示しておくのも何なので 12 時間で expire するようにします。
jobs:
user-status:
if: ${{ github.event.pull_request.merged == true }}
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- run: echo "expiration=$(date +%s --date '12 hours')" >> $GITHUB_ENV
- uses: snow-actions/nostr@v1.6.0
with:
relays: ${{ vars.NOSTR_RELAYS }}
private-key: ${{ secrets.NOSTR_PRIVATE_KEY }}
kind: 30315
content: |
#nostter ${{ github.event.pull_request.title }}
tags: |
- ["d", "general"]
- ["t", "nostter"]
- ["r", "${{ github.event.pull_request.html_url }}"]
- ["expiration", "${{ env.expiration }}"]
参考
アイデアはかすてらふぃさんから。
おまけ:その他のプラットフォームへの通知
Discussion