# NotFair Plugin: SEO, GEO and Paid-Media Skills for Claude Code and Codex

> The NotFair Plugin packages 45 marketing skills as readable SKILL.md files that Claude Code, Cursor, Gemini CLI and Codex can load, backed by live GA4, Search Console and ad-platform workflows. Its value depends on how much you trust an agent with account access, and on whether the hosted MCP connection fits your review process.

**nowork-studio/notfair-plugin** — Open-source SEO, GEO, and marketing skills for AI agents.

- Repository: https://github.com/nowork-studio/notfair-plugin
- Website: https://notfair.co/
- Stars: 3,885 · Forks: 496
- Language: TypeScript
- License: MIT
- Published: 2026-09-10 · Updated: 2026-09-10 · Language: en
- Canonical page: https://hysenlabs.com/projects/nowork-studio-notfair-plugin

## What the NotFair Plugin actually solves for marketing teams

Generic prompts fail at marketing work because the same request gets routed through the same vague instruction. The README frames the problem directly: "Marketing work gets unreliable when every request goes through the same vague prompt." The NotFair Plugin answers that by splitting work into named procedures with defined jobs, required inputs, decision rules and output formats. Each one lives in the repository as a SKILL.md file rather than as logic buried in one agent runtime.

The audience is narrow and specific. You need an agent host that can load plugins or MCP servers (Claude Code, Cursor, Gemini CLI, Codex, Hermes, or anything following the Agent Plugins 1.0 specification), and you need real marketing data to point it at. The catalog covers SEO audits, GEO/AEO work aimed at citation in ChatGPT, Perplexity, Gemini, Claude and Google AI Overviews, paid media across Google, Meta, X and LinkedIn, and analytics against GA4 and Search Console. Someone without a Search Console property or an ad account will find most of the catalog inapplicable.

The repository states it ships 45 skills. The README lists roughly twenty by name in the SEO and GEO tables and describes the remaining areas in summary tables rather than naming every skill, so the catalog is wider than the visible list.

## How a skill is structured and where the data comes from

The architecture is deliberately flat. Skills are files. The repository root holds plugin.json, mcp.json, .mcp.json, gemini-extension.json, server.json and AGENTS.md, with per-host directories (.claude-plugin/, .codex-plugin/, .cursor-plugin/, gemini/) mapping the same canonical skills into each host's format. AGENTS.md maps marketing requests to the right skill, which matters for hosts that read that convention.

Live-data workflows do not scrape. They go through a hosted NotFair MCP connection, registered once per host, authenticated with a browser OAuth flow. The README describes the Cursor path as loading "the open-source marketing skills in this repository" and registering "one hosted NotFair MCP connection." Gemini CLI uses the "universal NotFair MCP" with an explicit `/mcp auth NotFair` step, and Codex finishes installation with `codex mcp login NotFair`. That single connection is the boundary between the open-source skills and whatever the hosted service does with your account data.

That split is the most consequential design decision in the project. The skills are MIT licensed and forkable; the data path is not in this repository. If your organisation needs the whole pipeline to run inside your own infrastructure, the README does not document a self-hosted MCP endpoint.

## Installing NotFair in Claude Code, Cursor and Gemini CLI

Claude Code installs from the marketplace with two commands. The README shows these as plugin slash commands rather than shell commands, so run them inside Claude Code.

```text
/plugin marketplace add nowork-studio/notfair-plugin
/plugin install notfair@nowork-studio
```

After installation you invoke a workflow by name, for example `/notfair:seo-analysis` or `/notfair:google-ads-audit`. The README also lists `/notfair:geo-optimizer`, `/notfair:meta-ads-creative`, `/notfair:paid-ads-x`, `/notfair:google-analytics` and `/notfair:search-console`. Plain language works too; the README gives "Audit my site and tell me why organic traffic fell" as an example prompt.

Cursor installs through its plugin marketplace, and the README documents a local fallback for testing before the marketplace listing is available. This clones the repository into Cursor's local plugin directory.

```bash
git clone https://github.com/nowork-studio/notfair-plugin.git ~/.cursor/plugins/local/notfair
```

Restart Cursor after installing or updating the local plugin, then complete the OAuth prompt when Cursor asks for it.

Gemini CLI installs the extension straight from GitHub, then authenticates the MCP connection separately.

```bash
gemini extensions install https://github.com/nowork-studio/notfair-plugin
```

Run `/mcp auth NotFair` in Gemini CLI when authentication is requested. Codex takes a single chained command that adds the marketplace, installs the plugin and opens the login flow.

```bash
codex plugin marketplace add nowork-studio/notfair-plugin --json && codex plugin add notfair@nowork-studio --json && codex mcp login NotFair
```

If the nowork-studio marketplace is already configured, the README gives an upgrade path instead: `codex plugin marketplace upgrade nowork-studio --json && codex plugin add notfair@nowork-studio --json && codex mcp login NotFair`. For any other host, the README points at INSTALL_FOR_AGENTS.md and offers a prompt that retrieves it from the raw GitHub URL.

The repository also carries requirements.txt pinning `google-auth>=2.0.0`, `google-auth-httplib2>=0.2.0` and `requests>=2.28.0`, alongside requirements-test.txt and conftest.py. That indicates Python scripts living beside the skills, most plausibly in analytics/ and google-ads/, but the README does not document a standalone Python entry point, so treat those as supporting code rather than a CLI.

## The read-only-before-mutation rule and where it can still go wrong

The README states that "read-only review comes before mutation, paid-media changes stay explicit, and unsupported capabilities are never implied." That ordering is a sensible constraint, and it is the main reason to trust a skill with an ad account at all. It also means the plugin is a poor fit for anyone hoping to hand over autonomous budget changes. Every mutation is meant to be reviewable first.

The limitation is that this is a stated policy, not an enforced one. A SKILL.md is prose plus references and scripts. Nothing in the repository layout prevents a skill from issuing a write call if the underlying MCP connection exposes one, and the README does not describe a permission model, a dry-run mode, or a rollback path for changes already applied. The README does not document rollback. If your approval process depends on a hard technical gate rather than agent compliance, the plugin does not provide one.

There is a second failure mode around scope. The README's own framing is that unsupported capabilities are never implied, which is a useful promise but also a warning: the catalog is wide, and it is easy to assume a named skill covers a task it does not. The visible skill list names seo-analysis, seo-page, content-writer, content-planner, keyword-research, meta-tags-optimizer and schema-markup-generator, and the table truncates mid-entry. Verify the specific skill before you build a process around it.

## Where NotFair Plugin is the wrong tool

If you want a self-contained analytics tool with no external authentication, this is not it. The live-data workflows depend on a hosted NotFair MCP connection and a browser OAuth step on every host. The skills are open source and MIT licensed; the connection is not part of the repository, and the README does not describe a self-hosted alternative.

If you do not use an agent host that speaks plugins or MCP, there is nothing to install. The repository targets Claude Code, Cursor, Kiro Powers, Gemini CLI, Codex and Hermes, plus anything following the Agent Plugins 1.0 specification. A team running a plain chat interface will get no benefit from a SKILL.md file.

The third case is process maturity. Skills are procedures, and procedures assume inputs. A team with no Search Console access, no GA4 property and no ad accounts will spend more time wiring data than running audits. The plugin does not create the data it reasons over.

## NotFair Plugin against a single general-purpose marketing agent

The obvious alternative is one large marketing agent with a broad system prompt, or a set of hand-written prompts kept in a shared document. The difference is granularity. A single agent prompt has one instruction set and one failure mode; when it produces a weak keyword cluster, you cannot tell which part of the prompt caused it. The NotFair Plugin splits the same territory into separate skills, each with its own inputs, decision rules and output format, which makes a bad result attributable to one file you can edit.

That split has a cost. Forty-five skills mean forty-five things to keep current, and the repository carries a CHANGELOG.md and a VERSION file, so changes are versioned rather than silent. A single prompt is cheaper to maintain and cheaper to reason about, and for a team running one recurring task, one well-written prompt may genuinely be the better choice. The plugin pays off when you need several distinct workflows and want each one reviewable on its own terms.

The second alternative worth naming is a bespoke internal skill set. Because everything here is MIT licensed and plain files, the README explicitly invites teams to "review and adapt the workflows to their own standards." Forking is a supported path, not a workaround.

## Licence, maintenance and what an upgrade costs

The project is MIT licensed, which permits commercial use, modification and redistribution provided the licence and copyright notice are preserved. This is not legal advice; check the LICENSE file and your own counsel if you plan to redistribute a fork. The practical implication is that you can adapt a SKILL.md to your own standards and ship it internally without a licensing conversation.

The repository is not archived, and the last push was on 2026-09-09, so the codebase is recent. There are no retrieved releases, which means version tracking runs through the VERSION file and CHANGELOG.md rather than GitHub release pages. Upgrades differ by host: Claude Code and Cursor marketplaces handle their own updates, Codex has the explicit `codex plugin marketplace upgrade nowork-studio --json` path, and the local Cursor checkout is updated with a git pull in `~/.cursor/plugins/local/notfair` followed by a restart.

The real upgrade cost is not the code. If you fork a skill and the upstream version changes, you own the merge. Teams that fork several skills should expect to track CHANGELOG.md themselves, because the README does not describe a supported fork-and-sync workflow.

## Conclusion

Adopt it if you already run an agent host that supports plugins or MCP and you want marketing procedures that are readable before they are executed. Do not adopt it if you need a self-contained tool with no hosted authentication step, or if you cannot review what a skill does before it touches a live ad account. Before installing, open the SKILL.md for the one workflow you care about most, confirm the analytics/ and google-ads/ directories contain the scripts it references, and check INSTALL_FOR_AGENTS.md for your host.

## FAQ

### Which AI agents can install the NotFair Plugin?

The README documents Claude Code, Cursor, Kiro Powers, Gemini CLI, Codex and Hermes, plus anything following the Agent Plugins 1.0 specification. Each host has its own install path, and most finish with an OAuth step for the hosted NotFair MCP connection.

### Does the NotFair Plugin need a hosted account to work?

The live-data workflows do. Cursor, Gemini CLI and Codex all register one hosted NotFair MCP connection and complete a browser OAuth flow, and the README does not describe a self-hosted alternative for that connection.

### How many skills does the NotFair Plugin ship?

The README states the plugin currently ships 45 skills across SEO, GEO, paid media, advertising platforms, analytics and cross-model review. The per-area tables name only a subset of them.

## Sources

- [Issues](https://github.com/nowork-studio/notfair-plugin/issues)
- [License: MIT](https://github.com/nowork-studio/notfair-plugin/blob/main/LICENSE)
- [nowork-studio/notfair-plugin on GitHub](https://github.com/nowork-studio/notfair-plugin)
- [Project website](https://notfair.co/)
- [README](https://github.com/nowork-studio/notfair-plugin/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/nowork-studio-notfair-plugin
