DEV Community

SHOTA
SHOTA

Posted on • Originally published at zenn.dev

Automate Your Release Announcements: GitHub Release 4 Social Platforms with n8n

The Problem

Building Chrome extensions is one thing. Announcing each release across multiple platforms? Tedious.

So I automated the entire thing with n8n.

The Architecture

GitHub Release Created
        ↓
    Webhook → n8n detects it
        ↓
    Auto-post to:
    ├── Discord (Webhook)
    ├── Bluesky (HTTP Request)
    ├── Dev.to (HTTP Request)
    └── Qiita (HTTP Request)
Enter fullscreen mode Exit fullscreen mode

Setup: Running n8n

docker run -it --rm \
  --name n8n \
  -p 5678:5678 \
  -v n8n_data:/home/node/.n8n \
  n8nio/n8n
Enter fullscreen mode Exit fullscreen mode

Exposing n8n with Cloudflare Tunnel

brew install cloudflare/cloudflare/cloudflared
cloudflared tunnel create n8n-tunnel
Enter fullscreen mode Exit fullscreen mode

Config (~/.cloudflared/config.yml):

tunnel: [TUNNEL_ID]
credentials-file: /path/to/credentials.json
ingress:
  - hostname: n8n.yourdomain.com
    service: http://localhost:5678
  - service: http_status:404
Enter fullscreen mode Exit fullscreen mode

The n8n Workflow

Webhook (trigger) → IF (release event?) → Set (format content)
    ├── Discord (Webhook)
    ├── Bluesky (HTTP Request)
    ├── Dev.to (HTTP Request)
    └── Qiita (HTTP Request)
Enter fullscreen mode Exit fullscreen mode

Message Formatting

const releaseName = $json.release.name;
const releaseUrl = $json.release.html_url;
const repoName = $json.repository.name;

return {
  discord: `🚀 **${repoName}** new version!\n${releaseName}\n${releaseUrl}`,
  bluesky: `🚀 ${repoName} new version!\n${releaseName}\n${releaseUrl}`,
  devto: { title: `${repoName} ${releaseName} Released`, body: `New version: ${releaseUrl}` }
};
Enter fullscreen mode Exit fullscreen mode

Results

Time saved: ~15-20 min per release × multiple releases/week. Total cost: $0/month.

🔗 S-Hub

What's your release announcement workflow?

Top comments (0)