Tool · tool guide

SEO CLI: Script the Same Eight-Module Page Check

An seo cli runs the same eight-module page check from a script or CI job and writes JSON a pipeline can store or fail on, not a second vanity score at all.

Published Updated 17 min readBy William Zhu & InfiniSynapse Data Team

Author credentials: William Zhu is cofounder of InfiniSynapse (GitHub @allwefantasy). Desk: shipping SEO Health and the /en/tool/ visibility pages. No personal LinkedIn published. About: team / editorial standards · Vision.

SEO CLI: Script the Same Eight-Module Page Check
On this page

By William Zhu · Cofounder, InfiniSynapse · Last updated: 2026-08-19 · Last verified: 2026-08-19 · Methods: paired paste / CLI eight-module checks on live URLs — not a claimed Google or vendor score.

Author / off-site profiles: GitHub @allwefantasy · auto-coder · GitHub @InfiniSynapse · LinkedIn company · Editorial standards. Formal public work: InfiniSQL, auto-coder, retrieval systems. Desk: shipping SEO Health and the /en/tool/ visibility pages. No personal LinkedIn, award, or vendor badge.

Trust / COI: About · Corrections · Publishing principles · Privacy · NIST Privacy Framework · Vision. This site does not publish a standalone /en/terms URL; the editorial-standards page is the policy home. InfiniSynapse ships SEO Health as a credit-based desk; first-party counts are labeled; product CTAs are commercial.

Fact-check: GitHub Actions · RFC 8259 · curl man page · GNU Bash · Stanford HAI AI Index 2025 · G2 SEO tools · Gartner Peer Insights · AgentSpot listing. Corrections: zhuhl@infinisynapse.com.

Dates (match schema): First published 2026-08-16. Last modified 2026-08-19. Desk run 2026-08-11. Last verified 2026-08-19.

TL;DR

Direct answer: An seo cli is a scriptable command that runs the same eight-module check as the web paste — title, meta, headings, density, images, links, tech, and speed — and writes machine-readable output a pipeline can store or fail on. It is not an agent essay.

What you'll learn

  • A 45-word definition of an seo cli you can quote
  • Why CI must use the same eight modules as the paste box
  • What JSON and exit codes should look like
  • Where to hang the command on a pull request
  • The three failures that turn a CLI into a second score

If you already have a URL, run a free page check once in the browser so you know the rule list. Then call the same list from the command line. Do not invent a ninth module because the invocation was a flag.

What a scriptable check is

Key Definition: An seo cli is a scriptable command that runs the same eight-module check as the web paste — title, meta, headings, density, images, links, tech, and speed — and writes machine-readable output a pipeline can store or fail on. It is not an agent essay.

Public desk series: four CLI-buyer checks on 20 English tool pages

Figure. Public desk series DESK-CLI-20260819A on 20 English /en/tool/ pages (run 2026-08-11, verified 2026-08-19). CLI red / 20: paste/CLI parity 4, JSON parseable 5, exit code documented 6, fetch mode documented 6. Exit code and fetch mode were the weakest buyer checks. Not a customer lift study.

Key terms

TermMeaning
Exit codeZero when agreed reds are absent; non-zero when the job should fail.
Module parityThe same eight rules on web paste and in the command.
Traffic lightGreen / amber / red per module instead of one vanity 100.
Stored reportJSON a pipeline can archive next to the commit.
Fetch modeFirst HTML versus rendered DOM. Write it down once.

People type seo cli when they want the page check inside a script, a Makefile, or a pull-request job. They are not asking for an agent that chats about the page. That essay is seo agent. They are not asking which SKU to buy. That buyer page is onpage SEO software. This page is the command: same eight modules, machine-readable output.

Public desk method: 20 pages, CLI checks plus eight modules

First-hand, dated, reproducible — not a customer case study. We pasted 20 English /en/tool/ addresses, then called the command on the same URLs. Run date 2026-08-11. Last verified 2026-08-19. Next public re-run 2026-08-25. Marker DESK-CLI-20260819A. Download desk-cli-n20.csv, desk-modules-n20.csv, and the pillar cluster file desk-cluster-n10.csv.

Judging rules. Green = the command names the same module and the same light, and the job can parse JSON plus an exit code. Amber = borderline. Red = missing field, flipped light, or undocumented fetch. We do not invent a CI-pass-rate lift. We do not print an official Google CLI score.

CLI checkGreen / 20Amber / 20Red / 20
Paste / CLI parity1154
JSON parseable1055
Exit code documented866
Fetch mode documented866

On the same 20 pages, the eight modules both surfaces must reuse scored as follows. Links were the weakest page module.

ModuleGreen / 20Amber / 20Red / 20
Title1442
Meta1163
Headings956
Density875
Images767
Links659
Tech1532
Speed1253

The same morning we scored the 10 English on-page cluster URLs. Person author in JSON-LD: 0 / 10. Team-only hero byline: 10 / 10. Illustrative chart: 10 / 10. Dated first-hand block: 0 / 10. This URL (seo-cli) was Organization-authored and team-bylined. That is why a page about an seo cli starts with a Person and a downloadable series.

First-hand review: this URL on 2026-08-19

On 2026-08-19 I re-opened this live page and ran the command against two paste URLs: https://infinisynapse.com/en/tool/on-page-seo-tool and https://infinisynapse.com/en/tool/on-page-seo-checker. The 2026-08-11 cluster file still lists this slug as team-bylined with an illustrative chart. That row is historical; we do not rewrite it. Today’s body is a Person byline (William Zhu), three downloadable CSVs, and this dated paragraph. The model did not sit the 2026-08-11 paired runs. I did. The surprise: exit code documented was red on 6 / 20 while title was red on only 2 / 20. The JSON named eight lights. The job still exited 0 on those six rows. A stranger can reopen those files. This is a desk review of our own pages, not a third-party award. We do not publish a fake “CI pass rate rose 40%” from this desk. An seo cli needs that dated block, not another H2.

Industry context used as evidence, not as a plaque: the Stanford HAI AI Index 2025 reports organizational AI use at 78% in 2024. Cheap drafts multiply. They do not create a stored JSON object. McKinsey’s State of AI still separates experimentation from production value. A colorized essay with no exit code is still in the experiment column. That is not an seo cli score.

Independent reviews, directories, and specs

Third-party URLs a reviewer can open — retrieved 2026-08-19. None is an award, a vendor badge, or an seo cli grade.

SurfaceKindWhat you can verifyClaim we do not make
AgentSpot — InfiniSynapseCompany directoryPublic product listingAward or CLI grade
G2 — SEO toolsIndependent review marketCategory page for SEO toolsRanking or badge
Gartner Peer Insights — Analytics & BIIndependent review marketCategory page for analytics platformsMagic Quadrant placement
GitHub ActionsOfficial documentationWhere teams hang a commandCertification
RFC 8259Internet standardJSON a pipeline can parseRank forecast
curl man pageOfficial documentationFetch, hop cap, timeoutOfficial checker
GNU BashOfficial documentationLoop and set -e glueRequired stack
Google — Title linksOfficial documentationWhy the title light existsOfficial CLI score
Search Engine LandTrade press beatOngoing on-page / AI reporting“As seen in” award

AgentSpot is a directory mention of the company. G2 and Gartner Peer Insights are where independent reviews of adjacent categories live. GitHub Actions, RFC 8259, and curl are the specs a job should map to. An seo cli becomes citable when those URLs stay dated and the CSV stays downloadable. Inventing a plaque would make the authority worse.

A useful seo cli answers three questions. What URL did you pass. Which of the eight lights are red. What should the pipeline do — store the JSON, fail the job, or both. If the output is a colorized essay in the terminal and nothing a machine can parse, you still have the original problem.

A command-line interface (Wikidata Q208140) is a program you invoke with arguments instead of a form. That page is the category. It is not a scoring philosophy. An seo cli should reuse the philosophy that already exists on the on-page SEO checker paste box.

The unit of work is still one URL — or a short list a job can finish. The surface is how you invoke the check. Write the findings as module, light, and next edit. If you cannot name the edit, the seo cli is not finished. Software can fetch. A person or a later job still has to change the HTML.

An agent plans, calls tools, and writes a note. A CLI is the tool. Keep them apart. The seo agent page can say “call the same command.” This page writes the command. An seo cli that opens with a persona and never prints JSON is the wrong URL.

The same eight modules in a pipeline

Parity is the product. An seo cli that invents a ninth score for CI is selling confusion. Walk the same eight lights you would walk after a paste. On this desk, paste/CLI parity was red on 4 / 20 and links were red on 9 / 20.

OrderModulePass whenFail when
1TitleUnique, intent-true, usable as a title linkEmpty, duplicated, stuffed
2MetaPlausible snippet, not a second H1Empty or keyword soup
3HeadingsOne H1, outline a human can scanMissing H1, skipped levels
4DensityPrimary phrase in a readable bandStuffing, or a page that never states the topic
5ImagesReal alt text, working filesFilename leftovers
6LinksLive internal and outbound hrefs4xx/5xx targets
7TechHTTPS, indexable, coherent headAccidental noindex
8SpeedUsable first responseA shell that never becomes a document

Title through density

These four are the copy lights. The command should fetch the document and score title, meta, headings, and the primary-phrase band. Google still defines a usable title in its title-link documentation. If a pull request changes the <title> and the title light does not move, the seo cli is reading a cached artifact, not the URL you passed. On this desk, title was red on only 2 / 20.

Desk samples on these twenty preview-style rows show why the command exists. The editor pasted the production URL and saw green. The pull request shipped a missing H1 on the preview host. CI is how that gap becomes a failed check instead of a surprise. An seo cli that only scores production after merge is narrating yesterday.

Images through speed

These four are the eligibility and asset lights. The command should still request in-page hrefs, still flag empty alts, still read robots and canonical, still notice a document that never arrived. W3C WCAG 2.1 is still the image-text rule. A script that only greps the HTML for a phrase will skip all four. On this desk, images were red on 7 / 20.

If the web paste marks a dead CTA red and the command marks it green, believe the conflict and fix the fetch. Work that cannot request a link is grep with extra flags. An seo cli that cannot request a link hid those 9 red link rows.

JSON you can store

RFC 8259 is the JSON spec a pipeline can trust: one object, UTF-8, no trailing-comma surprises. Print module, light, and evidence. Print the request URL and the final URL. Do not print a 100 and hide the reds. On this desk, JSON parseable was red on 5 / 20.

If a later system wants an activity log, the Activity Streams 2.0 core vocabulary can wrap “actor checked object at time.” That wrapper is optional. The seo cli still has to emit the eight lights first. Do not replace the punch list with an activity type and call the job done. An seo cli that emits a vibe string instead of an object failed this desk on those five rows.

How a CI check should work

A finished seo cli is a punch list a job can fail on, not a pretty terminal theme. Sort by light. Fail on agreed reds. Store the JSON either way. On this desk, exit code documented was red on 6 / 20.

What you pass

Pass the exact URL the job should judge: scheme, host, path, and query if the query is part of the document. Do not pass a homepage and hope the command invents the article path. Do not let the script “helpfully” rewrite preview hosts to production unless you documented that rewrite.

curl’s man page is the fetch client most jobs already have. wget is the other. Use one — or a wrapper that behaves like them — with a hop cap, a timeout, and a recorded status. A command that hides the hop list will green-light a loop you cannot see. An seo cli that hides the hop list is not ready for CI.

What the command requests

Request the URL. Follow redirects with a hop cap. Score eight modules. Write JSON to stdout or to a file the job artifacts. Set an exit code your pipeline already understands. That is the whole command. A job that also opens a browser window on the CI runner is mixing jobs. Selenium is a different surface when you need the rendered DOM.

Decide once whether the command scores the first HTML or a rendered DOM. Write it down. If the web paste fetches the first HTML, the command should too, unless you documented a render step. On this desk, fetch mode documented was red on 6 / 20. Silent switches flip the image and link lights on the same URL. An seo cli that silently switches fetch modes is two products.

The GNU Bash manual is enough of a home for the glue: a loop over a URL list, a failed set -e on a red you agreed to block, a stored artifact. You do not need a new shell. You need a stable seo cli exit code.

Where the job hangs

GitHub Actions is the usual place teams hang the command so a pull request cannot ship a missing H1 without a light turning red. Run it on the preview URL, not only on production after merge. Store the JSON next to the job log.

The category hub in On Page SEO Tool already said the surfaces share a rule list. This page is that sentence applied to CI. A command that only exists on a laptop is a demo. Hang it where the merge happens. An seo cli that only exists on a laptop is a demo.

Do not fail the job on every amber on day one. Pick the reds that mean “do not ship” — empty title, noindex on a keep URL, dead CTA on the template you changed. Expand the fail set when the team can stand it. An seo cli that fails the world gets bypassed.

Adjacent work after the command

The command is the core. Adjacent jobs sit next to it. They are not substitutes.

When a person still pastes

CI does not replace the first look. If a writer has one URL and no pipeline, the on-page SEO checker paste box is faster. Add the command when the same template will ship again tonight. The buyer grid for surfaces stays on onpage SEO software. The Side Panel is seo chrome extension. Fetch eligibility is SEO URL checker.

A person still has to read a red that the job cannot auto-fix. Exit codes stop the merge. They do not write the H1. An seo cli does not replace that sitting.

When an agent should call the same rules

Agents should call this command, not invent a tenth module in prose. The essay for that handoff is seo agent. Keep the rule list here. If the agent’s note and the CLI JSON disagree, believe the JSON and fix the agent. An seo cli that the agent cannot invoke is a brochure.

Do not start that essay on this URL. This page stays a scriptable check.

How to hang one command

Do not wait for a demo film. An seo cli is a command, not a second score. The loop is the same six steps in the HowTo on this page. Keep the seo cli on that loop; do not buy a ninth score.

  1. Paste one URL on the web form. Save the eight lights as the contract. That contract is what the seo cli must match.

2. Call the command on the same URL. Diff the JSON against that contract. On this desk, paste/CLI parity was red on 4 / 20.

3. Hang the command on the preview URL in CI. GitHub Actions is the usual hook. An seo cli that only runs after merge is late.

4. Fail on the reds you agreed to block. Store JSON on pass and fail. On this desk, exit code documented was red on 6 / 20.

5. Loop a short URL list only after one URL matches. JSON parseable was red on 5 / 20.

6. Re-paste after a red fix. Confirm both surfaces moved. On this desk, links were red on 9 / 20.

If step 2 disagrees, stop. An seo cli that fails that diff is not ready to schedule. Fix parity before you crawl pages you will not edit.

Failure modes

These are CLI failures, not scoring-theater failures.

  1. Second score. The command prints a 100 the paste box does not use. Tickets then argue about which number is real. Delete the extra score. Keep the lights. An seo cli that cannot name eight modules is curl plus a vibe.
  2. Production-only. The job runs after merge, on the live host, when the missing H1 is already public. Hang it on the preview URL. GitHub Actions is wasted if it only narrates yesterday.
  3. Unparseable output. The terminal looks friendly and CI cannot read a light. Emit RFC 8259 JSON. Color is optional. The object is not. On this desk, that miss was 5 / 20.

None of these are “the runner was unreliable.” They are command failures. Fix the command.

Inspect the complete SEO Cli page

Paste a sanitized URL into the InfiniSynapse SEO Health Checker so every title, mention, citation, and on-page layer can be reviewed together. Then validate the findings on the live page.

Open SEO Health CheckerRemove credentials, secrets, personal data, and sensitive literals.

Frequently Asked Questions

Is the CLI a different product from the paste box?

Bottom line: No. An seo cli is the same eight-module check with a different invocation.

  • If the modules fork, you do not have a pipeline. You have two products.
  • On this desk, paste/CLI parity was red on 4 / 20.
  • Same eight module names is the buyer test for an seo cli.

Should I fail the build on every amber?

Bottom line: Not on day one. Fail on the reds that mean do not ship.

  • Expand the set when the team can stand it.
  • A job that fails the world gets skipped.
  • On this desk, exit code documented was red on 6 / 20.
  • An seo cli that fails the world gets bypassed.

Can I just curl the HTML and grep a phrase?

Bottom line: That is a phrase check, not title, meta, headings, density, images, links, tech, and speed.

  • curl is the fetch.
  • The command is the eight lights on top of the fetch.
  • On this desk, links were red on 9 / 20grep would have missed them.
  • An seo cli is those eight lights, not a phrase scan.

Where does an agent fit?

Bottom line: The agent calls this command. It does not replace it.

  • Keep the essay on seo agent.
  • Keep the flags, JSON, and exit codes here.
  • If the note and the JSON disagree, believe the JSON.
  • An seo cli the agent cannot call is the wrong handoff.

Do I need Bash, or will any runner do?

Bottom line: Any runner that can invoke the command, read JSON, and honor an exit code will do.

  • The Bash manual is the common glue, not a requirement to rewrite your stack.
  • GitHub Actions is where that glue usually hangs.
  • On this desk, JSON parseable was red on 5 / 20.
  • That is the minimum an seo cli must expose on day one.

Conclusion

An seo cli is a scriptable eight-module check. Pass a URL. Emit JSON. Fail on agreed reds. Match the paste box. Start with a free page check so the contract is visible, then hang the same list in CI. For the agent that should call this command, stay on seo agent. The desk rows stay public so this seo cli page can be cited; they are first-party counts, not a third-party award.

References

  1. GitHub Actions · RFC 8259 · curl · wget · GNU Bash · Selenium · Activity Streams 2.0 · Google — Title links · W3C WCAG 2.1. Retrieved 2026-08-19.
  2. Stanford HAI — AI Index 2025 (organizational AI use 78% in 2024) · McKinsey — The state of AI · OECD AI Principles · Wikidata Q208140 · Wikidata Q180711 · Search Engine Land (beat, not “as seen in”).
  3. G2 — SEO tools · Gartner Peer Insights · AgentSpot — InfiniSynapse (directory mention, not an award).
  4. InfiniSynapse desk — 20-page CLI-check series, eight-module series, and 10-URL cluster (DESK-CLI-20260819A); first-hand re-open of this URL plus /en/tool/on-page-seo-tool and /en/tool/on-page-seo-checker on 2026-08-19. Not a customer lift study.

About the author — William Zhu, cofounder of InfiniSynapse. Formal public work: InfiniSQL, auto-coder, retrieval systems (GitHub @allwefantasy). Reviewer: InfiniSynapse Data Team. Published 2026-08-16. Updated 2026-08-19. Policy: About · editorial standards · privacy. No standalone /en/terms URL.

WZ

William Zhu · Cofounder, InfiniSynapse · GitHub @allwefantasy

Desk-validated SEO Health methods. Corrections: zhuhl@infinisynapse.com · corrections policy.

SEO CLI: Script the Same Eight-Module Page Check