Not in the top 1,000 by GitHub stars

Hainrixz/claude-ads

Self-updating multi-platform paid advertising audit & optimization skill for Claude Code — Google, Meta, TikTok, LinkedIn, Microsoft, Apple, YouTube. Now with /ads update for last-30-days platform refresh. Maintained by tododeia.com.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

ads/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-audit/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-budget/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-competitor/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-conciencia/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-create/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-creative/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-dna/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-generate/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-google/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-landing/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-math/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-meta/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-next/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-photoshoot/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-plan/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-publish/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-start/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-test/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-tiktok/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

skills/ads-update/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → a62525be49b4

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit a62525be49b44a558b3d5c02751f9227a7490515

git clone --filter=blob:none --no-checkout https://github.com/Hainrixz/claude-ads.git .hotskills/hainrixz-claude-ads && git -C .hotskills/hainrixz-claude-ads checkout --detach a62525be49b44a558b3d5c02751f9227a7490515 # Copy each selected skill directory from .hotskills/hainrixz-claude-ads into .claude/skills/<skill-name>/
102GitHub stars
Not availablestars in 7 days
21skills in this repository
5commits in 30 days

Heat

Insufficient history

Not enough history yet to measure heat. It appears after a few days of data.

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Nov 2, 2026Nov 2, 2026102

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

ads

When your agent uses it

Free-first paid advertising audit and optimization skill, focused on the 3 platforms where 95% of advertiser spend lives: Meta, Google, TikTok. Guided onboarding (/ads start) saves context once and step-by-step OAuth walkthroughs; continuous coach (/ads next) ranks Quick Wins after each audit. ~158 weighted checks with scoring, parallel agents, industry templates, and AI creative generation.

What it loads into context

Frontmatter

143 tokens

Always available to the agent

SKILL.md

4,542 tokens

When the skill is activated

Reference documents

124,611 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Quick Reference
  2. First-run behavior
  3. Context Intake (fallback — only when profile is missing AND user declined `/ads start`)
  4. Orchestration Logic
  5. Creative Workflow
  6. Industry Detection
  7. Quality Gates
  8. Reference Files
  9. Scoring Methodology
  10. Sub-Skills
  11. Subagents

Scripts executed separately

  • ../scripts/conciencia.py
  • ../scripts/conciencia.py
  • ../scripts/conciencia.py
  • ../scripts/generate_report.py
  • ../scripts/profile.py
  • ../scripts/profile.py

Files

  • ../.claude-plugin/marketplace.jsonasset1,448 bytes
  • ../.claude-plugin/plugin.jsonasset1,097 bytes
  • SKILL.mdcore19,060 bytes
  • SKILL.mdcore19,060 bytes
  • SKILL.mdcore19,060 bytes
  • SKILL.mdcore19,060 bytes
  • references/additional-platforms.mddoc3,664 bytes
  • references/audit-history-schema.jsonasset2,609 bytes
  • references/audit-methodology.mddoc4,383 bytes
  • references/audit-output-schema.jsonasset5,048 bytes
  • references/benchmarks-cross.mddoc1,003 bytes
  • references/benchmarks-google.mddoc1,640 bytes
  • references/benchmarks-social.mddoc2,679 bytes
  • references/benchmarks.mddoc929 bytes
  • references/bidding-google.mddoc5,291 bytes
  • references/bidding-meta.mddoc1,869 bytes
  • references/bidding-strategies.mddoc989 bytes
  • references/bidding-tiktok.mddoc2,054 bytes
  • references/brand-dna-template.mddoc7,033 bytes
  • references/budget-allocation.mddoc5,899 bytes
  • references/compliance-changes-2025-2026.mddoc2,591 bytes
  • references/compliance-platforms.mddoc3,689 bytes
  • references/compliance-privacy.mddoc3,168 bytes
  • references/compliance.mddoc1,619 bytes
  • references/conciencia-schema.jsonasset5,426 bytes
  • references/conciencia.mddoc5,351 bytes
  • references/conversion-tracking.mddoc1,271 bytes
  • references/copy-frameworks.mddoc9,116 bytes
  • references/gaql-notes.mddoc2,822 bytes
  • references/google-audit-notes.mddoc4,033 bytes
  • references/google-audit.mddoc12,813 bytes
  • references/google-changelog-30d.mddoc3,668 bytes
  • references/google-creative-specs.mddoc3,828 bytes
  • references/image-providers.mddoc5,000 bytes
  • references/mcp-integration.mddoc5,842 bytes
  • references/mcp-meta-integration.mddoc5,962 bytes
  • references/meta-audit.mddoc12,677 bytes
  • references/meta-changelog-30d.mddoc4,104 bytes
  • references/meta-creative-specs.mddoc4,654 bytes
  • references/platform-specs-cross.mddoc1,380 bytes
  • references/platform-specs.mddoc799 bytes
  • references/profile-schema.jsonasset4,607 bytes
  • references/scoring-system.mddoc6,240 bytes
  • references/setup-google.mddoc7,231 bytes
  • references/setup-meta-developers.mddoc4,765 bytes
  • references/setup-meta.mddoc7,122 bytes
  • references/setup-tiktok.mddoc5,278 bytes
  • references/setup-zernio.mddoc4,654 bytes
  • references/tiktok-audit.mddoc10,351 bytes
  • references/tiktok-changelog-30d.mddoc3,618 bytes
  • references/tiktok-creative-specs.mddoc4,896 bytes
  • references/tracking-cross.mddoc1,496 bytes
  • references/tracking-google.mddoc2,865 bytes
  • references/tracking-meta.mddoc2,432 bytes
  • references/tracking-tiktok.mddoc1,488 bytes
  • references/update-cost-warning.mddoc2,050 bytes
  • references/voice-to-style.mddoc3,944 bytes
  • research-sources/README.mddoc883 bytes
  • research-sources/claude-research.mddoc4,004 bytes
  • research-sources/gemini-research.mddoc10,415 bytes
  • research-sources/google-audit-checklists.mddoc26,568 bytes
  • research-sources/google-optimization-logic.mddoc12,177 bytes
  • research-sources/google-platform-specs.mddoc16,965 bytes
  • ../scripts/api/README.mddoc6,684 bytes
  • ../scripts/conciencia.pyruns25,375 bytes
  • ../scripts/conciencia.pyruns25,375 bytes
  • ../scripts/conciencia.pyruns25,375 bytes
  • ../scripts/generate_report.pyruns28,631 bytes
  • ../scripts/profile.pyruns12,881 bytes
  • ../scripts/profile.pyruns12,881 bytes
  • ../skills/ads-audit/SKILL.mddoc4,717 bytes
  • ../skills/ads-budget/SKILL.mddoc8,146 bytes
  • ../skills/ads-competitor/SKILL.mddoc9,059 bytes
  • ../skills/ads-conciencia/SKILL.mddoc8,378 bytes
  • ../skills/ads-create/SKILL.mddoc8,193 bytes
  • ../skills/ads-creative/SKILL.mddoc8,129 bytes
  • ../skills/ads-dna/SKILL.mddoc9,478 bytes
  • ../skills/ads-generate/SKILL.mddoc6,374 bytes
  • ../skills/ads-google/SKILL.mddoc9,213 bytes
  • ../skills/ads-landing/SKILL.mddoc7,411 bytes
  • ../skills/ads-math/SKILL.mddoc6,175 bytes
  • ../skills/ads-meta/SKILL.mddoc7,464 bytes
  • ../skills/ads-next/SKILL.mddoc10,208 bytes
  • ../skills/ads-photoshoot/SKILL.mddoc8,529 bytes
  • ../skills/ads-plan/SKILL.mddoc7,459 bytes
  • ../skills/ads-plan/assets/agency.mddoc7,382 bytes
  • ../skills/ads-plan/assets/ecommerce-creative.mddoc5,735 bytes
  • ../skills/ads-plan/assets/ecommerce.mddoc6,495 bytes
  • ../skills/ads-plan/assets/finance.mddoc9,030 bytes
  • ../skills/ads-plan/assets/generic.mddoc8,042 bytes
  • ../skills/ads-plan/assets/healthcare.mddoc8,299 bytes
  • ../skills/ads-plan/assets/local-service.mddoc6,809 bytes
  • ../skills/ads-plan/assets/real-estate.mddoc7,373 bytes
  • ../skills/ads-publish/SKILL.mddoc6,320 bytes
  • ../skills/ads-start/SKILL.mddoc12,527 bytes
  • ../skills/ads-test/SKILL.mddoc7,173 bytes
  • ../skills/ads-tiktok/SKILL.mddoc7,668 bytes
  • ../skills/ads-update/SKILL.mddoc8,187 bytes
Read SKILL.md
<!-- Portions Copyright (c) 2026 Enrique Rocha (@soyenriquerocha) - see LICENSE for original authors · tododeia.com · id er-fd4fa55b -->

# Ads: Free-first Paid Advertising Audit & Optimization

Focused ad account analysis on the 3 base platforms where most ad spend
lives: **Meta, Google, TikTok**. Orchestrates 20 specialized sub-skills and
7 agents (3 audit + 4 creative). First-run users should type **`/ads start`**
— a guided wizard that captures context, walks them through OAuth setup
step-by-step, and persists everything to `~/.claude-ads/profile.json` so no
future command ever re-asks.

## Quick Reference

| Command | What it does |
|---------|-------------|
View the complete source on GitHub

Skills included

  • ads
  • ads-audit
  • ads-budget
  • ads-competitor
  • ads-conciencia
  • ads-create
  • ads-creative
  • ads-dna
  • ads-generate
  • ads-google
  • ads-landing
  • ads-math
  • ads-meta
  • ads-next
  • ads-photoshoot
  • ads-plan
  • ads-publish
  • ads-start
  • ads-test
  • ads-tiktok
  • ads-update

Repository facts

License
MIT
Created
Apr 29, 2026
Last pushed
Oct 27, 2026
Forks
21
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 6, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 43 notes
  • ads/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • ads/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • ads/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/conciencia.py:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/conciencia.py:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/profile.py:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/conciencia.py:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/conciencia.py:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • scripts/profile.py:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/ads-conciencia/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/ads-conciencia/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/ads-conciencia/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/ads-conciencia/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/ads-conciencia/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/ads-dna/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/ads-dna/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/ads-dna/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/ads-generate/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/ads-google/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/ads-math/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 604 signals by file

.claude-plugin/marketplace.json

  • Network accessline 17
    "name": "tododeia"       },       "homepage": "https://tododeia.com",
  • Network accessline 18
    },       "homepage": "https://tododeia.com",       "repository": "https://github.com/Hainrixz/claude-ads",
  • Network accessline 19
    "homepage": "https://tododeia.com",
  • Network accessline 20
    "repository": "https://github.com/Hainrixz/claude-ads",

.claude-plugin/plugin.json

  • Network accessline 5
    "author": {     "name": "tododeia",     "url": "https://tododeia.com"
  • Network accessline 6
    "name": "tododeia",     "url": "https://tododeia.com"   },
  • Network accessline 7
    "url": "https://tododeia.com"
  • Network accessline 8
    },   "homepage": "https://tododeia.com",   "repository": "https://github.com/Hainrixz/claude-ads",
  • Network accessline 9
    "homepage": "https://tododeia.com",
  • Network accessline 10
    "repository": "https://github.com/Hainrixz/claude-ads",

ads/SKILL.md

  • Access to secretsline 129
    [Credential-related source omitted]
  • Network accessline 273
    Maintained by [tododeia.com](https://tododeia.com) — Instagram [@soyenriquerocha](https://instagram.com/soyenriquerocha)

ads/references/audit-history-schema.json

  • Network accessline 1
    {   "$schema": "http://json-schema.org/draft-07/schema#",
  • Network accessline 2
    "$schema": "http://json-schema.org/draft-07/schema#",
  • Network accessline 3
    "$id": "https://github.com/Hainrixz/claude-ads/blob/main/ads/references/audit-history-schema.json",

ads/references/audit-output-schema.json

  • Network accessline 1
    {   "$schema": "http://json-schema.org/draft-07/schema#",
  • Network accessline 2
    "$schema": "http://json-schema.org/draft-07/schema#",
  • Network accessline 3
    "$id": "https://github.com/Hainrixz/claude-ads/ads/references/audit-output-schema.json",

ads/references/brand-dna-template.md

  • Network accessline 17
    "schema_version": "1.0",   "brand_name": "string",   "website_url": "string (full URL including https://)",
  • Network accessline 18
    "brand_name": "string",   "website_url": "string (full URL including https://)",   "extracted_at": "ISO-8601 timestamp (e.g. 2026-03-12T14:30:00Z)",
  • Network accessline 19
    "website_url": "string (full URL including https://)",

ads/references/compliance-privacy.md

  • Access to secretsline 19
    [Credential-related source omitted]

ads/references/conciencia-schema.json

  • Network accessline 1
    {   "$schema": "http://json-schema.org/draft-07/schema#",
  • Network accessline 2
    "$schema": "http://json-schema.org/draft-07/schema#",
  • Network accessline 3
    "$id": "https://github.com/Hainrixz/claude-ads/blob/main/ads/references/conciencia-schema.json",

ads/references/google-changelog-30d.md

  • Network accessline 9
    - [Google Ads AI Max — General Availability](https://blog.google/products/ads-commerce/dsa-upgrade-to-ai-max-2026/) — 2026-04-15 — Google — AI Max reached GA on April 15, 2026 after exiting beta in May 2025. Average +7% conversions or conve
  • Network accessline 10
    - [Dynamic Search Ads upgrading to AI Max](https://business.google.com/us/accelerate/announcements/dsa-upgrade-to-ai-max-2026/) — 2026-04 — Google for Business — Starting in September 2026, campaigns using DSA, automatically created assets 
  • Network accessline 11
    - [Google Ads product announcements feed](https://business.google.com/us/accelerate/announcements/) — Ongoing — Live changelog of all Google Ads product launches.
  • Network accessline 12
    - [Performance Max — Asset experiments](https://support.google.com/google-ads/answer/16756291) — 2026-04-20 — Google — Asset experiments are launching for Performance Max alongside other experiments-framework updates.
  • Network accessline 16
    - [Google Replacing Dynamic Search Ads With 'AI Max'](https://www.mediapost.com/publications/article/414317/google-replacing-dynamic-search-ads-with-ai-max.html) — 2026-04-15 — MediaPost — Coverage of the DSA → AI Max sunset path.
  • Network accessline 17
    - [Google AI Max GA: DSA Sunset Playbook for Agencies](https://www.digitalapplied.com/blog/google-ai-max-ga-dsa-sunset-agency-playbook-2026) — 2026-04 — Digital Applied — Migration playbook for agencies running large DSA portfolios.
  • Network accessline 18
    - [Google Demand Gen April 2026 Update: Commerce Media Suite and View-Through Conversion Optimization](https://almcorp.com/blog/google-demand-gen-april-2026-update/) — 2026-04 — ALM Corp — Two headline additions: Commerce Media Suite suppor
  • Network accessline 19
    - [Google Ads Editor 2.12: Every New Feature Explained](https://almcorp.com/blog/google-ads-editor-2-12-new-features-2026/) — 2026 — ALM Corp — PMax + Demand Gen + Total Budgets + more.
  • Network accessline 20
    - [Google Ads 2025 Year-in-Review](https://almcorp.com/blog/google-ads-2025-year-in-review-updates-explained-and-2026-predictions/) — 2026 — ALM Corp — Catalog and forward-look.
  • Network accessline 24
    - [Google Demand Gen Strategy Guide for 2026 (w/ Thomas Eccel)](https://www.lunio.ai/blog/google-demand-gen-strategy-guide) — 2026 — Lunio — Practitioner strategy guide reflecting the April changes.

ads/references/image-providers.md

  • Access to secretsline 14
    [Credential-related source omitted]
  • Access to secretsline 102
    [Credential-related source omitted]
  • Access to secretsline 107
    [Credential-related source omitted]
  • Access to secretsline 112
    [Credential-related source omitted]

ads/references/mcp-integration.md

  • Network accessline 23
    **Repo:** https://github.com/cohnen/mcp-google-ads
  • Access to secretsline 39
    [Credential-related source omitted]
  • Network accessline 83
    **Docs:** https://www.adspirer.com/blog/connect-claude-meta-ads
  • Network accessline 92
    **Community MCP:** [`AdsMCP/tiktok-ads-mcp-server`](https://github.com/AdsMCP/tiktok-ads-mcp-server) provides campaign / adgroup / ad / report data access (free, open-source).

ads/references/meta-changelog-30d.md

  • Network accessline 9
    - [Marketing API v25.0 — ASC and AAC API deprecation](https://developers.facebook.com/docs/marketing-api/changelog) — 2026-04 — Advantage Shopping Campaigns (ASC) and Advantage App Campaign (AAC) APIs deprecated in MAPI v25.0. Migration to 
  • Network accessline 10
    - [Advantage+ Audience replaces Lookalikes](https://www.facebook.com/business/news) — 2026-04 — Lookalike audiences are being phased out in favor of Advantage+ audience targeting. Manual lookalike workflows still work but are flagged as leg
  • Network accessline 11
    - [Advantage+ default for Sales/Leads/App Promotion](https://www.facebook.com/business/news) — 2026 — Advantage+ campaigns are now the default setup for Sales, Leads, and App Promotion objectives in Ads Manager.
  • Network accessline 15
    - [Meta Ads Changes 2026 — Attribution, AI & New Rules](https://gezar.dk/en/blog/meta-ads-changes-2026) — 2026-04 — Gezar — Comprehensive changelog of attribution-window changes, conversion-modeling updates, and new policy rules under Andro
  • Network accessline 16
    - [How Meta's AI push is changing ad creation](https://www.marketingbrew.com/stories/2026/04/07/meta-ai-ad-creation) — 2026-04-07 — Marketing Brew — Coverage of Meta's expanded generative-creative tooling and the practitioner reaction.
  • Network accessline 17
    - [Facebook Ad Algorithm Changes for 2026: What Marketers Need to Know](https://www.socialmediaexaminer.com/facebook-ad-algorithm-changes-for-2026-what-marketers-need-to-know/) — 2026-04 — Social Media Examiner — Practical guide to adapting
  • Network accessline 18
    - [Every Meta Ads Change in 2025-2026: The Complete Changelog](https://www.dataslayer.ai/blog/meta-ads-changes-2025-83-updates-that-changed-facebook-advertising-forever) — 2026 — Dataslayer — Catalog of 83 updates with implementation notes.
  • Network accessline 22
    - [Meta Andromeda 2026: Complete Guide to Facebook Ads AI [April Update]](https://www.1clickreport.com/blog/meta-andromeda-update-2025-guide) — 2026-04 — 1ClickReport — Walkthrough of how Andromeda changes ad delivery and what advertisers s
  • Network accessline 23
    - [What Is the Meta Andromeda Update and Why Is It Destroying Ad Performance?](https://medium.com/write-a-catalyst/what-is-the-meta-andromeda-update-and-why-is-it-destroying-ad-performance-a3959e1c5a1b) — 2026-04 — Adam Saad / Medium — Crit
  • Network accessline 24
    - [It's Not Andromeda: Inside Meta's AI Ad Stack And Why Nothing is Working](https://www.triplewhale.com/blog/meta-ads-ai-system) — 2026 — Triple Whale — Counter-narrative arguing the perceived performance issues stem from broader Meta AI s

ads/references/profile-schema.json

  • Network accessline 1
    {   "$schema": "http://json-schema.org/draft-07/schema#",
  • Network accessline 2
    "$schema": "http://json-schema.org/draft-07/schema#",
  • Network accessline 3
    "$id": "https://github.com/Hainrixz/claude-ads/blob/main/ads/references/profile-schema.json",
  • Access to secretsline 68
    [Credential-related source omitted]

ads/references/setup-google.md

  • Access to secretsline 37
    [Credential-related source omitted]
  • Access to secretsline 39
    [Credential-related source omitted]
  • Network accessline 74
    → **API Center** → fill the application. Start at **Test access level**   (instant; only works against test accounts). Apply for **Basic** for real   data. URL: https://ads.google.com/aw/apicenter
  • Network accessline 75
    (instant; only works against test accounts). Apply for **Basic** for real   data. URL: https://ads.google.com/aw/apicenter - **Expect to see**: developer token displayed (string like `aBcD-1234...`).
  • Network accessline 76
    data. URL: https://ads.google.com/aw/apicenter
  • Network accessline 77
    - **Expect to see**: developer token displayed (string like `aBcD-1234...`). - **On error**: "You must be on an MCC" → create an MCC at   https://ads.google.com/home/tools/manager-accounts/ and link the operating
  • Network accessline 78
    - **On error**: "You must be on an MCC" → create an MCC at   https://ads.google.com/home/tools/manager-accounts/ and link the operating   account to it.
  • Network accessline 79
    https://ads.google.com/home/tools/manager-accounts/ and link the operating
  • Network accessline 82
    ### STEP B2 — Create OAuth 2.0 client - **Goal**: a client_id + client_secret to exchange for tokens. - **Do this**: https://console.cloud.google.com → **APIs & Services** →
  • Network accessline 83
    [Credential-related source omitted]
  • Access to secretsline 83
    [Credential-related source omitted]
  • Network accessline 84
    - **Do this**: https://console.cloud.google.com → **APIs & Services** →
  • Access to secretsline 87
    [Credential-related source omitted]
  • Network accessline 98
    ### STEP B4 — Generate a refresh token - **Goal**: long-lived token that the script can refresh automatically. - **Do this**: easiest path is the [OAuth 2.0 Playground](https://developers.google.com/oauthplayground/):
  • Network accessline 99
    - **Goal**: long-lived token that the script can refresh automatically. - **Do this**: easiest path is the [OAuth 2.0 Playground](https://developers.google.com/oauthplayground/):   gear icon → tick **Use your own OAuth credentials** → paste
  • Network accessline 100
    - **Do this**: easiest path is the [OAuth 2.0 Playground](https://developers.google.com/oauthplayground/):
  • Network accessline 101
    gear icon → tick **Use your own OAuth credentials** → paste client_id/   secret → scope `https://www.googleapis.com/auth/adwords` → Authorize APIs   → Sign in → **Exchange authorization code for tokens** → copy
  • Network accessline 102
    secret → scope `https://www.googleapis.com/auth/adwords` → Authorize APIs
  • Network accessline 105
    - **Expect to see**: a string starting with `1//...`. - **On error**: `redirect_uri_mismatch` → in GCP Credentials, add   `https://developers.google.com/oauthplayground` as an authorized redirect
  • Network accessline 106
    - **On error**: `redirect_uri_mismatch` → in GCP Credentials, add   `https://developers.google.com/oauthplayground` as an authorized redirect   URI.
  • Network accessline 107
    `https://developers.google.com/oauthplayground` as an authorized redirect
  • Access to secretsline 121
    [Credential-related source omitted]
  • Access to secretsline 123
    [Credential-related source omitted]
  • Access to secretsline 124
    [Credential-related source omitted]

ads/references/setup-meta-developers.md

  • Network accessline 14
    ## STEP 1 — Go to the developer portal - **Goal**: open the right onboarding page. - **Do this**: https://developers.facebook.com → **Get Started** (top right)
  • Network accessline 15
    - **Goal**: open the right onboarding page. - **Do this**: https://developers.facebook.com → **Get Started** (top right)   → **Continue as <Facebook user>** (uses the user's existing Facebook
  • Network accessline 16
    - **Do this**: https://developers.facebook.com → **Get Started** (top right)

ads/references/setup-meta.md

  • Network accessline 17
    ### STEP A1 — Enable the Facebook connector on claude.ai - **Goal**: turn on the official Meta MCP in the user's Claude session. - **Do this**: open https://claude.ai → top-right avatar → **Connectors** →
  • Network accessline 18
    - **Goal**: turn on the official Meta MCP in the user's Claude session. - **Do this**: open https://claude.ai → top-right avatar → **Connectors** →   find **Facebook (Meta Ads)** → click **Connect** → log in with Facebook →
  • Network accessline 19
    - **Do this**: open https://claude.ai → top-right avatar → **Connectors** →
  • Network accessline 80
    [Credential-related source omitted]
  • Access to secretsline 80
    [Credential-related source omitted]
  • Access to secretsline 82
    [Credential-related source omitted]
  • Access to secretsline 85
    [Credential-related source omitted]
  • Access to secretsline 97
    [Credential-related source omitted]
  • Access to secretsline 104
    [Credential-related source omitted]

ads/references/setup-tiktok.md

  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 32
    [Credential-related source omitted]
  • Network accessline 58
    ### STEP B1 — Sign up for TikTok for Business - **Goal**: have a Business Center account. - **Do this**: https://business.tiktok.com → sign up → create a Business
  • Network accessline 59
    - **Goal**: have a Business Center account. - **Do this**: https://business.tiktok.com → sign up → create a Business   Center (BC).
  • Network accessline 60
    - **Do this**: https://business.tiktok.com → sign up → create a Business
  • Network accessline 66
    ### STEP B2 — Create a developer app - **Do this**: https://business-api.tiktok.com → **My Apps** → Create. Fill
  • Network accessline 67
    - **Do this**: https://business-api.tiktok.com → **My Apps** → Create. Fill
  • Network accessline 68
    app name, callback URL (use `http://localhost:8080` for testing), advertiser
  • Network accessline 78
    more advertiser_ids → callback returns `auth_code` in the URL. - **Expect to see**: a URL like   `http://localhost:8080/?auth_code=xxx&state=...`. Copy `auth_code`.
  • Network accessline 79
    - **Expect to see**: a URL like   `http://localhost:8080/?auth_code=xxx&state=...`. Copy `auth_code`. - **On error**: `app under review` → some scopes need TikTok approval; start
  • Network accessline 80
    `http://localhost:8080/?auth_code=xxx&state=...`. Copy `auth_code`.
  • Access to secretsline 84
    [Credential-related source omitted]
  • Network accessline 87
    [Credential-related source omitted]
  • Access to secretsline 87
    [Credential-related source omitted]
  • Access to secretsline 91
    [Credential-related source omitted]
  • Access to secretsline 103
    [Credential-related source omitted]

ads/references/setup-zernio.md

  • Network accessline 14
    ## STEP 1 — Create the Zernio account - **Goal**: have a Zernio dashboard the user can log into. - **Do this**: open https://zernio.com → **Sign up** → email + password (or
  • Network accessline 15
    - **Goal**: have a Zernio dashboard the user can log into. - **Do this**: open https://zernio.com → **Sign up** → email + password (or   Google SSO).
  • Network accessline 16
    - **Do this**: open https://zernio.com → **Sign up** → email + password (or
  • Access to secretsline 53
    [Credential-related source omitted]
  • Access to secretsline 57
    [Credential-related source omitted]
  • Access to secretsline 60
    [Credential-related source omitted]
  • Access to secretsline 71
    [Credential-related source omitted]
  • Access to secretsline 99
    [Credential-related source omitted]
  • Access to secretsline 112
    [Credential-related source omitted]

ads/references/tiktok-changelog-30d.md

  • Network accessline 9
    - [TikTok Announces New Automation Updates for Advertisers: Smarter Ads, More Control, and Measurable Impact](https://newsroom.tiktok.com/tiktok-announces-new-automation-updates-for-advertisers?lang=en) — 2026-04 — TikTok Newsroom — Manual 
  • Network accessline 10
    - [Smart+ Upgraded Experience](https://ads.tiktok.com/help/article/about-updates-to-smart-plus?lang=en) — 2026-04 — TikTok Ads Help — Reference doc for the unified flow. Module-by-module toggling of targeting / budget / creative automation.
  • Network accessline 11
    - [TikTok API for Business — recent posts](https://business-api.tiktok.com/portal/blog/detail/7531992556561760257) — 2026 — TikTok Business API blog — Latest API release notes including the GMV Max Campaign Creation API and GMV Max Reportin
  • Network accessline 12
    - [About GMV Max migration for TikTok Shop Ads](https://ads.tiktok.com/help/article/gmv-max-migration-tiktok-shop-ads) — 2026 — TikTok Ads Help — As of July 2026, GMV Max becomes the default and only supported campaign type for TikTok Shop 
  • Network accessline 16
    - [TikTok Smart+ Ads Update 2026 — AdBeacon](https://www.adbeacon.com/tiktok-smart-ads-api-integration-gmv-max-reporting-now-live-in-adbeacon/) — 2026-04 — AdBeacon — Coverage of GMV Max reporting now flowing into third-party analytics tool
  • Network accessline 17
    - [TikTok Outlines Updates To In-Stream Shopping Ads and Options](https://www.socialmediatoday.com/news/tiktok-smart-plus-ecommerce-in-stream-sales-services/743513/) — 2026 — Social Media Today — Smart+ + e-commerce + in-stream sales rollou
  • Network accessline 18
    - [TikTok Ads updates (Supermetrics)](https://docs.supermetrics.com/docs/tiktok-ads-updates) — Ongoing — Supermetrics — Tracker of API changes affecting third-party reporting integrations.
  • Network accessline 22
    - [How to Scale TikTok Ads in 2026 (Without Killing Your CPA)](https://admanage.ai/blog/how-to-scale-tiktok-ads) — 2026 — AdManage — Practitioner playbook adapted to the unified Smart+ flow.
  • Network accessline 23
    - [TikTok Marketing Source — Integrate TikTok GMV Max Campaign Data into TikTok Marketing Connector](https://github.com/airbytehq/airbyte/discussions/55817) — 2026 — Airbyte / GitHub — Open-source community thread on building GMV Max API in

ads/research-sources/gemini-research.md

  • Access to secretsline 24
    [Credential-related source omitted]

scripts/ads_sources.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 48
    subreddits=["FacebookAds", "PPC", "MarketingAutomation", "advertising"],         changelog_urls=[             "https://developers.facebook.com/docs/graph-api/changelog",
  • Network accessline 49
    changelog_urls=[             "https://developers.facebook.com/docs/graph-api/changelog",             "https://developers.facebook.com/docs/marketing-api/changelog",
  • Network accessline 50
    "https://developers.facebook.com/docs/graph-api/changelog",
  • Network accessline 51
    "https://developers.facebook.com/docs/marketing-api/changelog",
  • Network accessline 52
    "https://www.facebook.com/business/news",
  • Network accessline 66
    subreddits=["GoogleAds", "PPC", "bigseo", "googleads"],         changelog_urls=[             "https://support.google.com/google-ads/answer/2375475",  # What's new in Google Ads
  • Network accessline 67
    changelog_urls=[             "https://support.google.com/google-ads/answer/2375475",  # What's new in Google Ads             "https://developers.google.com/google-ads/api/docs/release-notes",
  • Network accessline 68
    "https://support.google.com/google-ads/answer/2375475",  # What's new in Google Ads
  • Network accessline 69
    "https://developers.google.com/google-ads/api/docs/release-notes",
  • Network accessline 70
    "https://blog.google/products/ads-commerce/",
  • Network accessline 84
    subreddits=["TikTokAds", "marketing", "PPC"],         changelog_urls=[             "https://business-api.tiktok.com/portal/docs?id=1740626878662658",
  • Network accessline 85
    changelog_urls=[             "https://business-api.tiktok.com/portal/docs?id=1740626878662658",             "https://www.tiktok.com/business/en/blog",
  • Network accessline 86
    "https://business-api.tiktok.com/portal/docs?id=1740626878662658",
  • Network accessline 87
    "https://www.tiktok.com/business/en/blog",

scripts/api/README.md

  • Network accessline 53
    1. Go to [developers.facebook.com](https://developers.facebook.com) → My Apps → create a Business app.
  • Network accessline 53
    1. Go to [developers.facebook.com](https://developers.facebook.com) → My Apps → create a Business app.
  • Network accessline 53
    1. Go to [developers.facebook.com](https://developers.facebook.com) → My Apps → create a Business app.
  • Network accessline 53
    1. Go to [developers.facebook.com](https://developers.facebook.com) → My Apps → create a Business app.
  • Network accessline 53
    1. Go to [developers.facebook.com](https://developers.facebook.com) → My Apps → create a Business app.
  • Network accessline 58
    [Credential-related source omitted]
  • Network accessline 58
    [Credential-related source omitted]
  • Network accessline 58
    [Credential-related source omitted]
  • Network accessline 58
    [Credential-related source omitted]
  • Network accessline 58
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]
  • Access to secretsline 58
    [Credential-related source omitted]
  • Access to secretsline 61
    [Credential-related source omitted]
  • Access to secretsline 61
    [Credential-related source omitted]
  • Access to secretsline 61
    [Credential-related source omitted]
  • Access to secretsline 61
    [Credential-related source omitted]
  • Access to secretsline 61
    [Credential-related source omitted]
  • Access to secretsline 68
    [Credential-related source omitted]
  • Access to secretsline 68
    [Credential-related source omitted]
  • Access to secretsline 68
    [Credential-related source omitted]
  • Access to secretsline 68
    [Credential-related source omitted]
  • Access to secretsline 68
    [Credential-related source omitted]
  • Network accessline 77
    1. Create or use a Google Ads MCC (manager) account. 2. Apply for API access at [developers.google.com/google-ads/api](https://developers.google.com/google-ads/api/docs/access-levels) → get a **developer token** (start at Test level; reques
  • Network accessline 77
    1. Create or use a Google Ads MCC (manager) account. 2. Apply for API access at [developers.google.com/google-ads/api](https://developers.google.com/google-ads/api/docs/access-levels) → get a **developer token** (start at Test level; reques
  • Network accessline 77
    1. Create or use a Google Ads MCC (manager) account. 2. Apply for API access at [developers.google.com/google-ads/api](https://developers.google.com/google-ads/api/docs/access-levels) → get a **developer token** (start at Test level; reques
  • Network accessline 77
    1. Create or use a Google Ads MCC (manager) account. 2. Apply for API access at [developers.google.com/google-ads/api](https://developers.google.com/google-ads/api/docs/access-levels) → get a **developer token** (start at Test level; reques
  • Network accessline 77
    1. Create or use a Google Ads MCC (manager) account. 2. Apply for API access at [developers.google.com/google-ads/api](https://developers.google.com/google-ads/api/docs/access-levels) → get a **developer token** (start at Test level; reques
  • Network accessline 78
    2. Apply for API access at [developers.google.com/google-ads/api](https://developers.google.com/google-ads/api/docs/access-levels) → get a **developer token** (start at Test level; request Basic/Standard for production).
  • Network accessline 78
    2. Apply for API access at [developers.google.com/google-ads/api](https://developers.google.com/google-ads/api/docs/access-levels) → get a **developer token** (start at Test level; request Basic/Standard for production).
  • Network accessline 78
    2. Apply for API access at [developers.google.com/google-ads/api](https://developers.google.com/google-ads/api/docs/access-levels) → get a **developer token** (start at Test level; request Basic/Standard for production).
  • Network accessline 78
    2. Apply for API access at [developers.google.com/google-ads/api](https://developers.google.com/google-ads/api/docs/access-levels) → get a **developer token** (start at Test level; request Basic/Standard for production).
  • Network accessline 78
    2. Apply for API access at [developers.google.com/google-ads/api](https://developers.google.com/google-ads/api/docs/access-levels) → get a **developer token** (start at Test level; request Basic/Standard for production).
  • Network accessline 79
    [Credential-related source omitted]
  • Network accessline 79
    [Credential-related source omitted]
  • Network accessline 79
    [Credential-related source omitted]
  • Network accessline 79
    [Credential-related source omitted]
  • Network accessline 79
    [Credential-related source omitted]
  • Access to secretsline 79
    [Credential-related source omitted]
  • Access to secretsline 79
    [Credential-related source omitted]
  • Access to secretsline 79
    [Credential-related source omitted]
  • Access to secretsline 79
    [Credential-related source omitted]
  • Access to secretsline 79
    [Credential-related source omitted]
  • Network accessline 80
    4. Generate a refresh token via OAuth Playground or the [google-ads-python](https://github.com/googleads/google-ads-python/blob/main/examples/authentication/generate_user_credentials.py) helper. Scope: `https://www.googleapis.com/auth/adwor
  • Network accessline 80
    4. Generate a refresh token via OAuth Playground or the [google-ads-python](https://github.com/googleads/google-ads-python/blob/main/examples/authentication/generate_user_credentials.py) helper. Scope: `https://www.googleapis.com/auth/adwor
  • Network accessline 80
    4. Generate a refresh token via OAuth Playground or the [google-ads-python](https://github.com/googleads/google-ads-python/blob/main/examples/authentication/generate_user_credentials.py) helper. Scope: `https://www.googleapis.com/auth/adwor
  • Network accessline 80
    4. Generate a refresh token via OAuth Playground or the [google-ads-python](https://github.com/googleads/google-ads-python/blob/main/examples/authentication/generate_user_credentials.py) helper. Scope: `https://www.googleapis.com/auth/adwor
  • Network accessline 80
    4. Generate a refresh token via OAuth Playground or the [google-ads-python](https://github.com/googleads/google-ads-python/blob/main/examples/authentication/generate_user_credentials.py) helper. Scope: `https://www.googleapis.com/auth/adwor
  • Access to secretsline 84
    [Credential-related source omitted]
  • Access to secretsline 84
    [Credential-related source omitted]
  • Access to secretsline 84
    [Credential-related source omitted]
  • Access to secretsline 84
    [Credential-related source omitted]
  • Access to secretsline 84
    [Credential-related source omitted]
  • Access to secretsline 86
    [Credential-related source omitted]
  • Access to secretsline 86
    [Credential-related source omitted]
  • Access to secretsline 86
    [Credential-related source omitted]
  • Access to secretsline 86
    [Credential-related source omitted]
  • Access to secretsline 86
    [Credential-related source omitted]
  • Access to secretsline 87
    [Credential-related source omitted]
  • Access to secretsline 87
    [Credential-related source omitted]
  • Access to secretsline 87
    [Credential-related source omitted]
  • Access to secretsline 87
    [Credential-related source omitted]
  • Access to secretsline 87
    [Credential-related source omitted]
  • Network accessline 96
    1. Apply for the [TikTok for Business API](https://business-api.tiktok.com/portal/docs?id=1738455508553729) (Business Center account required).
  • Network accessline 96
    1. Apply for the [TikTok for Business API](https://business-api.tiktok.com/portal/docs?id=1738455508553729) (Business Center account required).
  • Network accessline 96
    1. Apply for the [TikTok for Business API](https://business-api.tiktok.com/portal/docs?id=1738455508553729) (Business Center account required).
  • Network accessline 96
    1. Apply for the [TikTok for Business API](https://business-api.tiktok.com/portal/docs?id=1738455508553729) (Business Center account required).
  • Network accessline 96
    1. Apply for the [TikTok for Business API](https://business-api.tiktok.com/portal/docs?id=1738455508553729) (Business Center account required).
  • Network accessline 98
    [Credential-related source omitted]
  • Network accessline 98
    [Credential-related source omitted]
  • Network accessline 98
    [Credential-related source omitted]
  • Network accessline 98
    [Credential-related source omitted]
  • Network accessline 98
    [Credential-related source omitted]
  • Access to secretsline 98
    [Credential-related source omitted]
  • Access to secretsline 98
    [Credential-related source omitted]
  • Access to secretsline 98
    [Credential-related source omitted]
  • Access to secretsline 98
    [Credential-related source omitted]
  • Access to secretsline 98
    [Credential-related source omitted]
  • Access to secretsline 101
    [Credential-related source omitted]
  • Access to secretsline 101
    [Credential-related source omitted]
  • Access to secretsline 101
    [Credential-related source omitted]
  • Access to secretsline 101
    [Credential-related source omitted]
  • Access to secretsline 101
    [Credential-related source omitted]

scripts/api/google_fetch.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 12
    1. Create or use an existing Google Ads MCC (manager) account. 2. Apply for API access:    https://developers.google.com/google-ads/api/docs/access-levels#access-level
  • Network accessline 12
    1. Create or use an existing Google Ads MCC (manager) account. 2. Apply for API access:    https://developers.google.com/google-ads/api/docs/access-levels#access-level
  • Network accessline 12
    1. Create or use an existing Google Ads MCC (manager) account. 2. Apply for API access:    https://developers.google.com/google-ads/api/docs/access-levels#access-level
  • Network accessline 13
    2. Apply for API access:    https://developers.google.com/google-ads/api/docs/access-levels#access-level    You'll get a **developer token** (initial level: Test → request Basic/Standard).
  • Network accessline 13
    2. Apply for API access:    https://developers.google.com/google-ads/api/docs/access-levels#access-level    You'll get a **developer token** (initial level: Test → request Basic/Standard).
  • Network accessline 13
    2. Apply for API access:    https://developers.google.com/google-ads/api/docs/access-levels#access-level    You'll get a **developer token** (initial level: Test → request Basic/Standard).
  • Network accessline 14
    https://developers.google.com/google-ads/api/docs/access-levels#access-level
  • Network accessline 14
    https://developers.google.com/google-ads/api/docs/access-levels#access-level
  • Network accessline 14
    https://developers.google.com/google-ads/api/docs/access-levels#access-level
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Network accessline 18
    4. Generate a **refresh_token** using the OAuth Playground or the    ``google-ads-python`` ``generate_user_credentials.py`` script. Scope:    ``https://www.googleapis.com/auth/adwords``.
  • Network accessline 18
    4. Generate a **refresh_token** using the OAuth Playground or the    ``google-ads-python`` ``generate_user_credentials.py`` script. Scope:    ``https://www.googleapis.com/auth/adwords``.
  • Network accessline 18
    4. Generate a **refresh_token** using the OAuth Playground or the    ``google-ads-python`` ``generate_user_credentials.py`` script. Scope:    ``https://www.googleapis.com/auth/adwords``.
  • Network accessline 19
    ``google-ads-python`` ``generate_user_credentials.py`` script. Scope:    ``https://www.googleapis.com/auth/adwords``. 5. Find your **customer_id** (the 10-digit number under the MCC, or directly
  • Network accessline 19
    ``google-ads-python`` ``generate_user_credentials.py`` script. Scope:    ``https://www.googleapis.com/auth/adwords``. 5. Find your **customer_id** (the 10-digit number under the MCC, or directly
  • Network accessline 19
    ``google-ads-python`` ``generate_user_credentials.py`` script. Scope:    ``https://www.googleapis.com/auth/adwords``. 5. Find your **customer_id** (the 10-digit number under the MCC, or directly
  • Network accessline 20
    ``https://www.googleapis.com/auth/adwords``.
  • Network accessline 20
    ``https://www.googleapis.com/auth/adwords``.
  • Network accessline 20
    ``https://www.googleapis.com/auth/adwords``.
  • Access to secretsline 29
    [Credential-related source omitted]
  • Access to secretsline 29
    [Credential-related source omitted]
  • Access to secretsline 29
    [Credential-related source omitted]
  • Network accessline 58
    DEFAULT_API_VERSION = "v18" OAUTH_TOKEN_URL = "https://oauth2.googleapis.com/token"
  • Network accessline 58
    DEFAULT_API_VERSION = "v18" OAUTH_TOKEN_URL = "https://oauth2.googleapis.com/token"
  • Network accessline 58
    DEFAULT_API_VERSION = "v18" OAUTH_TOKEN_URL = "https://oauth2.googleapis.com/token"
  • Network accessline 59
    OAUTH_TOKEN_URL = "https://oauth2.googleapis.com/token"
  • Network accessline 59
    OAUTH_TOKEN_URL = "https://oauth2.googleapis.com/token"
  • Network accessline 59
    OAUTH_TOKEN_URL = "https://oauth2.googleapis.com/token"
  • Network accessline 60
    ADS_API_BASE = "https://googleads.googleapis.com"
  • Network accessline 60
    ADS_API_BASE = "https://googleads.googleapis.com"
  • Network accessline 60
    ADS_API_BASE = "https://googleads.googleapis.com"
  • Access to secretsline 146
    [Credential-related source omitted]
  • Access to secretsline 146
    [Credential-related source omitted]
  • Access to secretsline 146
    [Credential-related source omitted]
  • Access to secretsline 147
    [Credential-related source omitted]
  • Access to secretsline 147
    [Credential-related source omitted]
  • Access to secretsline 147
    [Credential-related source omitted]
  • Access to secretsline 150
    [Credential-related source omitted]
  • Access to secretsline 150
    [Credential-related source omitted]
  • Access to secretsline 150
    [Credential-related source omitted]
  • Network accessline 152
    "grant_type": "refresh_token",     }).encode("utf-8")     req = urllib.request.Request(
  • Network accessline 152
    "grant_type": "refresh_token",     }).encode("utf-8")     req = urllib.request.Request(
  • Network accessline 152
    "grant_type": "refresh_token",     }).encode("utf-8")     req = urllib.request.Request(
  • Network accessline 153
    }).encode("utf-8")     req = urllib.request.Request(         OAUTH_TOKEN_URL,
  • Network accessline 153
    }).encode("utf-8")     req = urllib.request.Request(         OAUTH_TOKEN_URL,
  • Network accessline 153
    }).encode("utf-8")     req = urllib.request.Request(         OAUTH_TOKEN_URL,
  • Network accessline 154
    req = urllib.request.Request(
  • Network accessline 154
    req = urllib.request.Request(
  • Network accessline 154
    req = urllib.request.Request(
  • Network accessline 159
    )     try:         with urllib.request.urlopen(req, timeout=30) as resp:
  • Network accessline 159
    )     try:         with urllib.request.urlopen(req, timeout=30) as resp:
  • Network accessline 159
    )     try:         with urllib.request.urlopen(req, timeout=30) as resp:
  • Network accessline 160
    try:         with urllib.request.urlopen(req, timeout=30) as resp:             payload = json.loads(resp.read().decode("utf-8"))
  • Network accessline 160
    try:         with urllib.request.urlopen(req, timeout=30) as resp:             payload = json.loads(resp.read().decode("utf-8"))
  • Network accessline 160
    try:         with urllib.request.urlopen(req, timeout=30) as resp:             payload = json.loads(resp.read().decode("utf-8"))
  • Network accessline 161
    with urllib.request.urlopen(req, timeout=30) as resp:
  • Network accessline 161
    with urllib.request.urlopen(req, timeout=30) as resp:
  • Network accessline 161
    with urllib.request.urlopen(req, timeout=30) as resp:
  • Access to secretsline 163
    [Credential-related source omitted]
  • Access to secretsline 163
    [Credential-related source omitted]
  • Access to secretsline 163
    [Credential-related source omitted]
  • Network accessline 170
    def _run_query(api: str, customer_id: str, query: str, headers: dict[str, str]) -> dict:     url = f"{ADS_API_BASE}/{api}/customers/{customer_id}/googleAds:search"     req = urllib.request.Request(
  • Network accessline 170
    def _run_query(api: str, customer_id: str, query: str, headers: dict[str, str]) -> dict:     url = f"{ADS_API_BASE}/{api}/customers/{customer_id}/googleAds:search"     req = urllib.request.Request(
  • Network accessline 170
    def _run_query(api: str, customer_id: str, query: str, headers: dict[str, str]) -> dict:     url = f"{ADS_API_BASE}/{api}/customers/{customer_id}/googleAds:search"     req = urllib.request.Request(
  • Network accessline 171
    url = f"{ADS_API_BASE}/{api}/customers/{customer_id}/googleAds:search"     req = urllib.request.Request(         url,
  • Network accessline 171
    url = f"{ADS_API_BASE}/{api}/customers/{customer_id}/googleAds:search"     req = urllib.request.Request(         url,
  • Network accessline 171
    url = f"{ADS_API_BASE}/{api}/customers/{customer_id}/googleAds:search"     req = urllib.request.Request(         url,
  • Network accessline 172
    req = urllib.request.Request(
  • Network accessline 172
    req = urllib.request.Request(
  • Network accessline 172
    req = urllib.request.Request(
  • Network accessline 177
    )     try:         with urllib.request.urlopen(req, timeout=60) as resp:
  • Network accessline 177
    )     try:         with urllib.request.urlopen(req, timeout=60) as resp:
  • Network accessline 177
    )     try:         with urllib.request.urlopen(req, timeout=60) as resp:
  • Network accessline 178
    try:         with urllib.request.urlopen(req, timeout=60) as resp:             return json.loads(resp.read().decode("utf-8"))
  • Network accessline 178
    try:         with urllib.request.urlopen(req, timeout=60) as resp:             return json.loads(resp.read().decode("utf-8"))
  • Network accessline 178
    try:         with urllib.request.urlopen(req, timeout=60) as resp:             return json.loads(resp.read().decode("utf-8"))
  • Network accessline 179
    with urllib.request.urlopen(req, timeout=60) as resp:
  • Network accessline 179
    with urllib.request.urlopen(req, timeout=60) as resp:
  • Network accessline 179
    with urllib.request.urlopen(req, timeout=60) as resp:
  • Access to secretsline 206
    [Credential-related source omitted]
  • Access to secretsline 206
    [Credential-related source omitted]
  • Access to secretsline 206
    [Credential-related source omitted]
  • Access to secretsline 207
    [Credential-related source omitted]
  • Access to secretsline 207
    [Credential-related source omitted]
  • Access to secretsline 207
    [Credential-related source omitted]
  • Access to secretsline 213
    [Credential-related source omitted]
  • Access to secretsline 213
    [Credential-related source omitted]
  • Access to secretsline 213
    [Credential-related source omitted]
  • Access to secretsline 214
    [Credential-related source omitted]
  • Access to secretsline 214
    [Credential-related source omitted]
  • Access to secretsline 214
    [Credential-related source omitted]
  • Access to secretsline 215
    [Credential-related source omitted]
  • Access to secretsline 215
    [Credential-related source omitted]
  • Access to secretsline 215
    [Credential-related source omitted]
  • Access to secretsline 216
    [Credential-related source omitted]
  • Access to secretsline 216
    [Credential-related source omitted]
  • Access to secretsline 216
    [Credential-related source omitted]
  • Access to secretsline 217
    [Credential-related source omitted]
  • Access to secretsline 217
    [Credential-related source omitted]
  • Access to secretsline 217
    [Credential-related source omitted]
  • Access to secretsline 224
    [Credential-related source omitted]
  • Access to secretsline 224
    [Credential-related source omitted]
  • Access to secretsline 224
    [Credential-related source omitted]
  • Access to secretsline 225
    [Credential-related source omitted]
  • Access to secretsline 225
    [Credential-related source omitted]
  • Access to secretsline 225
    [Credential-related source omitted]
  • Access to secretsline 227
    [Credential-related source omitted]
  • Access to secretsline 227
    [Credential-related source omitted]
  • Access to secretsline 227
    [Credential-related source omitted]

scripts/api/meta_fetch.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    Executable file; content unavailable
  • Network accessline 12
    1. Open https://developers.facebook.com → My Apps → create a Business app.
  • Network accessline 12
    1. Open https://developers.facebook.com → My Apps → create a Business app.
  • Network accessline 12
    1. Open https://developers.facebook.com → My Apps → create a Business app.
  • Network accessline 15
    [Credential-related source omitted]
  • Network accessline 15
    [Credential-related source omitted]
  • Network accessline 15
    [Credential-related source omitted]
  • Network accessline 16
    [Credential-related source omitted]
  • Network accessline 16
    [Credential-related source omitted]
  • Network accessline 16
    [Credential-related source omitted]
  • Network accessline 17
    [Credential-related source omitted]
  • Network accessline 17
    [Credential-related source omitted]
  • Network accessline 17
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 17
    [Credential-related source omitted]
  • Access to secretsline 21
    [Credential-related source omitted]
  • Access to secretsline 21
    [Credential-related source omitted]
  • Access to secretsline 21
    [Credential-related source omitted]
  • Access to secretsline 28
    [Credential-related source omitted]
  • Access to secretsline 28
    [Credential-related source omitted]
  • Access to secretsline 28
    [Credential-related source omitted]
  • Network accessline 59
    DEFAULT_API_VERSION = "v22.0" GRAPH_BASE = "https://graph.facebook.com"
  • Network accessline 59
    DEFAULT_API_VERSION = "v22.0" GRAPH_BASE = "https://graph.facebook.com"
  • Network accessline 59
    DEFAULT_API_VERSION = "v22.0" GRAPH_BASE = "https://graph.facebook.com"
  • Network accessline 60
    GRAPH_BASE = "https://graph.facebook.com"
  • Network accessline 60
    GRAPH_BASE = "https://graph.facebook.com"
  • Network accessline 60
    GRAPH_BASE = "https://graph.facebook.com"
  • Network accessline 81
    [Credential-related source omitted]
  • Network accessline 81
    [Credential-related source omitted]
  • Network accessline 81
    [Credential-related source omitted]
  • Access to secretsline 81
    [Credential-related source omitted]
  • Access to secretsline 81
    [Credential-related source omitted]
  • Access to secretsline 81
    [Credential-related source omitted]
  • Network accessline 82
    url = f"{GRAPH_BASE}/{path.lstrip('/')}?{urllib.parse.urlencode(params)}"     req = urllib.request.Request(url, headers={"Accept": "application/json"})     try:
  • Network accessline 82
    url = f"{GRAPH_BASE}/{path.lstrip('/')}?{urllib.parse.urlencode(params)}"     req = urllib.request.Request(url, headers={"Accept": "application/json"})     try:
  • Network accessline 82
    url = f"{GRAPH_BASE}/{path.lstrip('/')}?{urllib.parse.urlencode(params)}"     req = urllib.request.Request(url, headers={"Accept": "application/json"})     try:
  • Network accessline 83
    req = urllib.request.Request(url, headers={"Accept": "application/json"})
  • Network accessline 83
    req = urllib.request.Request(url, headers={"Accept": "application/json"})
  • Network accessline 83
    req = urllib.request.Request(url, headers={"Accept": "application/json"})
  • Network accessline 84
    try:         with urllib.request.urlopen(req, timeout=30) as resp:             return json.loads(resp.read().decode("utf-8"))
  • Network accessline 84
    try:         with urllib.request.urlopen(req, timeout=30) as resp:             return json.loads(resp.read().decode("utf-8"))
  • Network accessline 84
    try:         with urllib.request.urlopen(req, timeout=30) as resp:             return json.loads(resp.read().decode("utf-8"))
  • Network accessline 85
    with urllib.request.urlopen(req, timeout=30) as resp:
  • Network accessline 85
    with urllib.request.urlopen(req, timeout=30) as resp:
  • Network accessline 85
    with urllib.request.urlopen(req, timeout=30) as resp:
  • Access to secretsline 107
    [Credential-related source omitted]
  • Access to secretsline 107
    [Credential-related source omitted]
  • Access to secretsline 107
    [Credential-related source omitted]
  • Network accessline 108
    req = urllib.request.Request(next_url, headers={"Accept": "application/json"})
  • Network accessline 108
    req = urllib.request.Request(next_url, headers={"Accept": "application/json"})
  • Network accessline 108
    req = urllib.request.Request(next_url, headers={"Accept": "application/json"})
  • Network accessline 109
    try:                 with urllib.request.urlopen(req, timeout=30) as r:                     resp = json.loads(r.read().decode("utf-8"))
  • Network accessline 109
    try:                 with urllib.request.urlopen(req, timeout=30) as r:                     resp = json.loads(r.read().decode("utf-8"))
  • Network accessline 109
    try:                 with urllib.request.urlopen(req, timeout=30) as r:                     resp = json.loads(r.read().decode("utf-8"))
  • Network accessline 110
    with urllib.request.urlopen(req, timeout=30) as r:
  • Network accessline 110
    with urllib.request.urlopen(req, timeout=30) as r:
  • Network accessline 110
    with urllib.request.urlopen(req, timeout=30) as r:
  • Access to secretsline 186
    [Credential-related source omitted]
  • Access to secretsline 186
    [Credential-related source omitted]
  • Access to secretsline 186
    [Credential-related source omitted]
  • Access to secretsline 188
    [Credential-related source omitted]
  • Access to secretsline 188
    [Credential-related source omitted]
  • Access to secretsline 188
    [Credential-related source omitted]
  • Access to secretsline 192
    [Credential-related source omitted]
  • Access to secretsline 192
    [Credential-related source omitted]
  • Access to secretsline 192
    [Credential-related source omitted]
  • Access to secretsline 193
    [Credential-related source omitted]
  • Access to secretsline 193
    [Credential-related source omitted]
  • Access to secretsline 193
    [Credential-related source omitted]

scripts/api/tiktok_fetch.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 12
    1. Apply for TikTok for Business API access at    https://business-api.tiktok.com/portal/docs?id=1738455508553729
  • Network accessline 12
    1. Apply for TikTok for Business API access at    https://business-api.tiktok.com/portal/docs?id=1738455508553729
  • Network accessline 12
    1. Apply for TikTok for Business API access at    https://business-api.tiktok.com/portal/docs?id=1738455508553729
  • Network accessline 13
    https://business-api.tiktok.com/portal/docs?id=1738455508553729
  • Network accessline 13
    https://business-api.tiktok.com/portal/docs?id=1738455508553729
  • Network accessline 13
    https://business-api.tiktok.com/portal/docs?id=1738455508553729
  • Network accessline 16
    **App Secret**. 3. Generate a long-lived access token via the OAuth flow:    https://business-api.tiktok.com/portal/docs?id=1739965703387137
  • Network accessline 16
    **App Secret**. 3. Generate a long-lived access token via the OAuth flow:    https://business-api.tiktok.com/portal/docs?id=1739965703387137
  • Network accessline 16
    **App Secret**. 3. Generate a long-lived access token via the OAuth flow:    https://business-api.tiktok.com/portal/docs?id=1739965703387137
  • Network accessline 17
    3. Generate a long-lived access token via the OAuth flow:    https://business-api.tiktok.com/portal/docs?id=1739965703387137    The OAuth response gives you ``access_token`` and ``advertiser_ids``
  • Network accessline 17
    3. Generate a long-lived access token via the OAuth flow:    https://business-api.tiktok.com/portal/docs?id=1739965703387137    The OAuth response gives you ``access_token`` and ``advertiser_ids``
  • Network accessline 17
    3. Generate a long-lived access token via the OAuth flow:    https://business-api.tiktok.com/portal/docs?id=1739965703387137    The OAuth response gives you ``access_token`` and ``advertiser_ids``
  • Network accessline 18
    https://business-api.tiktok.com/portal/docs?id=1739965703387137
  • Network accessline 18
    https://business-api.tiktok.com/portal/docs?id=1739965703387137
  • Network accessline 18
    https://business-api.tiktok.com/portal/docs?id=1739965703387137
  • Access to secretsline 19
    [Credential-related source omitted]
  • Access to secretsline 19
    [Credential-related source omitted]
  • Access to secretsline 19
    [Credential-related source omitted]
  • Access to secretsline 26
    [Credential-related source omitted]
  • Access to secretsline 26
    [Credential-related source omitted]
  • Access to secretsline 26
    [Credential-related source omitted]
  • Network accessline 44
    DEFAULT_API_VERSION = "v1.3" API_BASE = "https://business-api.tiktok.com/open_api"
  • Network accessline 44
    DEFAULT_API_VERSION = "v1.3" API_BASE = "https://business-api.tiktok.com/open_api"
  • Network accessline 44
    DEFAULT_API_VERSION = "v1.3" API_BASE = "https://business-api.tiktok.com/open_api"
  • Network accessline 45
    API_BASE = "https://business-api.tiktok.com/open_api"
  • Network accessline 45
    API_BASE = "https://business-api.tiktok.com/open_api"
  • Network accessline 45
    API_BASE = "https://business-api.tiktok.com/open_api"
  • Network accessline 54
    encoded[k] = json.dumps(v) if isinstance(v, (dict, list)) else str(v)         url += "?" + urllib.parse.urlencode(encoded)     req = urllib.request.Request(url, headers={
  • Network accessline 54
    encoded[k] = json.dumps(v) if isinstance(v, (dict, list)) else str(v)         url += "?" + urllib.parse.urlencode(encoded)     req = urllib.request.Request(url, headers={
  • Network accessline 54
    encoded[k] = json.dumps(v) if isinstance(v, (dict, list)) else str(v)         url += "?" + urllib.parse.urlencode(encoded)     req = urllib.request.Request(url, headers={
  • Network accessline 55
    [Credential-related source omitted]
  • Network accessline 55
    [Credential-related source omitted]
  • Network accessline 55
    [Credential-related source omitted]
  • Network accessline 56
    req = urllib.request.Request(url, headers={
  • Network accessline 56
    req = urllib.request.Request(url, headers={
  • Network accessline 56
    req = urllib.request.Request(url, headers={
  • Network accessline 59
    })     try:         with urllib.request.urlopen(req, timeout=30) as resp:
  • Network accessline 59
    })     try:         with urllib.request.urlopen(req, timeout=30) as resp:
  • Network accessline 59
    })     try:         with urllib.request.urlopen(req, timeout=30) as resp:
  • Network accessline 60
    try:         with urllib.request.urlopen(req, timeout=30) as resp:             payload = json.loads(resp.read().decode("utf-8"))
  • Network accessline 60
    try:         with urllib.request.urlopen(req, timeout=30) as resp:             payload = json.loads(resp.read().decode("utf-8"))
  • Network accessline 60
    try:         with urllib.request.urlopen(req, timeout=30) as resp:             payload = json.loads(resp.read().decode("utf-8"))
  • Network accessline 61
    with urllib.request.urlopen(req, timeout=30) as resp:
  • Network accessline 61
    with urllib.request.urlopen(req, timeout=30) as resp:
  • Network accessline 61
    with urllib.request.urlopen(req, timeout=30) as resp:
  • Access to secretsline 139
    [Credential-related source omitted]
  • Access to secretsline 139
    [Credential-related source omitted]
  • Access to secretsline 139
    [Credential-related source omitted]
  • Access to secretsline 141
    [Credential-related source omitted]
  • Access to secretsline 141
    [Credential-related source omitted]
  • Access to secretsline 141
    [Credential-related source omitted]
  • Access to secretsline 145
    [Credential-related source omitted]
  • Access to secretsline 145
    [Credential-related source omitted]
  • Access to secretsline 145
    [Credential-related source omitted]

scripts/capture_screenshot.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 8
    Usage:     python capture_screenshot.py https://example.com/landing
  • Network accessline 9
    python capture_screenshot.py https://example.com/landing
  • Network accessline 10
    python capture_screenshot.py https://example.com/landing --mobile
  • Network accessline 11
    python capture_screenshot.py https://example.com/landing --all

scripts/conciencia.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    Executable file; content unavailable
  • Access to secretsline 59
    [Credential-related source omitted]
  • Access to secretsline 59
    [Credential-related source omitted]
  • Access to secretsline 59
    [Credential-related source omitted]

scripts/generate_image.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Access to secretsline 28
    [Credential-related source omitted]
  • Access to secretsline 29
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 128
    [Credential-related source omitted]
  • Access to secretsline 129
    [Credential-related source omitted]
  • Access to secretsline 130
    [Credential-related source omitted]
  • Access to secretsline 142
    [Credential-related source omitted]
  • Access to secretsline 177
    [Credential-related source omitted]
  • Access to secretsline 205
    [Credential-related source omitted]
  • Access to secretsline 251
    [Credential-related source omitted]
  • Access to secretsline 263
    [Credential-related source omitted]
  • Possible obfuscationline 280
    return base64.b64decode(response.data[0].b64_json)
  • Access to secretsline 283
    [Credential-related source omitted]
  • Network accessline 291
    url = "https://api.stability.ai/v2beta/stable-image/generate/sd3"
  • Access to secretsline 293
    [Credential-related source omitted]
  • Network accessline 300
    "output_format": "png",     }     resp = requests.post(url, headers=headers, files={"none": ""}, data=data, timeout=120)
  • Network accessline 301
    }     resp = requests.post(url, headers=headers, files={"none": ""}, data=data, timeout=120)     if resp.status_code == 200:
  • Network accessline 302
    resp = requests.post(url, headers=headers, files={"none": ""}, data=data, timeout=120)
  • Access to secretsline 323
    [Credential-related source omitted]
  • Access to secretsline 336
    [Credential-related source omitted]
  • Network accessline 348
    if urlparse(url).scheme != "https":         raise RuntimeError(f"Replicate returned non-HTTPS URL: {url[:100]}")     resp = requests.get(url, timeout=120)
  • Network accessline 349
    raise RuntimeError(f"Replicate returned non-HTTPS URL: {url[:100]}")     resp = requests.get(url, timeout=120)     resp.raise_for_status()
  • Network accessline 350
    resp = requests.get(url, timeout=120)
  • Access to secretsline 360
    [Credential-related source omitted]
  • Access to secretsline 374
    [Credential-related source omitted]
  • Access to secretsline 385
    [Credential-related source omitted]
  • Access to secretsline 390
    [Credential-related source omitted]
  • Access to secretsline 393
    [Credential-related source omitted]
  • Access to secretsline 396
    [Credential-related source omitted]
  • Access to secretsline 399
    [Credential-related source omitted]
  • Access to secretsline 413
    [Credential-related source omitted]
  • Access to secretsline 457
    [Credential-related source omitted]
  • Access to secretsline 546
    [Credential-related source omitted]
  • Access to secretsline 547
    [Credential-related source omitted]
  • Access to secretsline 551
    [Credential-related source omitted]
  • Access to secretsline 563
    [Credential-related source omitted]

scripts/generate_report.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 623
    elements.append(Paragraph(         "Report generated by claude-ads v2.0  |  "         "https://github.com/Hainrixz/claude-ads",
  • Network accessline 624
    "Report generated by claude-ads v2.0  |  "         "https://github.com/Hainrixz/claude-ads",         styles["RFooter"],
  • Network accessline 625
    "https://github.com/Hainrixz/claude-ads",

scripts/lib/THIRD_PARTY_NOTICES.md

  • Network accessline 9
    The file `dates.py` (verbatim) is derived from [last30days-skill](https://github.com/mvanhorn/last30days-skill) by Matt Van Horn. `signals.py`, `dedupe.py`, and `story.py` were also vendored on 2026-04-28 but were never wired into the audit
  • Network accessline 11
    **Original repository:** https://github.com/mvanhorn/last30days-skill

scripts/profile.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    Executable file; content unavailable
  • Executable scriptline 1
    #!/usr/bin/env python3
  • Executable scriptline 1
    Executable file; content unavailable
  • Access to secretsline 47
    [Credential-related source omitted]
  • Access to secretsline 47
    [Credential-related source omitted]
  • Access to secretsline 47
    [Credential-related source omitted]
  • Access to secretsline 47
    [Credential-related source omitted]

scripts/zernio_publish.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 33
    For the typical solo user / single-brand case (Instagram + Facebook = 2 accounts), `/ads publish` is **$0/mo forever**. Agencies managing 3+ client social accounts hit the paid tiers. See https://zernio.com/pricing
  • Network accessline 34
    2 accounts), `/ads publish` is **$0/mo forever**. Agencies managing 3+ client social accounts hit the paid tiers. See https://zernio.com/pricing for the live calculator.
  • Network accessline 35
    client social accounts hit the paid tiers. See https://zernio.com/pricing
  • Network accessline 40
    1. Sign up at https://zernio.com and pick a plan.
  • Access to secretsline 46
    [Credential-related source omitted]
  • Network accessline 87
    ZERNIO_API_BASE = "https://api.zernio.com/v1"
  • Network accessline 152
    [Credential-related source omitted]
  • Network accessline 153
    url = f"{ZERNIO_API_BASE}/{path.lstrip('/')}"     req = urllib.request.Request(         url,
  • Network accessline 154
    req = urllib.request.Request(
  • Network accessline 163
    )     try:         with urllib.request.urlopen(req, timeout=30) as resp:
  • Network accessline 164
    try:         with urllib.request.urlopen(req, timeout=30) as resp:             return json.loads(resp.read().decode("utf-8"))
  • Network accessline 165
    with urllib.request.urlopen(req, timeout=30) as resp:
  • Access to secretsline 197
    [Credential-related source omitted]
  • Access to secretsline 199
    [Credential-related source omitted]

skills/ads-conciencia/SKILL.md

  • Broad permissionsline 1
    Bash, Read, Write, AskUserQuestion
  • Broad permissionsline 1
    Bash, Read, Write, AskUserQuestion

skills/ads-dna/SKILL.md

  • Network accessline 16
    |---------|-------------| | `/ads dna <url>` | Full brand extraction → `brand-profile.json` | | `/ads dna https://acme.com --quick` | Fast extraction (homepage only) |
  • Network accessline 16
    |---------|-------------| | `/ads dna <url>` | Full brand extraction → `brand-profile.json` | | `/ads dna https://acme.com --quick` | Fast extraction (homepage only) |
  • Network accessline 18
    | `/ads dna https://acme.com --quick` | Fast extraction (homepage only) |
  • Network accessline 18
    | `/ads dna https://acme.com --quick` | Fast extraction (homepage only) |
  • Network accessline 24
    If the user hasn't provided a URL, ask: > "What website URL should I analyze for brand DNA? (e.g. https://yoursite.com)"
  • Network accessline 24
    If the user hasn't provided a URL, ask: > "What website URL should I analyze for brand DNA? (e.g. https://yoursite.com)"
  • Network accessline 25
    > "What website URL should I analyze for brand DNA? (e.g. https://yoursite.com)"
  • Network accessline 25
    > "What website URL should I analyze for brand DNA? (e.g. https://yoursite.com)"
  • Network accessline 91
    **Typography:** - `@import url(https://fonts.googleapis.com/...)` → extract font names from URL path
  • Network accessline 91
    **Typography:** - `@import url(https://fonts.googleapis.com/...)` → extract font names from URL path
  • Network accessline 92
    - `@import url(https://fonts.googleapis.com/...)` → extract font names from URL path
  • Network accessline 92
    - `@import url(https://fonts.googleapis.com/...)` → extract font names from URL path

skills/ads-google/SKILL.md

  • Network accessline 100
    For automated data collection, connect the [Google Ads MCP server](https://github.com/googleads/google-ads-mcp):
  • Network accessline 100
    For automated data collection, connect the [Google Ads MCP server](https://github.com/googleads/google-ads-mcp):

skills/ads-meta/SKILL.md

  • Access to secretsline 28
    [Credential-related source omitted]
  • Access to secretsline 28
    [Credential-related source omitted]

skills/ads-next/SKILL.md

  • Broad permissionsline 1
    Bash, Read, Write, AskUserQuestion
  • Broad permissionsline 1
    Bash, Read, Write, AskUserQuestion

skills/ads-publish/SKILL.md

  • Broad permissionsline 1
    Bash, Read, Write, AskUserQuestion
  • Broad permissionsline 1
    Bash, Read, Write, AskUserQuestion
  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Network accessline 40
    1. Sign up at https://zernio.com — **first 2 accounts are always free, no credit card**. Confirm at https://zernio.com/pricing.
  • Network accessline 40
    1. Sign up at https://zernio.com — **first 2 accounts are always free, no credit card**. Confirm at https://zernio.com/pricing.
  • Access to secretsline 45
    [Credential-related source omitted]
  • Access to secretsline 45
    [Credential-related source omitted]

skills/ads-start/SKILL.md

  • Broad permissionsline 1
    Bash, Read, Write, AskUserQuestion
  • Broad permissionsline 1
    Bash, Read, Write, AskUserQuestion
  • Access to secretsline 244
    [Credential-related source omitted]
  • Access to secretsline 244
    [Credential-related source omitted]
  • Access to secretsline 245
    [Credential-related source omitted]
  • Access to secretsline 245
    [Credential-related source omitted]

skills/ads-update/SKILL.md

  • Broad permissionsline 1
    Bash, Read, Write, Edit, WebFetch, WebSearch, AskUserQuestion
  • Broad permissionsline 1
    Bash, Read, Write, Edit, WebFetch, WebSearch, AskUserQuestion
  • Network accessline 14
    **Powered by an adapted version of [last30days-skill](https://github.com/mvanhorn/last30days-skill) (MIT, by Matt Van Horn). See `scripts/lib/THIRD_PARTY_NOTICES.md` for full attribution.**
  • Network accessline 14
    **Powered by an adapted version of [last30days-skill](https://github.com/mvanhorn/last30days-skill) (MIT, by Matt Van Horn). See `scripts/lib/THIRD_PARTY_NOTICES.md` for full attribution.**
  • Network accessline 85
    curl -s "https://www.reddit.com/r/<sub>/new.json?limit=25" -H "User-Agent: claude-ads/2.0"
  • Network accessline 85
    curl -s "https://www.reddit.com/r/<sub>/new.json?limit=25" -H "User-Agent: claude-ads/2.0"
  • Network accessline 95
    curl -s "https://hn.algolia.com/api/v1/search_by_date?query=<keyword>&numericFilters=created_at_i>$(date -u -v-30d +%s)&hitsPerPage=10"
  • Network accessline 95
    curl -s "https://hn.algolia.com/api/v1/search_by_date?query=<keyword>&numericFilters=created_at_i>$(date -u -v-30d +%s)&hitsPerPage=10"

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 10 facts
  • Contacts developers.facebook.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/ads_sources.py:50High confidence
  • Contacts www.facebook.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/ads_sources.py:52High confidence
  • Contacts support.google.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/ads_sources.py:68High confidence
  • Contacts developers.google.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/ads_sources.py:69High confidence
  • Contacts blog.google, which SKILL.md, the README and the plugin manifest do not mentionscripts/ads_sources.py:70High confidence
  • Contacts business-api.tiktok.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/ads_sources.py:86High confidence
  • Contacts www.tiktok.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/ads_sources.py:87High confidence
  • Contacts graph.facebook.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/api/meta_fetch.py:60High confidence
  • Contacts business-api.tiktok.com, which SKILL.md, the README and the plugin manifest do not mentionscripts/api/tiktok_fetch.py:45High confidence
  • Contacts api.stability.ai, which SKILL.md, the README and the plugin manifest do not mentionscripts/generate_image.py:291High confidence
Signal confidence: 490 facts

and 440 more

Only the first 500 facts are listed.

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md ads/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md ads/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md ads/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md ads/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md ads/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.