From arb
Audits websites for affiliate link disclosure compliance with FTC, ASA, EU, Canada regulations. Detects undisclosed links, inventories affiliate URLs, and verifies format.
npx claudepluginhub huifer/adsense-readiness-benchmark --plugin arbThis skill uses the workspace's default tool permissions.
Comprehensive verification of affiliate link disclosures across your entire site. Ensures FTC, ASA, and international compliance.
Suggests manual /compact at logical task boundaries in long Claude Code sessions and multi-phase tasks to avoid arbitrary auto-compaction losses.
Share bugs, ideas, or general feedback.
Comprehensive verification of affiliate link disclosures across your entire site. Ensures FTC, ASA, and international compliance.
| Field | Value |
|---|---|
| Scope | Cross-phase check — always runs when site has any affiliate content, regardless of score mode |
| Core 79 items covered | PC10 (affiliate disclosure — veto item), TD08 (privacy policy affiliate mention) |
| Extension items covered | PC12–PC13 coverage when gambling/regulated affiliate programs present |
| Veto items | PC10 — any disclosure failure = instant pillar veto; escalate immediately |
| Mode interaction | This skill contributes to PC and TD pillars; report findings under both |
Output fields required (for aggregation by ads-readiness-assessment):
score_mode: inherit from calling orchestratorpillars_affected: ["PC", "TD"]items_evaluated: e.g., ["PC10", "TD08"]veto_triggered: true / false + which item(s)undisclosed_links_found: count + URLsdisclosure_format_issues: list of non-compliant disclosure formatsRule: If site has no affiliate links, output affiliate_scope: none and skip all checks — do not mark items as not_in_scope (they simply do not apply).
Audit affiliate link compliance:
Input: Website URL or source files Output: Affiliate link inventory + compliance report Time: 15-30 minutes
Requirement: Clear and conspicuous disclosure Placement: Before the link or at beginning of content Language: "Affiliate disclosure", "We earn commissions", "As an Amazon Associate" Penalty: False advertising violation + legal action
Requirement: Clear identification of commercial relationship Format: #ad or #sponsored on social media, disclaimer on content Placement: Prominent location Penalty: Fine, removal from advertising
Requirement: Transparent affiliate relationship Disclosure: Required in privacy policy Format: Clear and honest language Penalty: Fine up to €20,000
Requirement: Clear disclosure of material connection Format: "We may earn commission" Placement: Before user decision Penalty: Fine + damages
Identify affiliate URL patterns:
Automated script:
# Find affiliate patterns in HTML
grep -r "amazon.com/.*tag=" ./website/
grep -r "cjdropshipping.com/.*ref=" ./website/
grep -r "/?affiliate=" ./website/
For each page with affiliate links:
Good Disclosure Locations:
Clear & Conspicuous Test:
Examples:
✅ Good Disclosure:
"As an Amazon Associate, we earn from qualifying purchases.
This does not affect the price you pay."
✅ Good Disclosure:
"Affiliate Disclosure: This post contains Amazon affiliate
links. If you purchase through these links, we receive a
small commission at no extra cost to you."
❌ Poor Disclosure (too hidden):
"*See disclosure policy in footer for affiliate
relationship details."
[User never sees footer]
❌ Poor Disclosure (unclear):
"Some of our content may contain commercial relationships."
[Vague, doesn't say what kind]
# Affiliate Link Compliance Report
## Summary
- Total pages reviewed: 150
- Pages with affiliate links: 45
- Compliant disclosures: 40
- Non-compliant or missing: 5
- Compliance Rate: 89%
## Non-Compliant Pages (Action Required)
### Critical (Missing Disclosure)
- /blog/top-products
- /reviews/gadgets
- /comparison/tools
Action: Add disclosure statement immediately
### Medium (Disclosure Hidden)
- /guides/best-practices
- /tutorials/setup
Action: Move disclosure to more prominent location
## Recommendations
1. Add disclosure to [X] pages
2. Move [Y] disclosures to more visible location
3. Clarify [Z] disclosure statements
<div class="affiliate-disclosure">
<strong>Affiliate Disclosure:</strong> This post contains
affiliate links. If you purchase through our links, we may
earn a small commission at no extra cost to you.
</div>
<p><strong>As an Amazon Associate, we earn from qualifying
purchases.</strong> This does not affect the price you pay.</p>
<p><strong>Disclosure:</strong> This post contains affiliate
links from Amazon Associates, CJ Affiliate, and Shareasale.
We earn a commission if you purchase through these links.</p>
<p>Check price on <a href="amazon-link">Amazon*</a></p>
<p>*Affiliate link: We earn a commission</p>
.affiliate-link::after {
content: " [affiliate link]";
color: #999;
font-size: 0.9em;
}
Issue 1: No Disclosure
Issue 2: Hidden Disclosure
Issue 3: Vague Disclosure
Issue 4: Disclosure Only in Footer/Policy
Issue 5: Misleading Statement
USA (FTC):
UK (ASA):
EU (GDPR):
Canada (MACT):
Find non-compliant pages:
const fs = require('fs');
const path = require('path');
function checkAffiliateLinkCompliance(htmlContent) {
const affiliateRegex = /amazon\.com\/.*\?tag=|cjdropshipping\.com\/.*\?ref=|click\.../g;
const disclosureRegex = /affiliate|commission|earn|compensat/i;
const hasAffiliateLinks = affiliateRegex.test(htmlContent);
const hasDisclosure = disclosureRegex.test(htmlContent);
if (hasAffiliateLinks && !hasDisclosure) {
return { compliant: false, reason: 'Missing disclosure' };
}
if (hasAffiliateLinks && hasDisclosure) {
const disclosureIndex = htmlContent.indexOf(disclosureRegex);
const affiliateIndex = htmlContent.indexOf(affiliateRegex);
if (disclosureIndex > affiliateIndex) {
return { compliant: false, reason: 'Disclosure after links' };
}
}
return { compliant: true };
}
Related Skills:
policy-risk-scanner, policy-remediation-planads-readiness-assessmentactive-compliance-monitor