[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74169":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":16,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":19,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":16,"starSnapshotCount":16,"syncStatus":34,"lastSyncTime":35,"discoverSource":36},74169,"toprank","nowork-studio\u002Ftoprank","nowork-studio","Open-source Claude Code skills for SEO, GEO, Google Ads, Meta Ads","https:\u002F\u002Fnotfair.co\u002F",null,"Python",2618,326,14,1,0,59.54,"MIT License",false,"main",true,[23,24,25,26,27,28,29,30],"claude-code-plugin","claude-skills","geo","googleads","googleadsmcp","mcp","metaads","seo","2026-06-12 04:01:13","# Toprank\n\n[![Discord](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-Join%20the%20community-5865F2?logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.gg\u002FgVJCRczpps)\n\n**The official Google & Meta Ads + SEO plugin from [NotFair](https:\u002F\u002Fnotfair.co). Data-driven decisions, not dashboards.**\n\nToprank gives your AI agent direct access to Google Search Console, Google Ads, and Meta Ads (Facebook + Instagram). It analyzes your traffic, surfaces what's hurting your rankings, finds wasted ad spend, diagnoses creative fatigue and audience saturation, and tells you exactly what to fix. When you have access to the repo, it goes further: rewriting meta tags, fixing headings, adding structured data, and shipping the changes.\n\n### Why NotFair?\n\nToprank is the CLI side of NotFair — the skills that run inside Claude Code. [notfair.co](https:\u002F\u002Fnotfair.co) is the companion web app: sign in once, connect your Google Ads and Meta Ads accounts, and run audits through a browser UI. Both sides share the same engine, so an audit you run from the CLI uses the same tooling as the one on the web.\n\n> *\"Am I wasting money on ads right now?\"*\n> *\"Why did my traffic drop and how do I fix it?\"*\n> *\"How do I get more conversions without spending more?\"*\n\nFree, open-source. Install in 30 seconds.\n\n---\n\n## See It Work\n\n### Google Ads\n\n```\nYou:    \u002Ftoprank:google-ads-audit\n\nClaude: Connected to your Google Ads account (MyStore).\n\n        3 campaigns active. $2,400 spent this month.\n\n        Scorecard:\n        ┌──────────────────────┬──────────┬──────────────────────────────┐\n        │ Dimension            │ Status   │ Summary                      │\n        ├──────────────────────┼──────────┼──────────────────────────────┤\n        │ Conversion tracking  │ OK       │ 3 actions firing correctly   │\n        │ Keyword health       │ Critical │ 8 keywords burning cash      │\n        │ Search term quality  │ Warning  │ 12 irrelevant queries        │\n        │ Impression share     │ Warning  │ Losing 35% to rank           │\n        │ Spend efficiency     │ Critical │ $340\u002Fmo wasted               │\n        └──────────────────────┴──────────┴──────────────────────────────┘\n\n        Top 3 actions:\n        1. Pause 3 keywords ($210\u002Fmo, zero conversions)\n        2. Add 12 negative keywords ($130\u002Fmo wasted on irrelevant terms)\n        3. Increase bids 15% on 2 high-converting keywords losing IS\n\n        Business context saved — \u002Ftoprank:google-ads-copy and \u002Ftoprank:google-ads will use it.\n\nYou:    Do it all.\n\n        [paused 3 wasteful keywords — saved $210\u002Fmo]\n        [added 12 negative keywords — saved $130\u002Fmo]\n        [increased bids on 2 high-performers]\n\n        Done. All changes are reversible within 7 days.\n```\n\n**Weekly review** — ask any time, or set it up as a recurring Coworker task:\n\n```\nYou:    \u002Ftoprank:google-ads — \"review last week's changes\"\n\nClaude: 12 changes in the last 7 days. 9 matured enough to judge.\n\n        Wins (4):\n        - Paused \"cheap seo services\" → CTR +18%, conversions +2\n        - Added \"free\" as negative → wasted spend -$84\u002Fwk\n        - Bid +15% on \"b2b crm software\" → conversions +3, CPA flat\n        - New RSA on \"MyStore Brand\" ad group → CTR +24%\n\n        Losses (2):\n        - Bid +20% on \"enterprise saas\" → cost +$210, conversions flat\n        - Paused \"project management tool\" → lost 4 conversions\u002Fwk\n\n        Too new to judge (3) — check back in 5 days.\n\n        Note: 2 changes had other edits on the same campaign within\n        7 days, so their direction is low-confidence.\n```\n\n### SEO\n\n```\nYou:    \u002Ftoprank:seo-analysis\n\nClaude: Found your site at mystore.com — pulling Search Console data now.\n\n        [90 days of real traffic data loaded]\n        [pages crawled for technical issues]\n\n        Three things hurting you most:\n\n        Your homepage lives at two addresses. Google splits your ranking\n        power between them. Easy fix.\n\n        Two pages targeting the same search terms — they compete against\n        each other and neither wins.\n\n        One page gets 400 monthly impressions but ranks #52. The title\n        doesn't match what people actually search for.\n\n        Here's your 30-day plan, most impactful first.\n```\n\n---\n\n## Install\n\nToprank is a **Claude Code plugin**. One-time setup, automatic updates.\n\n### Claude Code (recommended)\n\nRun these two commands in Claude Code:\n\n```\n\u002Fplugin marketplace add nowork-studio\u002Ftoprank\n```\n\n```\n\u002Fplugin install toprank@nowork-studio\n```\n\nThat's it. All skills are now available as `\u002Ftoprank:*` commands.\n\n**Google Ads + Meta Ads (optional):** The first time Claude Code connects to either NotFair MCP server (`NotFair-GoogleAds` or `NotFair-MetaAds`), it opens a browser tab and asks you to sign in to [notfair.co](https:\u002F\u002Fnotfair.co) — authorize once per platform and the token is stored in your OS keychain. No API key to copy, no `mcp-remote` bridge to install.\n\n### Manual Install\n\n\u003Cdetails>\n\u003Csummary>Prefer to edit settings.json directly?\u003C\u002Fsummary>\n\nAdd the marketplace and enable the plugin in `~\u002F.claude\u002Fsettings.json`:\n\n```json\n{\n  \"extraKnownMarketplaces\": {\n    \"nowork-studio\": {\n      \"source\": {\n        \"source\": \"github\",\n        \"repo\": \"nowork-studio\u002Ftoprank\"\n      }\n    }\n  },\n  \"enabledPlugins\": {\n    \"toprank@nowork-studio\": true\n  }\n}\n```\n\n\u003C\u002Fdetails>\n\n\n---\n\n## 🤖 The Fully-Automated SEO Agent (OpenClaw \u002F Hermes)\n\nInstead of manually running single SEO skills, the future of Toprank is the **Fully-Automated SEO Agent**. \n\nBy leveraging the **OpenClaw adaptive layer** under [`openclaw\u002F`](openclaw\u002F), you can instruct OpenClaw or Hermes to automatically set up a persistent SEO agent for your project. This isn't just a set of tools—it's a background worker that configures cron jobs, continually monitors your site, runs SEO audits, and autonomously makes improvements over time.\n\nFeatures of the SEO Agent:\n- **Zero-Touch Setup:** Simply give the repo to OpenClaw or Hermes, and they will follow the instructions to spin up the agent for you.\n- **Always-On Automation:** Automatically schedules and runs SEO tasks via cron.\n- **Self-Improving:** Continuously monitors Search Console data, ships page optimizations, rewrites meta tags, and adds structured data without manual intervention.\n- **Multi-Site Portfolio:** Maintains portfolio state, a per-site work folder, OpenClaw wrapper skills, and structured JSON artifacts for reviews, plans, and feedback.\n\nStart building your agent here:\n\n- [`openclaw\u002FREADME.md`](openclaw\u002FREADME.md)\n- [`docs\u002Fopenclaw-adaptive-layer.md`](docs\u002Fopenclaw-adaptive-layer.md)\n\n---\n\n## Skills\n\n### Google Ads\n\n| Skill | What it does |\n|-------|-------------|\n| [`google-ads-audit`](google-ads\u002Faudit\u002F) | Account audit + business context setup. Run this first. Scores 7 health dimensions, identifies wasted spend, builds business profile. |\n| [`google-ads`](google-ads\u002Fmanage\u002F) | Campaign management. Read performance, optimize keywords, adjust bids\u002Fbudgets, add negatives, create campaigns. Ask for a **weekly review** and Claude scores every recent change (wins, losses, too-new-to-judge) — perfect for a Monday-morning Coworker task. |\n| [`google-ads-copy`](google-ads\u002Fcopy\u002F) | RSA copy generator + A\u002FB testing. Data-driven headlines and descriptions with character counts and pin positions. |\n| [`google-ads-landing`](google-ads\u002Flanding\u002F) | Landing page audit. Analyzes relevance between keywords, ads, and landing page content to improve Quality Score. |\n\n### Meta Ads (Facebook + Instagram)\n\n| Skill | What it does |\n|-------|-------------|\n| [`meta-ads-audit`](meta-ads\u002Faudit\u002F) | Account audit + business context setup. Run this first. Scores 7 health dimensions tuned for Meta (Pixel + CAPI Health, Attribution, Campaign Structure, Creative Health, Audience Strategy, Spend Efficiency, Scaling Readiness), persists creative inventory and persona data for downstream skills. |\n| [`meta-ads`](meta-ads\u002Fmanage\u002F) | Campaign management. ROAS analysis, frequency-first triage, creative fatigue diagnosis, Learning Phase \u002F Learning Limited triage, audience overlap, CBO\u002FABO\u002FAdvantage+ Shopping structure. Mutations route through dedicated tools (`pause*`, `enable*`, `updateAdSetBudget`, `updateCampaignBudget`, `renameCampaign`); operations outside that surface route the user to Meta Ads Manager rather than improvising. |\n\n### SEO\n\n| Skill | What it does |\n|-------|-------------|\n| [`seo-analysis`](seo\u002Fseo-analysis\u002F) | Full SEO audit with GSC data. Quick wins, traffic drops, technical issues, 30-day action plan. |\n| [`content-writer`](seo\u002Fcontent-writer\u002F) | SEO content creation following E-E-A-T guidelines. Blog posts, landing pages, content improvements. |\n| [`keyword-research`](seo\u002Fkeyword-research\u002F) | Keyword discovery, intent classification, topic clusters, prioritized content calendar. |\n| [`meta-tags-optimizer`](seo\u002Fmeta-tags-optimizer\u002F) | Title tags, meta descriptions, OG\u002FTwitter cards with A\u002FB variations and CTR estimates. |\n| [`schema-markup-generator`](seo\u002Fschema-markup-generator\u002F) | JSON-LD structured data for rich results. FAQ, HowTo, Article, Product, LocalBusiness. |\n| [`seo-page`](seo\u002Fseo-page\u002F) | Single-page deep analysis. Focused audit of a specific URL for content quality, structure, and keyword optimization. |\n| [`broken-link-checker`](seo\u002Fbroken-link-checker\u002F) | Scans websites to find and report broken internal and external links (404s\u002F5xx). |\n| [`geo-optimizer`](seo\u002Fgeo-optimizer\u002F) | Generative Engine Optimization (GEO) for AI search engines. Audits content with a 0–100 GEO Score, rewrites for AI citation, and produces per-engine strategy for ChatGPT, Claude, Perplexity, Gemini, and Google AI Overviews. |\n| [`setup-cms`](seo\u002Fsetup-cms\u002F) | Connect WordPress, Strapi, Contentful, or Ghost for automated SEO field audits. |\n\n### Cross-Model\n\n| Skill | What it does |\n|-------|-------------|\n| [`gemini`](gemini\u002F) | Second opinion from Google Gemini. Review (pass\u002Ffail gate), challenge (adversarial stress test), or consult (open Q&A). Especially strong on Google Ads and SEO decisions — Gemini has native Google ecosystem knowledge. |\n\nAll skills are namespaced: `\u002Ftoprank:google-ads`, `\u002Ftoprank:seo-analysis`, `\u002Ftoprank:gemini`, etc.\n\n---\n\n## How It Works\n\nToprank is a Claude Code plugin. Each skill is a `SKILL.md` file with supporting reference documents, scripts, and eval tests.\n\n```\ntoprank\u002F\n├── .claude-plugin\u002F\n│   ├── plugin.json              \u003C- plugin metadata (explicit skill paths)\n│   └── marketplace.json         \u003C- registry entry\n├── .mcp.json                    \u003C- NotFair MCP servers (Google Ads + Meta Ads, auto-configured)\n├── google-ads\u002F\n│   ├── manage\u002F                  \u003C- campaign management (skill: google-ads)\n│   ├── audit\u002F                   \u003C- account audit + business context\n│   ├── copy\u002F                    \u003C- RSA copy generator + A\u002FB testing\n│   └── landing\u002F                 \u003C- landing page scoring + diagnostic\n├── meta-ads\u002F\n│   ├── manage\u002F                  \u003C- campaign management (skill: meta-ads)\n│   ├── audit\u002F                   \u003C- account audit + Meta business context\n│   └── shared\u002F                  \u003C- Meta-specific preamble, math, policy registry\n├── seo\u002F\n│   ├── seo-analysis\u002F            \u003C- full SEO audit with GSC data\n│   ├── content-writer\u002F          \u003C- E-E-A-T content creation\n│   ├── keyword-research\u002F        \u003C- keyword discovery + topic clusters\n│   ├── meta-tags-optimizer\u002F     \u003C- title tags, meta descriptions, OG\n│   ├── schema-markup-generator\u002F \u003C- JSON-LD structured data\n│   ├── seo-page\u002F                \u003C- single-page deep analysis\n│   ├── broken-link-checker\u002F     \u003C- broken link scanner\n│   ├── geo-optimizer\u002F           \u003C- GEO for AI search engines\n│   └── setup-cms\u002F               \u003C- CMS connector\n├── gemini\u002F                      \u003C- cross-model review via Gemini CLI\n├── openclaw\u002F                    \u003C- OpenClaw adaptive layer (multi-site wrappers, artifacts, installers)\n├── toprank-upgrade-skill\u002F       \u003C- self-updater\n├── test\u002F                        \u003C- unit + LLM-judge eval tests\n└── VERSION\n```\n\n---\n\n## MCP Servers\n\nThe Google Ads and Meta Ads surfaces are available as standalone remote MCP servers — use either from any MCP client (Claude Desktop, Cursor, Inspector, your own agent) without installing the Toprank CLI plugin.\n\n### NotFair-GoogleAds\n\n- **Registry name:** `io.github.nowork-studio\u002Fnotfair` (verify: `curl \"https:\u002F\u002Fregistry.modelcontextprotocol.io\u002Fv0.1\u002Fservers?search=notfair\"`)\n- **Endpoint:** `https:\u002F\u002Fnotfair.co\u002Fapi\u002Fmcp\u002Fgoogle_ads` (streamable HTTP)\n- **Auth:** OAuth 2.1 with dynamic client registration — your MCP client opens a browser tab to sign in at [notfair.co](https:\u002F\u002Fnotfair.co) on first use; the token is stored locally (OS keychain in Claude Code)\n\nExposes ~100 Google Ads tools across reads (performance, search terms, impression share, keyword ideas, GAQL), writes (pause\u002Fenable, bid and budget updates, keyword and negative list management, campaign creation), and a `runScript` tool that fans out up to 20 GAQL queries in parallel for open-ended analytical questions.\n\n### NotFair-MetaAds\n\n- **Endpoint:** `https:\u002F\u002Fnotfair.co\u002Fapi\u002Fmcp\u002Fmeta_ads` (streamable HTTP)\n- **Auth:** Same OAuth 2.1 flow as NotFair-GoogleAds — sign in to [notfair.co](https:\u002F\u002Fnotfair.co) once per platform; tokens are independent\n\nExposes a focused set of Meta Marketing API tools: reads (campaign \u002F ad set \u002F ad listings, `getInsights` with breakdowns), writes (`pauseCampaign`, `pauseAdSet`, `pauseAd`, `enableCampaign`, `enableAdSet`, `enableAd`, `updateCampaignBudget`, `updateAdSetBudget`, `renameCampaign`), `suggestImprovement` for server-side heuristic recommendations, and a `runScript` sandbox with `ads.graph(path, params)`, `ads.graphParallel([calls])` (up to 20 Graph API calls in parallel), `ads.insights(...)`, and `ads.batch([requests])` for analytical fan-out.\n\nThe Meta server's mutation surface is intentionally narrow — there is no programmatic create-campaign, no audience editing, and no creative upload. The `\u002Fmeta-ads` skill is explicit about this and routes those operations to Meta Ads Manager.\n\n---\n\n## Connectors\n\nToprank skills reference external tools using the `~~category` placeholder pattern. This makes skills tool-agnostic — they work with any MCP server that provides the required capability.\n\n| Category | Placeholder | Default Server | Alternatives |\n|----------|-------------|---------------|--------------|\n| Google Ads | `~~google-ads` | [NotFair-GoogleAds MCP](https:\u002F\u002Fnotfair.co) (legacy `mcp__notfair__*` still detected during the rename window) | Google Ads MCP (`mcp__google_ads_mcp__*`) |\n| Meta Ads | `~~meta-ads` | [NotFair-MetaAds MCP](https:\u002F\u002Fnotfair.co) | Any Meta Marketing API MCP (`mcp__.*meta.*ads__*`) |\n| Search Console | `~~search-console` | gcloud CLI + Search Console API | Any GSC-compatible MCP server |\n| CMS | `~~cms` | Direct API (WordPress REST, Strapi, Contentful, Ghost) | Any CMS MCP server |\n\nSkills use conditional blocks based on available tools. If a connector is not available, the skill gracefully degrades — for example, `seo-analysis` can still run a technical crawl without GSC data.\n\n**Setup:**\n- **Google Ads:** See `google-ads\u002Fshared\u002Fpreamble.md`. The `.mcp.json` registers `https:\u002F\u002Fnotfair.co\u002Fapi\u002Fmcp\u002Fgoogle_ads` as a native HTTP MCP server; on first connection Claude Code opens a browser for OAuth sign-in to [notfair.co](https:\u002F\u002Fnotfair.co) and stores the token in your OS keychain — no environment variable, no bridge subprocess.\n- **Meta Ads:** See `meta-ads\u002Fshared\u002Fpreamble.md`. The `.mcp.json` registers `https:\u002F\u002Fnotfair.co\u002Fapi\u002Fmcp\u002Fmeta_ads` as a native HTTP MCP server; OAuth sign-in is independent from Google Ads (sign in once per platform). Skills resolve the ad account from a `metaAccountId` field in `.notfair.json` (alongside `accountId` for Google Ads — same config file, no double-prompting).\n- **Search Console:** See `seo\u002Fshared\u002Fpreamble.md`. Requires Google Cloud SDK, Search Console API enabled, and OAuth login.\n- **CMS:** Run `\u002Ftoprank:setup-cms` to configure WordPress, Strapi, Contentful, or Ghost.\n\n---\n\n## Contributing\n\nEach skill lives in its own folder under a category directory:\n\n```\nseo\u002F                      \u003C- SEO skills go here\n└── your-skill-name\u002F\n    ├── SKILL.md          \u003C- required\n    ├── scripts\u002F          \u003C- optional\n    └── references\u002F       \u003C- optional\n\ngoogle-ads\u002F               \u003C- Google Ads skills go here\n└── your-skill-name\u002F\n    └── SKILL.md          \u003C- required\n```\n\n**SKILL.md** needs a frontmatter header with `name` and `description`, then step-by-step instructions in the imperative.\n\n**Scripts:** Python 3.8+ stdlib only (or `requests`). Accept `--output` for file output. stderr for progress, stdout for data.\n\n**Pull requests:** One skill per PR. Test your skill before submitting. Bump `VERSION` and update `CHANGELOG.md`.\n\nQuestions? Open an issue.\n\n---\n\n## Star History\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F?repos=nowork-studio%2Ftoprank&type=date&legend=top-left\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=nowork-studio\u002Ftoprank&type=date&theme=dark&legend=top-left\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=nowork-studio\u002Ftoprank&type=date&legend=top-left\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=nowork-studio\u002Ftoprank&type=date&legend=top-left\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n---\n\n## License\n\n[MIT](LICENSE)\n","Toprank 是一个开源的 SEO、GEO 以及 Google 和 Meta 广告优化插件，旨在帮助用户通过数据驱动的方法提升广告效果和搜索引擎排名。它允许用户的 AI 代理直接访问 Google Search Console、Google Ads 和 Meta Ads，并提供流量分析、关键词健康检查、广告支出浪费识别等功能，同时还能自动修复网页元标签、标题等问题。此项目适用于需要精细化管理在线广告投放并希望提高自然搜索排名的企业或个人。基于 Python 开发，采用 MIT 许可证发布，确保了其免费且易于获取与使用。",2,"2026-05-12 11:06:49","high_star"]