Not in the top 1,000 by GitHub stars

Synero/meta-ads-analyzer

Native Agent skill for analyzing Meta (Facebook/Instagram) Ads campaigns in real-time. Connects directly to Meta Marketing API without MCP infrastructure. Features campaign data, performance metrics, and conversion tracking.

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

SKILL.md

Week of Nov 2, 2026 · +0 / −0 lines

Before Network or broad shell → After Network or broad shell

2a52280619c7 → 2a52280619c7

Compare on GitHub

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 2a52280619c7

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 2a52280619c7df32e298534993d0767277ec5539

10GitHub stars
0stars in 7 days
1skill in this repository
0commits in 30 days

Heat

0.3
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

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

Stars over time

Oct 25, 2026Oct 25, 202610

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

Individual skills in this repository

How it works

meta-ads-analyzer

When your agent uses it

Analyze Facebook/Instagram Ads campaigns via the Meta Marketing API from any AI agent or shell automation.

What it loads into context

Frontmatter

52 tokens

Always available to the agent

SKILL.md

850 tokens

When the skill is activated

Reference documents

3,381 tokens

Loaded on request

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

The playbook

  1. Setup
  2. API version
  3. Commands
  4. Intent mapping
  5. Output handling
  6. Metrics reference
  7. Troubleshooting
  8. Files

Scripts executed separately

  • meta-ads-cli.js
  • meta-ads.sh
  • package.json
  • setup.sh
  • test/cli.test.js
  • test/helpers/mock-meta-server.js
  • test/helpers/run-cli.js
  • test/unit.test.js

Files

  • .env.exampleasset231 bytes
  • .github/ISSUE_TEMPLATE/bug_report.mddoc326 bytes
  • .github/ISSUE_TEMPLATE/feature_request.mddoc279 bytes
  • .github/pull_request_template.mddoc299 bytes
  • .github/workflows/ci.ymlasset663 bytes
  • .gitignoreasset307 bytes
  • CHANGELOG.mddoc1,250 bytes
  • CONTRIBUTING.mddoc1,579 bytes
  • LICENSEasset1,085 bytes
  • README.mddoc8,322 bytes
  • ROADMAP.mddoc1,362 bytes
  • SECURITY.mddoc824 bytes
  • SKILL.mdcore3,548 bytes
  • SKILL.mdcore3,548 bytes
  • SKILL.mdcore3,548 bytes
  • SKILL.mdcore3,548 bytes
  • SKILL.mdcore3,548 bytes
  • SKILL.mdcore3,548 bytes
  • SKILL.mdcore3,548 bytes
  • SKILL.mdcore3,548 bytes
  • SKILL.mdcore3,548 bytes
  • SKILL.mdcore3,548 bytes
  • SKILL.mdcore3,548 bytes
  • meta-ads-cli.jsruns8,882 bytes
  • meta-ads.shruns1,242 bytes
  • package.jsonruns941 bytes
  • setup.shruns1,394 bytes
  • test/cli.test.jsruns7,757 bytes
  • test/fixtures/campaigns.jsonasset751 bytes
  • test/fixtures/error-oauth.jsonasset211 bytes
  • test/fixtures/insights.jsonasset695 bytes
  • test/helpers/mock-meta-server.jsruns1,566 bytes
  • test/helpers/run-cli.jsruns1,410 bytes
  • test/unit.test.jsruns3,467 bytes
Read SKILL.md

# Meta Ads Analyzer

Use this skill when a user asks an AI agent to inspect Facebook/Instagram Ads campaign performance, active campaigns, spend, CTR, CPC, CPM, leads, or messaging conversations.

The project is read-only. It does not create, edit, pause, or delete campaigns.

## Setup

```bash
git clone https://github.com/Synero/meta-ads-analyzer.git
cd meta-ads-analyzer

[Credential-related source omitted]
export META_ACCOUNT_ID="act_123456789"
View the complete source on GitHub

Skills included

  • meta-ads-analyzer

Repository facts

License
MIT
Created
Feb 27, 2026
Last pushed
Sep 16, 2026
Forks
0
Open issues
0
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 7, 2026

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

Show 10 notes
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 73 signals by file

.env.example

  • Access to secretsline 1
    [Credential-related source omitted]
  • Access to secretsline 2
    [Credential-related source omitted]
  • Network accessline 3
    META_ACCOUNT_ID=act_123456789 META_API_VERSION=v26.0 # META_API_BASE_URL=https://graph.facebook.com
  • Network accessline 4
    META_API_VERSION=v26.0 # META_API_BASE_URL=https://graph.facebook.com # META_API_TIMEOUT_MS=10000
  • Network accessline 5
    # META_API_BASE_URL=https://graph.facebook.com

.gitignore

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

CONTRIBUTING.md

  • Network accessline 8
    git clone https://github.com/Synero/meta-ads-analyzer.git

README.md

  • Network accessline 3
    ![CI](https://github.com/Synero/meta-ads-analyzer/actions/workflows/ci.yml/badge.svg)
  • Network accessline 4
    ![Node.js](https://img.shields.io/badge/Node.js-18+-339933?logo=node.js&logoColor=white)
  • Network accessline 5
    ![Meta Marketing API](https://img.shields.io/badge/Meta%20Marketing%20API-v26.0-0668E1)
  • Network accessline 6
    ![Tests](https://img.shields.io/badge/tests-offline%2C%20no%20credentials-success)
  • Network accessline 7
    ![License](https://img.shields.io/badge/license-MIT-green)
  • Network accessline 8
    ![Zero dependencies](https://img.shields.io/badge/dependencies-zero-brightgreen)
  • Network accessline 43
    git clone https://github.com/Synero/meta-ads-analyzer.git
  • Access to secretsline 51
    [Credential-related source omitted]
  • Access to secretsline 161
    [Credential-related source omitted]
  • Network accessline 168
    META_API_VERSION=v26.0                        # pin a Graph API version META_API_BASE_URL=https://graph.facebook.com  # override for proxies, local runs, and tests
  • Network accessline 169
    META_API_BASE_URL=https://graph.facebook.com  # override for proxies, local runs, and tests
  • Access to secretsline 182
    [Credential-related source omitted]
  • Network accessline 269
    Inspired by [mathiaschu/meta-ads-analyzer-claude](https://github.com/mathiaschu/meta-ads-analyzer-claude). This repository removes the MCP dependency and keeps a standalone, agent-agnostic CLI/skill interface.

SECURITY.md

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

SKILL.md

  • Network accessline 17
    git clone https://github.com/Synero/meta-ads-analyzer.git
  • Access to secretsline 20
    [Credential-related source omitted]
  • Access to secretsline 93
    [Credential-related source omitted]

meta-ads-cli.js

  • Executable scriptline 1
    #!/usr/bin/env node
  • Network accessline 12
    const DEFAULT_API_VERSION = 'v26.0'; const DEFAULT_BASE_URL = 'https://graph.facebook.com';
  • Network accessline 13
    const DEFAULT_BASE_URL = 'https://graph.facebook.com';
  • Access to secretsline 31
    [Credential-related source omitted]
  • Access to secretsline 65
    [Credential-related source omitted]
  • Access to secretsline 80
    [Credential-related source omitted]
  • Access to secretsline 93
    [Credential-related source omitted]

meta-ads.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Access to secretsline 46
    [Credential-related source omitted]

package.json

  • Executable scriptline 1
    Executable file
  • Network accessline 29
    "repository": {     "type": "git",     "url": "git+https://github.com/Synero/meta-ads-analyzer.git"
  • Network accessline 30
    "type": "git",     "url": "git+https://github.com/Synero/meta-ads-analyzer.git"   },
  • Network accessline 31
    "url": "git+https://github.com/Synero/meta-ads-analyzer.git"
  • Network accessline 32
    },   "bugs": {     "url": "https://github.com/Synero/meta-ads-analyzer/issues"
  • Network accessline 33
    "bugs": {     "url": "https://github.com/Synero/meta-ads-analyzer/issues"   },
  • Network accessline 34
    "url": "https://github.com/Synero/meta-ads-analyzer/issues"
  • Network accessline 35
    },   "homepage": "https://github.com/Synero/meta-ads-analyzer#readme" }
  • Network accessline 36
    "homepage": "https://github.com/Synero/meta-ads-analyzer#readme"

setup.sh

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Access to secretsline 26
    [Credential-related source omitted]
  • Access to secretsline 27
    [Credential-related source omitted]
  • Access to secretsline 28
    [Credential-related source omitted]
  • Access to secretsline 30
    [Credential-related source omitted]
  • Access to secretsline 52
    [Credential-related source omitted]
  • Access to secretsline 56
    [Credential-related source omitted]

test/cli.test.js

  • Executable scriptline 1
    Executable file
  • Access to secretsline 23
    [Credential-related source omitted]
  • Access to secretsline 47
    [Credential-related source omitted]
  • Access to secretsline 49
    [Credential-related source omitted]
  • Access to secretsline 67
    [Credential-related source omitted]
  • Access to secretsline 104
    [Credential-related source omitted]

test/helpers/mock-meta-server.js

  • Executable scriptline 1
    Executable file
  • Network accessline 20
    const server = http.createServer((req, res) => {     const url = new URL(req.url, 'http://127.0.0.1');
  • Network accessline 21
    const url = new URL(req.url, 'http://127.0.0.1');
  • Network accessline 25
    query: Object.fromEntries(url.searchParams.entries()),     };     requests.push(request);
  • Network accessline 27
    requests.push(request);
  • Network accessline 42
    const { port } = server.address();       resolve({         url: `http://127.0.0.1:${port}`,
  • Network accessline 43
    resolve({         url: `http://127.0.0.1:${port}`,         requests,
  • Network accessline 44
    url: `http://127.0.0.1:${port}`,         requests,         fixture: FIXTURES,

test/helpers/run-cli.js

  • Executable scriptline 1
    Executable file

test/unit.test.js

  • Executable scriptline 1
    Executable file
  • Access to secretsline 55
    [Credential-related source omitted]
  • Network accessline 68
    '/act_1/campaigns',     { limit: 100, date_preset: undefined, cursor: null },     { accessToken: 'tok', apiVersion: 'v26.0', baseUrl: 'https://graph.facebook.com' },
  • Network accessline 69
    { limit: 100, date_preset: undefined, cursor: null },     { accessToken: 'tok', apiVersion: 'v26.0', baseUrl: 'https://graph.facebook.com' },   );
  • Network accessline 70
    { accessToken: 'tok', apiVersion: 'v26.0', baseUrl: 'https://graph.facebook.com' },
  • Access to secretsline 74
    [Credential-related source omitted]
  • Network accessline 80
    test('buildUrl honours a custom base url for local and proxied runs', () => {   const url = cli.buildUrl('/me', { fields: 'id,name' }, { accessToken: 'tok', apiVersion: 'v23.0', baseUrl: 'http://127.0.0.1:8080/' });
  • Network accessline 81
    const url = cli.buildUrl('/me', { fields: 'id,name' }, { accessToken: 'tok', apiVersion: 'v23.0', baseUrl: 'http://127.0.0.1:8080/' });
  • Network accessline 82
    assert.equal(url.origin, 'http://127.0.0.1:8080');

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.

Signal confidence: 67 facts
  • Network access in code of documentationCONTRIBUTING.md:8Low confidence
  • Network access in prose of documentationREADME.md:3Low confidence
  • Network access in prose of documentationREADME.md:4Low confidence
  • Network access in prose of documentationREADME.md:5Low confidence
  • Network access in prose of documentationREADME.md:6Low confidence
  • Network access in prose of documentationREADME.md:7Low confidence
  • Network access in prose of documentationREADME.md:8Low confidence
  • Network access in code of documentationREADME.md:43Low confidence
  • Access to secrets in code of documentationREADME.md:51Low confidence
  • Access to secrets in code of documentationREADME.md:161Low confidence
  • Network access in code of documentationREADME.md:168Low confidence
  • Network access in code of documentationREADME.md:169Low confidence
  • Access to secrets in code of documentationREADME.md:182Low confidence
  • Network access in prose of documentationREADME.md:269Low confidence
  • Access to secrets in prose of documentationSECURITY.md:22Low confidence
  • Network access in code of the SKILL.mdSKILL.md:17High confidence
  • Access to secrets in code of the SKILL.mdSKILL.md:20High confidence
  • Access to secrets in prose of the SKILL.mdSKILL.md:93Low confidence
  • Executable script in code of a file that runsmeta-ads-cli.js:1High confidence
  • Network access in code of a file that runsmeta-ads-cli.js:12High confidence
  • Network access in code of a file that runsmeta-ads-cli.js:13High confidence
  • Access to secrets in code of a file that runsmeta-ads-cli.js:31High confidence
  • Access to secrets in code of a file that runsmeta-ads-cli.js:65High confidence
  • Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuemeta-ads-cli.js:80Low confidence
  • Access to secrets in code of a file that runsmeta-ads-cli.js:93High confidence
  • Executable script in code of a file that runsmeta-ads.sh:1High confidence
  • Access to secrets in code of a file that runsmeta-ads.sh:46High confidence
  • Executable script in code of a file that runspackage.json:1High confidence
  • Network access in code of a file that runspackage.json:29High confidence
  • Network access in code of a file that runspackage.json:30High confidence
  • Network access in code of a file that runspackage.json:31High confidence
  • Network access in code of a file that runspackage.json:32High confidence
  • Network access in code of a file that runspackage.json:33High confidence
  • Network access in code of a file that runspackage.json:34High confidence
  • Network access in code of a file that runspackage.json:35High confidence
  • Network access in code of a file that runspackage.json:36High confidence
  • Executable script in code of a file that runssetup.sh:1High confidence
  • Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuesetup.sh:26Low confidence
  • Access to secrets in code of a file that runssetup.sh:27High confidence
  • Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuesetup.sh:28Low confidence
  • Access to secrets in code of a file that runssetup.sh:30High confidence
  • Access to secrets in code of a file that runs: a variable, placeholder or call, not a stored valuesetup.sh:52Low confidence
  • Access to secrets in code of a file that runssetup.sh:56High confidence
  • Executable script in code of a testtest/cli.test.js:1Low confidence
  • Access to secrets in code of a testtest/cli.test.js:23Low confidence
  • Access to secrets in code of a test: a variable, placeholder or call, not a stored valuetest/cli.test.js:47Low confidence
  • Access to secrets in code of a test: a variable, placeholder or call, not a stored valuetest/cli.test.js:49Low confidence
  • Access to secrets in code of a test: a variable, placeholder or call, not a stored valuetest/cli.test.js:67Low confidence
  • Access to secrets in code of a test: a variable, placeholder or call, not a stored valuetest/cli.test.js:104Low confidence
  • Executable script in code of a testtest/helpers/mock-meta-server.js:1Low confidence

and 17 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md 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.