n8n Automation Workflows
Complete Setup Guide for Python Asset Management
Overview
These n8n workflows keep your Airtable, GitHub, and notifications in sync. No manual updates needed.Workflow 1: GitHub → Airtable Sync (Hourly)
Purpose: Update tool metadata automatically (stars, forks, last commit, etc.) Trigger: Cron job (every hour)Step-by-Step Setup
-
Create Workflow in n8n
- Dashboard → Click “Create new workflow”
- Name: “GitHub → Airtable Sync”
-
Add Trigger Node
- Click ”+” to add node
- Search: “Cron”
- Set: “Every hour” (or your preference)
-
Add GitHub Integration Node
- Click ”+” → Search “GitHub”
- Connect to your GitHub account
- Set operation: “Get Repository”
- For each tool in your org:
- Input: Repository = “async-retry” (example)
- Extract: stars, forks, watchers, last commit date, open issues
-
Add Airtable Update Node
- Click ”+” → Search “Airtable”
- Connect to your Airtable workspace
- Set operation: “Update Record”
- Map fields:
-
Add Slack Notification (Optional)
- Click ”+” → Search “Slack”
- Send message: ”✅ Updated X tools in Airtable”
-
Save & Activate
- Click Save
- Click “Activate” toggle
Workflow JSON Template
Workflow 2: New Release → PyPI + Slack
Purpose: When you create a GitHub release, notify the world Trigger: GitHub Webhook (release created)Step-by-Step Setup
-
Create Workflow
- Name: “Release → Notification”
-
Add Webhook Trigger
- Click ”+” → Search “GitHub”
- Click “GitHub” → Connect account
- Select “Trigger” type
- Choose: “Webhook”
- Event: “Release”
-
Extract Release Data
- Add node: “Function”
- Extract tag version, repo name, release notes
- Code:
-
Update Airtable
- Add “Airtable” node
- Operation: “Update Record”
- Find tool by GitHub URL
- Update:
- “Last Updated” → Today
- “Status” → “Production”
- “Version” → Release tag
-
Post to Slack
- Add “Slack” node
- Post to #announcements
- Message template:
-
Post to Twitter (Optional)
- Add “Twitter” node
- Same message (shortened for 280 chars)
- Save & Activate
Workflow 3: Weekly Stats Report
Purpose: Every Monday morning, get a summary of your portfolio Trigger: Cron (every Monday at 9am)Step-by-Step Setup
-
Create Workflow
- Name: “Weekly Summary Report”
-
Add Cron Trigger
- Set: “Every Monday at 09:00”
-
Query Airtable
- Add “Airtable” node
- Operation: “Search Records”
- Filters:
- Status contains “Production”
- Status contains “Beta”
- Status contains “Concept”
- Extract all records
-
Calculate Stats
- Add “Function” node
- Calculate:
-
Post to Slack
- Message template:
-
Send Email (Optional)
- Add “Send Email” node
- Same message, formatted as email
- Send to: your email
Workflow 4: Tool Milestone Alerts
Purpose: Alert you when a tool hits a milestone (100 stars, 1000 downloads, etc.) Trigger: Manual or Cron (daily)Step-by-Step Setup
-
Create Workflow
- Name: “Milestone Alerts”
-
Add Cron Trigger
- Set: “Every day at 08:00”
-
Get Tool Data from Airtable
- Add “Airtable” node
- Operation: “Get All Records”
- Get all tools with stars
-
Check for Milestones
- Add “Function” node
- Check if any tool crossed a threshold:
-
Post to Slack (if milestones found)
- Add “Slack” node with condition:
- Only run if milestones.length > 0
- Message:
Workflow 5: Auto-Sync New Tool to GitHub
Purpose: When you add a tool to Airtable, auto-create a GitHub repo Trigger: Airtable webhook (record created)Step-by-Step Setup
-
Create Workflow
- Name: “New Tool → GitHub Repo”
-
Add Airtable Webhook
- In Airtable: Automations → Webhooks
- Event: “Record created in Tool Inventory”
- Webhook URL: Copy from n8n
-
Create GitHub Repository
- Add “GitHub” node
- Operation: “Create Repository”
- Input:
-
Add Repository Template Files
- Add “GitHub” node (for each file)
- Operation: “Create File”
- Files to create:
- README.md (with tool name + purpose)
- pyproject.toml (template)
- .github/workflows/publish.yml
- src/module_name/init.py
- tests/test_basic.py
- docs/index.md
-
Update Airtable with Repo URL
- Add “Airtable” node
- Operation: “Update Record”
- Update: “GitHub URL” field with new repo URL
-
Post Slack Confirmation
- Message: ”✅ Created repo for
{{$node['Airtable Webhook'].json.body.fields['Tool Name']}}”
- Message: ”✅ Created repo for
Workflow 6: PyPI Download Tracker
Purpose: Track PyPI statistics for all published tools Trigger: Cron (daily)Step-by-Step Setup
-
Create Workflow
- Name: “PyPI Stats Tracker”
-
Add Cron Trigger
- Set: “Every day at 10:00”
-
Get Tools from Airtable
- Add “Airtable” node
- Operation: “Search Records”
- Filter: Status = “Production”
-
Query PyPI API
- For each tool, call PyPI JSON API
- Add “HTTP Request” node
- URL:
https://pypi.org/pypi/{{tool_name}}/json - Extract: stats.last_month downloads
-
Update Airtable
- Add “Airtable” node
- Update “PyPI Downloads” field
- Update “Last Stats Check” date
-
Post Growth Report (Optional)
- Compare to last week
- Post top gainers to Slack
How to Use These Workflows
Step 1: Set Up n8n
Step 2: Connect Accounts
In n8n Settings:- GitHub: Create OAuth app, connect
- Airtable: Generate API token, add
- Slack: Create app, add webhook
- Twitter: Create API app, connect
- Email: Add SMTP credentials
Step 3: Import Workflows
- Copy JSON templates above
- In n8n: File → Import → Paste JSON
- Update variables (tool names, IDs, etc.)
- Activate each workflow
Step 4: Test
- Run each workflow manually first
- Check Airtable + Slack for correct output
- Then activate for scheduled runs
Variables & Configuration
Airtable Base ID
GitHub Organization
Slack Webhook URL
PyPI Package Names
Troubleshooting
Airtable not updating?
- Check: API token is valid
- Check: Base ID is correct
- Check: Field names match exactly (case-sensitive)
- Check: Record ID is correct
GitHub not syncing?
- Check: OAuth credentials are valid
- Check: Repo exists in your org
- Check: API rate limits (60 req/hr for unauthenticated)
Slack notifications not posting?
- Check: Webhook URL is valid
- Check: Slack app has permissions
- Check: Channel exists and bot is invited
Workflow running but no output?
- Click workflow → “Executions” tab
- Check error logs
- Click “Debug” to trace execution
Performance Tips
-
Rate Limiting: GitHub API has 60 req/hour for basic auth
- Solution: Batch queries, use pagination
- Or: Reduce frequency (sync every 3 hours instead of 1)
-
Cost Optimization: Airtable is free up to 1,200 records
- Solution: Archive old/deprecated tools
- Solution: Use separate base for archival
-
Execution Time: Long workflows can timeout
- Solution: Split into smaller workflows
- Solution: Use n8n’s “Trigger” node instead of Function calls
Next Steps
-
Start with Workflow 1 (GitHub → Airtable sync)
- This is the foundation
- Once working, build others on top
-
Add Workflow 2 (Release notifications)
- Creates your announcement flow
- Gets people excited
-
Add Workflow 3 (Weekly report)
- Keeps you informed
- Shows progress
- Expand gradually as you have time
Pro Tips
Use n8n’s Built-in Nodes
- For AWS integration: “AWS”
- For Google Sheets: “Google Sheets”
- For Discord: “Discord”
- For Telegram: “Telegram”
- For emails: “Email” or “Gmail”
Create Reusable Sub-Workflows
- Use “Call Workflow” node
- Example: Shared “GitHub → Airtable” sub-workflow
- Call from multiple main workflows
Add Error Handling
- Use “Try/Catch” node
- Send alert to Slack on failure
- Example: ”❌ Workflow ‘Release Notification’ failed”
Schedule Wisely
- GitHub Sync: Every hour (stale data is fine)
- Release Notification: Instant (time-sensitive)
- Weekly Report: Monday 9am (regular cadence)
- PyPI Stats: Daily (don’t need real-time)
Sample Slack Message Templates
Release Notification
Weekly Summary
Workflows ready? Let’s automate your way to 100+ stars. 🚀