Daily Competitor Monitor — N8N Workflow Design
Purpose
Automated daily scraping of competitor social content → content angle suggestions → Telegram notification → Steven reviews → feeds into /social-media-content.
Output Location
outputs/research/competitor-monitor-[YYYY-MM-DD].md per client folder
Trigger
Cron: 0 8 * * * (daily 8am HK = 0am UTC)
Architecture
┌─────────────────────────────────────────────────────────────┐
│ CRON TRIGGER (daily 8am HK) │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ READ CLIENT LIST │
│ Source: Google Sheet "active-clients" OR hardcoded loop │
│ Fields: client_slug, competitor_urls[], keywords[] │
└─────────────────────────────────────────────────────────────┘
│
▼ (loop over each client)
┌─────────────────────────────────────────────────────────────┐
│ FOR EACH CLIENT: │
│ ├── Scrape competitor social URLs │
│ │ Tools: Apify IG scraper, FB posts scraper, etc. │
│ │ Apify Actors already configured in MCP │
│ └── Keyword search for new competitors │
│ Tools: Tavily search + filter social URLs │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ EXTRACT CONTENT via Blotato MCP │
│ blotato_create_source with sourceType=url │
│ For each found post/video │
│ Poll blotato_get_source_status until done │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ AI ANALYSIS (Claude Haiku via MCP or API) │
│ Prompt: "Given these competitor posts from today, │
│ identify: │
│ 1. Top 3 trending angles │
│ 2. Hook patterns working │
│ 3. Content gaps this client can exploit │
│ 4. 3 suggested post angles for tomorrow" │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ SAVE REPORT │
│ Path: /home/claude/projects/clients/{slug}/outputs/research │
│ /competitor-monitor-{YYYY-MM-DD}.md │
└─────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ TELEGRAM NOTIFY STEVEN │
│ Chat: 8319718417 │
│ Message: │
│ 📊 [Client X] 今日情報已 ready │
│ Top angle: [one line] │
│ 3條建議 post angles 已 log 好 │
│ 想出 posts?回覆 /social-media-content {client} │
└─────────────────────────────────────────────────────────────┘
N8N Workflow Nodes
Required N8N Nodes
- Schedule Trigger (cron: daily 8am HK)
- HTTP Request — read client list from Google Sheet OR hardcoded
- Split In Batches — loop each client
- Apify Actors — scrape competitor IG/FB/LinkedIn posts
- HTTP Request — call Blotato MCP endpoint (authenticated)
- HTTP Request — poll Blotato source status
- HTTP Request — call Claude API for analysis (or via n8n-mcp)
- Write File — save report to local FS
- Telegram — send notification
Client List Schema (Google Sheet or JSON)
clients:
- slug: winni-xxx
competitor_urls:
- https://instagram.com/competitor1
- https://instagram.com/competitor2
keywords:
- fitness coach HK
- personal trainer hong kong
active: true
tz: Asia/Hong_KongSkills Integration
After Steven gets the Telegram notification:
- Steven reads the daily report
- Steven sees angles he likes
- Steven runs
/social-media-content [client] - Skill reads:
outputs/strategy/strategy-[client]-v1.md(fixed)context/social-pillars.md(fixed)outputs/research/competitor-monitor-{today}.md(NEW — fresh daily data)
- Skill weaves today’s insights into the post batch
This is the closing of the loop: daily data → AI-curated → Steven decides → posts
Rollout Plan
Phase 0 — Manual Test (first week)
- Run the flow manually for 1 client (e.g. Winni)
- Validate Blotato create_source handles IG/FB URLs cleanly
- Verify report format is useful
Phase 1 — N8N Deployment (week 2)
- Build in n8n.remarkable-marketing.hk
- Start with 1 client
- Test for 3 days
Phase 2 — Scale (week 3+)
- Add more clients to list
- Add more platforms
- Tune AI prompt based on learnings
Cost Estimate
Per client per day:
- Apify scrapes: ~$0.05-0.10
- Blotato create_source: included in subscription
- Claude Haiku analysis: ~$0.01
- Total: ~3/client/month
For 60 clients: ~$180/month
Risks & Mitigations
| Risk | Mitigation |
|---|---|
| Apify scrape rate limits | Stagger clients across cron hours, use batches |
| Competitor removes posts | Gracefully skip, don’t fail the whole flow |
| Blotato source extraction fails | Retry 2x, log failure, don’t block other clients |
| Telegram spam (60 messages/day) | Aggregate into 1 daily digest if >5 clients |
| Claude API cost creep | Cap prompt size, use Haiku not Opus |
Not Yet Built
This is design only. To actually deploy:
- Create the N8N workflow (build in UI or via n8n-mcp)
- Set up client list (Google Sheet)
- Test Phase 0 manually first
- Then activate cron
Decision deferred until Steven tests the manual flow with /social-media-content + Blotato integration.