Affiliate-skills traffic-analyzer
git clone https://github.com/Affitor/affiliate-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/Affitor/affiliate-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/research/traffic-analyzer" ~/.claude/skills/affitor-affiliate-skills-traffic-analyzer && rm -rf "$T"
skills/research/traffic-analyzer/SKILL.mdTraffic Analyzer
Analyze website traffic, engagement, and traffic sources for any domain. Goes beyond raw data — scores the domain, interprets what the traffic patterns mean for affiliate promotion, and recommends whether the program is worth your time.
A tool returns numbers. This skill returns a verdict.
Use cases:
- Is this affiliate program's website healthy? (High traffic = more brand awareness = easier conversions)
- Where does a competitor get their traffic? (Find channels they're ignoring)
- Compare 2-3 affiliate programs by advertiser website strength
- Validate a niche by checking traffic to the top programs in it
Stage
This skill belongs to Stage S1: Research
When to Use
- Before committing to promote an affiliate program — check if the advertiser is legit
- When comparing multiple programs — traffic is a proxy for brand strength
- When
identifies competitor sites — analyze their traffic sourcescompetitor-spy - When evaluating a niche — check if the top programs have healthy traffic
- When an advertiser claims "millions of users" — verify with data
Input Schema
domains: string[] # (required) 1-5 domains to analyze — "heygen.com", "synthesia.io" compare: boolean # (optional, default: true if 2+ domains) Side-by-side comparison focus: string # (optional, default: "affiliate") # "affiliate" — score from promoter perspective # "competitor" — analyze as a competitor site # "advertiser" — evaluate advertiser health
Workflow
Step 1: Gather Traffic Data
With SimilarWeb API (see
):shared/references/social-data-providers.md
If
social_data_config.similarweb is configured:
- Call SimilarWeb API for each domain
- Returns: global rank, country rank, visits, pages/visit, avg duration, bounce rate, traffic sources
Without API (web_search fallback):
For each domain:
→ often shows rank and visit estimates in snippetsweb_search "[domain] traffic similarweb"
→ third-party reportsweb_search "[domain] site traffic statistics"
→ Google index count as proxy for content depthweb_search "site:[domain]"
ORweb_search "[domain] alexa rank"
→ alternative sources"[domain] semrush traffic"
→ extract visible data from SimilarWeb free page (may be limited)web_fetch "https://www.similarweb.com/website/[domain]/"
Note: web_search data is approximate. SimilarWeb API provides exact metrics.
Step 2: Analyze Core Metrics
For each domain, analyze and interpret:
Traffic Volume:
global_rank: number # Lower = better. <10K = major site, <100K = solid, <1M = niche country_rank: number # Rank in primary country monthly_visits: string # "1.2M", "350K", "45K" visits_trend: string # "growing" | "stable" | "declining" (if historical data available)
Engagement Quality:
pages_per_visit: number # >3 = good engagement, <2 = bouncy avg_visit_duration: string # ">3 min" = engaged, "<1 min" = low quality bounce_rate: number # <40% = excellent, 40-60% = normal, >60% = concerning
Traffic Sources Breakdown:
direct: number # % — brand strength indicator search: number # % — SEO strength social: number # % — social media presence referral: number # % — partnership/affiliate ecosystem paid: number # % — ad spend (high paid = advertiser invests in acquisition)
Step 3: Interpret for Use Case
For affiliate promoters (
):focus: "affiliate"
Score the domain as an affiliate promotion target:
| Signal | Good (8-10) | OK (5-7) | Red Flag (1-4) |
|---|---|---|---|
| Monthly visits | >500K | 50K-500K | <50K |
| Bounce rate | <40% | 40-60% | >70% |
| Search traffic | >30% | 15-30% | <10% (overly dependent on ads) |
| Brand (direct) | >30% | 15-30% | <10% (nobody knows them) |
| Pages/visit | >4 | 2-4 | <2 |
Why this matters for affiliates:
- High traffic = people already search for this brand → easier to convert your referrals
- Strong brand (high direct traffic) = trust → higher conversion rate
- Good engagement = product delivers value → lower refund rate → your commissions stick
- Healthy search traffic = sustainable business → long-term commission potential
- High paid traffic = advertiser invests in growth → good sign for program longevity
For competitor analysis (
):focus: "competitor"
- Identify their strongest traffic channel → where are they winning?
- Find their weakest channel → opportunity for you
- Compare bounce rate → are they retaining visitors better than you?
- Check referral traffic → which sites link to them? (potential partnership targets)
For advertiser evaluation (
):focus: "advertiser"
- Is the advertiser's website healthy? (declining traffic = risky to promote)
- Do they invest in marketing? (paid traffic % shows ad budget)
- Is their product sticky? (engagement metrics reveal product quality)
- How established are they? (global rank trajectory)
Step 4: Generate Traffic Score
Calculate an overall Traffic Health Score (0-100):
traffic_score = ( rank_score × 0.20 + # Based on global rank volume_score × 0.25 + # Based on monthly visits engagement_score × 0.25 + # Based on bounce rate + pages/visit + duration diversity_score × 0.15 + # Traffic source diversity (not overly dependent on one channel) brand_score × 0.15 # Direct traffic % (brand recognition) )
Score interpretation:
- 80-100: Excellent. Strong, established brand. Safe to promote long-term.
- 60-79: Good. Healthy traffic. Solid promotion candidate.
- 40-59: Fair. Growing or niche site. Evaluate other factors (commission, product quality).
- 20-39: Weak. Low traffic or declining. Proceed with caution.
- 0-19: Red flag. Very low traffic, new, or declining fast. Not recommended unless early-stage with high commission.
Step 5: Compare (if multiple domains)
If 2+ domains provided, create side-by-side comparison:
- Which has more traffic?
- Which has better engagement?
- Which has more diverse traffic sources?
- Which is growing faster?
- Overall winner with reasoning
Step 6: Self-Validation
Before presenting output, verify:
- Data source clearly stated (API vs web_search estimate)
- Scores are calibrated (not all 8/10 — differentiate clearly)
- Interpretation matches the focus (affiliate vs competitor vs advertiser)
- Red flags explicitly called out, not buried
- Recommendation is actionable and specific
If any check fails, fix before delivering. Do not flag checklist to user.
Output Schema
output_schema_version: "1.0.0" domains_analyzed: - domain: string data_source: "similarweb_api" | "web_search_estimate" metrics: global_rank: number | null country_rank: number | null country: string | null monthly_visits: string pages_per_visit: number | null avg_duration: string | null bounce_rate: number | null traffic_sources: direct: number | null # percentage search: number | null social: number | null referral: number | null paid: number | null traffic_score: number # 0-100 verdict: string # "excellent" | "good" | "fair" | "weak" | "red_flag" interpretation: string # 2-3 sentence analysis based on focus comparison: object | null # if 2+ domains winner: string reasoning: string recommended_next_skill: string
Output Format
## Traffic Analysis: [Domain(s)] ### Data Source 📊 **[SimilarWeb API | Web search estimates (approximate)]** --- ### [domain1.com] — Traffic Score: [XX]/100 — [Verdict] | Metric | Value | Assessment | |--------|-------|------------| | Global Rank | #XX,XXX | [Good/Fair/Low] | | Monthly Visits | X.XM | [High/Medium/Low] | | Pages/Visit | X.X | [Engaged/Average/Bouncy] | | Avg Duration | Xm Xs | [Good/Low] | | Bounce Rate | XX% | [Healthy/Concerning/High] | **Traffic Sources:**
Direct: ██████████░░░░░░ 35% (strong brand) Search: ████████░░░░░░░░ 28% (good SEO) Social: ████░░░░░░░░░░░░ 15% (social presence) Referral: ███░░░░░░░░░░░░░ 12% (affiliate ecosystem) Paid: ██░░░░░░░░░░░░░░ 10% (moderate ad spend)
**What This Means for You:** [2-3 sentences interpreting metrics for the user's focus — affiliate/competitor/advertiser] --- ### [If comparing 2+ domains] ### Head-to-Head: [domain1] vs [domain2] | Metric | [domain1] | [domain2] | Winner | |--------|-----------|-----------|--------| | Traffic Score | XX/100 | XX/100 | [domain] | | Monthly Visits | X.XM | XXK | [domain] | | Engagement | X.X pg/visit | X.X pg/visit | [domain] | | Brand Strength | XX% direct | XX% direct | [domain] | | SEO | XX% search | XX% search | [domain] | **Verdict:** [domain1] is the stronger affiliate promotion target because [reasoning]. --- ### 🎯 Recommendation [Specific, actionable recommendation based on focus] ### Next Steps - `affiliate-program-search` — check commission details for [domain] - `competitor-spy` — deep dive into their affiliate strategy - `trending-content-scout` — find what content about [domain/product] is performing
Error Handling
- No API and web_search returns limited data: Present what's available. Note: "Limited data available via web search. For accurate metrics, configure SimilarWeb API — see
." Still provide estimated score.shared/references/social-data-providers.md - Domain not found / too new: Note: "[domain] has insufficient traffic data. This could mean: (1) very new site, (2) very low traffic, (3) data not yet indexed. This is itself useful information — proceed with caution." Score: 10/100.
- Domain is a subdomain: Analyze the root domain instead. Note the adjustment.
- More than 5 domains requested: Analyze top 5, suggest running again for the rest.
- SimilarWeb API rate limited: Fall back to web_search for remaining domains.
Examples
Example 1: User: "Is HeyGen worth promoting? Check their traffic." → domain: "heygen.com", focus: "affiliate" → SimilarWeb or web_search → Global rank: ~15K, 2.1M monthly visits → Score: 82/100 — "Excellent. HeyGen has strong traffic with healthy engagement. 35% direct traffic shows strong brand recognition. Your referral links benefit from existing brand awareness." → Next:
affiliate-program-search for HeyGen commission details
Example 2: User: "Compare Notion vs ClickUp vs Monday.com traffic for my productivity niche" → domains: ["notion.so", "clickup.com", "monday.com"] → Analyze all 3, side-by-side comparison → Winner: Notion (highest traffic, best engagement) → But: ClickUp has highest referral % (12%) = strongest affiliate ecosystem → may convert better
Example 3: User: "I found this small SaaS tool — screenpal.com. Is the advertiser legit?" → domain: "screenpal.com", focus: "advertiser" → Global rank: ~180K, ~300K monthly visits → Score: 55/100 — "Fair. Niche tool with moderate traffic. Growing steadily. Low paid traffic (2%) suggests bootstrapped. Engagement is good (3.8 pages/visit). Worth promoting if commission is strong, but don't expect brand-name conversion rates."
Feedback & Issue Reporting
When this skill produces unexpected, incomplete, or incorrect output, generate a
skill_feedback block (see shared/references/feedback-protocol.md for full schema).
Skill-specific failure modes:
- Domain not found in SimilarWeb: Very new or very small site. Report as
, note domain.data_quality - All metrics null from web_search: No traffic data findable. Report as
, severity: medium.data_quality - Traffic score seems wrong: Score doesn't match known reality (e.g., Google.com scored 40/100). Report as
.wrong_output
Auto-detect triggers:
is 0 or null for a well-known domaintraffic_score- All
percentages are nulltraffic_sources - Comparison requested but only 1 domain returned data
Report issues: GitHub Issues | Discussions
References
— SimilarWeb API configurationshared/references/social-data-providers.md
— master flywheel connection mapshared/references/flywheel-connections.md
— affiliate marketing terminologyshared/references/affiliate-glossary.md
— issue detection and reporting standardshared/references/feedback-protocol.md
Flywheel Connections
Feeds Into
(S1) — traffic score as program evaluation factoraffiliate-program-search
(S1) — traffic sources reveal competitor strategycompetitor-spy
(S1) — traffic data validates niche demandniche-opportunity-finder
(S1) — traffic source breakdown informs platform prioritizationcontent-angle-ranker
(S1) — social traffic % hints at which platforms to scouttrending-content-scout
Fed By
(S1) — competitor domains to analyzecompetitor-spy
(S1) — program URLs to evaluateaffiliate-program-search
(S1) — top program domains in a nicheniche-opportunity-finder
Feedback Loop
- S6
shows your referral contribution to the advertiser → compare your traffic impact over time → prioritize programs where you move the needleperformance-report
chain_metadata: skill_slug: "traffic-analyzer" stage: "research" timestamp: string suggested_next: - "affiliate-program-search" - "competitor-spy" - "trending-content-scout"