Skip to content
cccskills
FreePublished on GitHub

ai-content-disclosure

Check AI-generated marketing content and reviews for required disclosures under the EU AI Act, FTC rules and platform AI-label policies. Use when labelling AI ads, deepfakes, chatbots, influencer posts or testimonials.

The English summary is being prepared. Showing the original description.

Run score Not tested

See how to install

Files included (11)

  • SKILL.md15.4 KB
  • assets/content_manifest_template.json2.5 KB
  • assets/disclosure-label-templates.md3.4 KB
  • assets/sample_content_manifest.json2.7 KB
  • assets/sample_reviews.json2.6 KB
  • references/disclosure-decision-tree.md3.9 KB
  • references/disclosure-wording-library.md4.4 KB
  • references/platform-ai-label-policies.md5.2 KB
  • references/regulation-summaries.md13.6 KB
  • scripts/disclosure_checker.py16.4 KB
  • scripts/review_authenticity_linter.py10.7 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

AI Content Disclosure

Decide, asset by asset, which disclosures AI-generated or AI-assisted marketing content needs — by jurisdiction and by platform — and block publication when a high-risk item is unresolved. Covers EU AI Act Article 50 (applies from 2 August 2026), the FTC Consumer Reviews and Testimonials Rule (16 CFR Part 465), the FTC Endorsement Guides (16 CFR Part 255), EU and UK fake-review law, New York's synthetic performer ad law, India's synthetic-content labelling rules, and the AI-label policies of YouTube, TikTok, Meta and Google Ads.

Not legal advice. This skill turns public rules into a repeatable pre-publication check. It does not replace counsel, and every rule links its official source so you can verify it. Rules were checked against primary sources in September 2026.


When to use this skill

SituationUse
Launching a campaign with AI-generated video, images, voice or avatarsscripts/disclosure_checker.py on the content manifest
Publishing AI-drafted articles, reports or press notes to EU audiencesDecision tree Q4 + checker (public_interest, human_review)
Deploying a website chatbot or AI voice agent in the EUChecker (type: chatbot) + wording library
Importing, soliciting or displaying reviews and testimonialsscripts/review_authenticity_linter.py
Briefing influencers or virtual influencersLabel templates §6 + Endorsement Guides summary
Checking a platform's own AI-label rulereferences/platform-ai-label-policies.md
Political or electoral advertisingOut of scope beyond platform checkboxes — route to counsel

Clarify First

Before running the check, settle the inputs below. When one is missing or vague and would change the result, ask about it; when it wouldn't, use a sensible default and say which one you used.

  • Audience regions: EU, US, New York, UK, India (each switches on different rules; "global" means all of them).
  • AI involvement per asset: none / assistive / partial / generated (assistive editing triggers no AI label; generated realistic media usually does).
  • Is anything a review, testimonial or endorsement?: and who wrote it, and what they received (fake and undisclosed-connection reviews are the highest-penalty items).
  • Paid or organic, and which platform: platform rules differ for ads, and TikTok rejects undisclosed AIGC ads.

Ask about the two or three inputs that matter most for this request. If the user says "just check it," proceed with the manifest as given and list your assumptions at the top of the report.


Quick start

# 1. Fill the manifest (one entry per asset)
cp assets/content_manifest_template.json my_campaign.json

# 2. Check disclosures — exits 2 if any high-risk item is unresolved
python3 scripts/disclosure_checker.py my_campaign.json
python3 scripts/disclosure_checker.py my_campaign.json --format json --fail-on medium

# 3. Lint reviews/testimonials before display
python3 scripts/review_authenticity_linter.py reviews.json

# 4. Apply wording from references/disclosure-wording-library.md and record it
#    in assets/disclosure-label-templates.md (§1 asset disclosure record)

The shipped samples fail on purpose: sample_content_manifest.json exits 2 with 7 unresolved high-risk findings (a deepfake without an on-asset label, an unreviewed AI press note, AI-written testimonials, an undisclosed employee review); sample_reviews.json exits 2 with 6 high-risk findings.


Core workflow: pre-publication disclosure gate

  1. Inventory every asset in the release into the manifest. Include reviews shown in ads and on landing pages, chatbots and voice agents — not just "creative". [PROVEN]
  2. Classify AI involvement honestly. "Assistive" means standard editing (spelling, colour, crop, background clean-up). If AI changed what the viewer sees or reads, it is partial or generated. [RECOMMENDED]
  3. Run the checker. Read findings top-down by risk. FIX lines are unresolved; OK lines are satisfied by the disclosures you declared.
  4. Remove, don't label, what cannot be labelled. AI-written testimonials presented as customer reviews and sentiment-conditioned incentives are prohibited outright — the checker marks them unfixable. [PROVEN]
  5. Apply disclosures in three layers: legal label on the asset, platform toggle, endorsement disclosure. They stack; none substitutes for another. [RECOMMENDED]
  6. Record evidence in the asset disclosure record (label text, placement, screenshots, reviewer for the editorial-control exception).
  7. Re-run until exit 0, then wire the checker into the release pipeline so new assets cannot skip it.

Workflow: reviews and testimonials

  1. Export the review set you plan to display or quote (own site, marketplace, ad copy).
  2. Mark source, incentive, incentive_conditioned_on_sentiment, generated_by_ai, suppressed for each.
  3. Run review_authenticity_linter.py. Remove every fake-or-ai-review, sentiment-conditioned-incentive, review-hijacking item; add disclosures for insider and incentivised items.
  4. Publish a review-page statement (wording library) saying how reviews are verified — required in the EU (UCPD Art. 7(6)).
  5. Treat near-duplicate and posting-burst as investigation leads, not verdicts.

Workflow: EU text on matters of public interest

  1. Decide whether the piece informs the public on a matter of public interest (news-like, policy, health, safety, finance, elections). Product copy normally does not.
  2. If yes, choose: label it, or put it under documented editorial control (named reviewer with authority to approve, alter or reject, and an entity holding editorial responsibility).
  3. Editorial control is the better default for brands that publish thought leadership — it improves quality and removes the labelling duty. Keep the evidence. [RECOMMENDED]

Rule map (what the checker encodes)

Rule IDTriggerDefault riskFix
EU-AIA-50(1)Chatbot, EUhighAI-interaction notice at first interaction
EU-AIA-50(4)-deepfakeRealistic AI image/audio/video, EUhighOn-asset label
EU-AIA-50(4)-deepfake-artisticSame, evidently artistic/satiricalmediumNon-disruptive disclosure
EU-AIA-50(4)-textAI public-interest text, EU, no editorial controlhighLabel or editorial control
EU-AIA-50(2)-markingYou provide the generatormediumMachine-readable marking (legacy systems: 2 Dec 2026)
FTC-465.2-fake-reviewAI-generated review/testimonialhigh, unfixableRemove
FTC-255-material-connection / FTC-465.5-insiderConnection or insiderhighDisclose in the endorsement
FTC-255-virtual-influencerVirtual influencermedium"#ad" + virtual persona disclosure
NY-synthetic-performerPaid image/video ad with synthetic performer, NYhighConspicuous disclosure
EU-UCPD-* / UK-DMCC-*Fake or undisclosed-connection reviewshighRemove / disclose
IN-IT-Rules-SGIRealistic AI media, IndiamediumVisible label
YT / TT / META / GADSPlatform AI-label rulesmedium-highPlatform toggle and/or label

Full summaries with official links: references/regulation-summaries.md.


Key dates and numbers (verify before use)

ItemValueSource
EU AI Act Art. 50 applies2 Aug 2026eur-lex.europa.eu; digital-strategy.ec.europa.eu
Art. 50(2) marking, systems placed on market before 2 Aug 20262 Dec 2026Digital Omnibus on AI; Commission Art. 50 FAQ
EU AI Act fine for Art. 50 breachesup to EUR 15m or 3% of worldwide turnoverArt. 99(4)
FTC Reviews Rule effective21 Oct 2024ftc.gov
FTC civil penalty per violationUSD 53,088 (2025 adjustment; see 16 CFR 1.98 for current)ftc.gov; ecfr.gov
UK DMCC fake-review banfrom 6 Apr 2025; fines up to 10% of global turnoverCMA guidance
New York synthetic performer ad lawin effect June 2026governor.ny.gov
India IT Rules SGI amendmentin force 20 Feb 2026meity.gov.in
Google Ads AI label settingrolled out July 2026support.google.com/adspolicy
Meta automated AI detection on adsfrom 1 Jun 2026about.fb.com

Exit code contract [PROVEN]

Both scripts share the same contract so they can run as CI gates:

CodeMeaningWho fixes it
0No unresolved findings at or above --fail-on (default high)Nobody
1Tool error — bad path, malformed JSON, missing id/type/textWhoever maintains the manifest
2Gate failed — unresolved findings at or above --fail-onAsset owner / campaign lead

Keep 1 and 2 distinct. A malformed manifest is a pipeline problem; a missing label is a content problem.


Anti-Patterns

The Platform Toggle As Legal Compliance

Mistake: Ticking YouTube's or Google's AI toggle and treating the campaign as EU-compliant. Why it happens: The toggle feels official, and the platform shows a label somewhere. Instead: Platform labels can sit in a description or "About this ad" panel. For EU deepfakes, put the label on the asset at first exposure too. Google states its AI label setting does not guarantee regulatory compliance.

The "Composite" Testimonial

Mistake: Asking AI to write testimonials "based on" real survey themes and displaying them with stock names and photos. Why it happens: It feels truthful because the sentiments came from real customers. Instead: A testimonial attributed to a person who did not write it misrepresents the reviewer. Quote real customers verbatim with permission, or present aggregated survey results as statistics.

The Blanket "May Contain AI" Footer

Mistake: One site-wide footer line instead of per-asset labels. Why it happens: It is cheap and feels like cover. Instead: Art. 50(5) requires clear, distinguishable information at first exposure to the specific content. Label the asset; keep the footer as a supplementary policy statement if you like.

The Invisible Editorial Review

Mistake: Relying on the human-review exception for AI-written articles without any record of who reviewed what. Why it happens: Everyone "looked at it" in a shared doc. Instead: Record reviewer, date, substantive changes and the editorial-responsibility holder. Without evidence, the exception is a claim, not a defence.

Incentive Automations That Filter By Stars

Mistake: Sending discount codes only to customers who left 4-5 star ratings, or asking only happy NPS responders to review. Why it happens: Growth tooling makes sentiment-gated flows a checkbox. Instead: Sentiment-conditioned incentives are prohibited by FTC 465.4. Invite every customer (or a random sample) and disclose the incentive.


Troubleshooting

SymptomCauseFix
Asset shows "no disclosure rule triggered" but used AIai_involvement set to assistive or regions emptyRe-classify; add every audience region
Checker exits 1Missing id/type or invalid JSONValidate against assets/content_manifest_template.json
Finding stays FIX after adding a labelDisclosure key not in needs_one_ofUse one of the listed keys in disclosures_present
Linter misses an obvious disclosureDisclosure phrased unusuallyPut the exact text in disclosure_text; extend DISCLOSURE_RE
Too many near-duplicate hits on short reviewsShort texts share phrasesRaise --dup-threshold to 0.7-0.8

Scripts

ScriptPurpose
scripts/disclosure_checker.pyContent manifest → required disclosures per jurisdiction/platform, risk, gate
scripts/review_authenticity_linter.pyReview set → fake/AI, insider, incentive, suppression, hijacking, duplicate and burst findings, gate

Both: Python 3.8+ standard library only, --format text|json, --fail-on high|medium|low, deterministic.

Scope & Limitations

In Scope:

  • Asset-by-asset disclosure decisions for AI-generated or AI-assisted marketing content under EU AI Act Article 50, FTC 16 CFR Parts 465 and 255, EU UCPD and UK DMCC review rules, New York's synthetic performer ad law and India's IT Rules
  • Platform AI-label rules for YouTube, TikTok, Meta and Google Ads
  • A pre-publication gate with scripts/disclosure_checker.py, which maps a content manifest to required disclosures by jurisdiction and platform and exits 2 on unresolved findings at the chosen risk level
  • Review and testimonial checks with scripts/review_authenticity_linter.py: AI or fake reviews, insider and incentivised reviews, sentiment-conditioned incentives, suppression, hijacking, near-duplicates and posting bursts
  • A decision tree, wording library and evidence templates for recording what was disclosed and where

Out of Scope:

  • Political and electoral advertising rules beyond platform checkboxes; these go to counsel
  • Copyright and personality or publicity rights in AI-generated likenesses
  • Sector rules that add their own disclosure duties, such as financial promotions and medicines advertising
  • EU AI Act obligations beyond Article 50 transparency, such as high-risk systems (see ra-qm-team/eu-ai-act-specialist/)
  • Privacy notices for chatbots and other data processing (see legal/privacy-compliance/)

Important Caveats:

  • The output is decision support, not legal advice. It does not replace counsel.
  • The checker only knows what the manifest declares. If AI involvement, regions or disclosures are classified wrongly, the result is wrong. The review linter's duplicate and burst checks are heuristics that flag leads, not proof of fraud.
  • Only the listed jurisdictions and platforms are encoded. Audiences elsewhere need their own review.
  • Rules and platform policies were checked in September 2026 and change often. Dates, penalties and label settings need checking against the linked official sources before each use.

References

Assets

  • assets/content_manifest_template.json — manifest schema with field guide
  • assets/sample_content_manifest.json — failing sample campaign (exit 2)
  • assets/sample_reviews.json — failing sample review set (exit 2)
  • assets/disclosure-label-templates.md — evidence record, visual tag spec, bylines, chatbot opener, influencer clause

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

This skill should be used when the user asks to "check accessibility", "audit WCAG compliance", "scan HTML for a11y issues", "check color contrast", or "find accessibility violations in web pages".

The English summary is being prepared. Showing the original description.

borghei/Claude-Skills970Updated Oct 23, 2026

Design and run statistically rigorous A/B tests and experiments. Use when planning experiments, calculating sample sizes, designing test variants, selecting metrics, analyzing results, or when someone says "let's test that."

The English summary is being prepared. Showing the original description.

borghei/Claude-Skills970Updated Oct 23, 2026

Design and analyze A/B tests: sample size, test duration, and statistical significance for conversion experiments. Use when setting up an A/B test, calculating sample size, designing an experiment, or analyzing results.

The English summary is being prepared. Showing the original description.

borghei/Claude-Skills970Updated Oct 23, 2026

Sales execution across pipeline, discovery, demos, negotiation, and closing. Use when qualifying opportunities, running MEDDIC discovery, building account plans, handling objections, structuring proposals, or forecasting pipeline.

The English summary is being prepared. Showing the original description.

borghei/Claude-Skills970Updated Oct 23, 2026

Design ad creative across Google, Meta, LinkedIn, Twitter/X, and TikTok with platform format specs, headline formulas, and A/B testing. Use when writing ad copy, generating headline variations, creating ad sets, or validating creative.

The English summary is being prepared. Showing the original description.

borghei/Claude-Skills970Updated Oct 23, 2026

aeo

Free

Answer Engine Optimization (AEO): optimize content to be cited by LLMs (ChatGPT, Claude, Perplexity, Gemini) in their answers. Use when designing content for LLM citation, auditing citability, or structuring Q&A schema.

The English summary is being prepared. Showing the original description.

borghei/Claude-Skills970Updated Oct 23, 2026

See all skills by borghei

Report a problem with this skill