Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Content Gate

Run this on a page you already published. It will probably fail.

Content Gate audits one page against the ten checks that decide whether AI-assisted content ranks, gets cited by answer engines, and survives Google's scaled-content policy. It runs inside Claude Code, needs no API key, has zero dependencies, and never sends your content anywhere.

It does not write pages. It tells you the truth about the ones you have.


Why most AI content fails, in one paragraph

Every AI writing tool sources from one of two places: the current search results, or the model's own memory. Both are public. So no AI tool can produce the first E in E-E-A-T, because first-hand Experience only exists inside the operator's head and their invoice history. The result is copy that is fluent, structurally correct, and completely interchangeable with every competitor's. Google's spam policy does not care whether a human or a machine wrote it. It targets publishing at scale without adding value, and interchangeable is the definition of no value added.

This tool finds that gap on a specific page and names it.


Quickstart

Prerequisites: Claude Code installed. That is it. Claude Code already ships Node, and these scripts have no dependencies.

Never used Claude Code? Read MANUAL.md. It has the full install, both Windows and Mac, with the errors you will actually hit.

git clone https://github.com/zainsaeeed/content-gate.git
cd content-gate
claude

Then, in Claude Code:

/gate https://yourclient.com/the-page-you-are-worried-about

Or against a local draft:

/gate examples/before.md

You can also run the deterministic half with no AI at all:

node bin/gate.mjs examples/before.md

What it actually does

Ten gates. Eight run as deterministic scripts, so they give the same answer every time. Two need judgment and run through Claude Code.

Gate Checks Auto-fail
G1 Experience proof Provable first-hand markers, every claim backed by one yes
G2 E-E-A-T presence Would a skeptical customer believe this business yes
G3 Duplication risk Near-duplicate siblings, the doorway pattern yes
G4 Passage extractability Can an answer engine lift a clean block no
G5 Keyword stuffing Exact-phrase density against a 2.5% ceiling yes
G6 Meta and headings Title, description, one H1, thin sections, em dash yes
G8 Readability Flesch-Kincaid band and long-sentence ratio no
G9 AI tells and voice 111 banned terms and 6 structural anti-patterns yes
G10 Source resolution Does every cited source resolve and say what you claim yes
G11 Schema and JSON-LD Valid markup, and self-serving review markup yes
G13 Conversion readiness Click-to-call, a real CTA, fabricated urgency yes
L17 AI-citation levers Statistics, sources, quotations, filler openers no

Full thresholds and where they come from: gates/README.md.


The demo, from the real tool

Two files ship in examples/. The same page, before and after a repair pass.

$ node bin/gate.mjs examples/before.md

  VERDICT: BLOCKED      score 23/100     5 of 9 gates failed

  FAIL  G1 Experience proof........... 0/5 marker types, 2 unproven claim(s)
  FAIL  G4 Passage extractability..... 3/6 sections extractable (50%, want 80%+)
  FAIL  G5 Keyword stuffing........... top phrase "water heater repair" at 11.76% (ceiling 2.5%)
  FAIL  G9 AI tells and voice......... 33 Tier-1 hit(s) across 30 distinct term(s)
  FAIL  G13 Conversion readiness...... no tel: link, CTA present
$ node bin/gate.mjs examples/after.md

  VERDICT: NEEDS WORK   score 83/100     0 of 9 gates failed

  PASS  G1 Experience proof........... 5/5 marker types, 0 unproven claim(s)
  PASS  G5 Keyword stuffing........... top phrase "round rock" at 2.15% (ceiling 2.5%)
  PASS  G8 Readability................ FK grade 6.8 (band 6 to 9)
  PASS  G11 Schema and JSON-LD........ 1 block(s), types: Plumber
  PASS  L17 AI-citation levers........ 12 figures (2.15/100w), 2 sources, 2 quotes

Open both files and compare them. The second one is not better written. It is better sourced. That is almost always the entire difference.


Commands

Command What it does
/gate <file or url> Full audit. Runs the scripts, then the two judgment gates, writes a report
/fix <file> Repairs what can be repaired without inventing a fact. Re-runs the gate and shows both scores
/explain <gate, code, or "phrase"> Teaches the rule, the threshold, and the actual fix

The scripts also run standalone:

node bin/gate.mjs page.md                          # audit one page
node bin/gate.mjs a.md b.md c.md                   # adds the duplication check
node bin/gate.mjs page.md --keyword "plumber dallas"
node bin/gate.mjs page.md --out report.md
node bin/gate.mjs page.md --json
node bin/gate.mjs --self-test

The one rule that matters

It will never invent a fact to make your page pass.

If a fix needs a license number, a real job, or a named neighborhood, it writes [FILL: what is needed and who has it] and hands the gap back to you. A draft with honest gaps is shippable work. A draft with invented specifics is a liability that can get your client's whole site demoted.

The gate cannot tell a real license number from a plausible fake one. You can. That responsibility does not transfer to the tool.


What this does not do

Deliberately. It inspects one page. It does not create anything.

It will not write a page from a keyword, research a topic, build a topical map, hold your client's brand facts, learn a house voice, plan internal links across a site, carry compliance overlays for medical or legal or financial verticals, publish to WordPress, or track anything over time.

If you run this on your client work and find that most pages fail G1, that is the honest result and it is not a problem this tool solves. Diagnosing one page and producing forty a month to a standard are different jobs. This is the first one.

The second one is SEO-CONTENT-OS, the paid system this gate was extracted from. It is not required to use this, and this is not a crippled version of it. Everything here works completely, forever, for free.


Security and privacy

  • Zero dependencies. No npm install. Nothing to audit but this repo.
  • Zero network calls in the scripts. The only Node built-ins imported anywhere are fs, path, and url. There is no http, no net, no fetch. Check it yourself: grep -rE "node:(http|net)|fetch\(" lib/ bin/ returns nothing.
  • Zero telemetry. Nothing phones home, because nothing can.
  • No API key, no account, no signup.
  • Your content never leaves your machine. input/ and reports/ are gitignored so a client page cannot be committed by accident.
  • 1,211 lines across 4 files. Small enough to read before you trust it.

Full detail and how to verify each claim: SECURITY.md.


Contributing

The blocklist at gates/ai-tell-blocklist.md is parsed at runtime, not hardcoded. Add a term, run node bin/gate.mjs --self-test, open a PR. New AI tells appear constantly and the list is never finished.

License

MIT. Use it on client work, fork it, sell services with it. See LICENSE.

Built by Xegents AI. Questions: zain@xegents.com

About

Audit any page against the 10 gates that decide whether AI-assisted content ranks, gets cited by answer engines, and survives Google's scaled-content policy. Runs in Claude Code. No API key, no dependencies, no network calls.

Topics

Resources

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages