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. š