Home / Blog / SEO

On-page SEO services at scale: what done-for-you means

Most on-page SEO work is rule-based. A title that's too long, a missing meta description, an H1 that repeats three times, a product image with no alt text - these aren't judgment calls, they're checks against a spec. That's exactly why they're the part of SEO an agent can do across every client site at once, and the part where done-for-you actually means done, not drafted. Here's how we run on-page SEO services in production, and where the work still needs a human.

What on-page SEO services cover

On-page SEO services are the work of optimizing the elements inside a page that search engines read: title tags, meta descriptions, heading structure, structured data (schema), image alt text, canonical tags, and internal links. Unlike off-page work, all of it lives in your own HTML, which means you control it completely and can check it against a clear standard. That's the whole reason it scales: the rules are explicit and the page is right there to inspect.

When an agency sells on-page SEO services, this is the bundle: a per-page audit of those elements, a set of recommended fixes, and (if it's a real done-for-you service) the fixes actually applied. The catch is that the value is in the last step. Anyone can run a crawler that flags 400 missing meta descriptions. Writing all 400, in brand voice, without duplicating, and pushing them live is the work nobody wants to do by hand. That gap between the audit and the shipped fix is where most on-page engagements quietly stall.

Why on-page is the most automatable layer of SEO

On-page SEO automates well because nearly every element has a measurable pass/fail condition. A title tag is too long or it isn't. A page has exactly one H1 or it has zero, or four. A FAQ block has valid schema or it throws a validation error. These are deterministic checks, so an agent can apply them identically to 12 sites or 1,200 without the quality drifting page to page the way it does when three freelancers split the spreadsheet.

This is the same insight behind the rest of our production work. We run AI agents that do SEO execution for agencies, and the tasks that automate cleanly are always the rule-shaped ones. Internal linking with validated anchors, technical audits, schema generation, on-page fixes - the work where "correct" is defined, not felt. The way we run AI agents for SEO in production leans hard on this: give the agent a spec it can check its own output against, and it produces work you can trust at volume. Strategy and creative angle don't fit that mold. On-page is mostly the part that does.

One honest caveat up front. "Automatable" doesn't mean "fire and forget." The reason on-page fixes scale safely is the validation step, not the generation step. A model can write 400 title tags in a minute. Whether all 400 are under the limit, unique, and actually about the page is a separate question, and it's the one that decides if the service is any good.

The pipeline: audit, generate, validate, ship

A done-for-you on-page pipeline has four stages: crawl and audit every page against the on-page rules, generate the fixes, validate each fix against the same rules before it goes anywhere, then ship only what passes. The validate stage is the one that separates a real service from a content generator, and it's the one most "AI SEO" tools skip.

The on-page pipeline audit crawl vs rules generate draft fixes validate pass / reject ship push live reject = regenerate, never ship a failing fix scalably.io ●
The validate stage gates everything. A fix that fails the rule goes back to generate, not out to the live site.

The loop matters more than any single stage. When a generated title comes back at 71 characters, the validator rejects it and the title gets regenerated under a tighter constraint, before anything reaches the client's CMS. Nothing ships that hasn't passed the exact check that flagged it in the first place. That's a closed loop, and it's what lets the same pipeline run across many sites without a person eyeballing every page.

The elements, one rule at a time

Each on-page element comes down to a small set of checkable rules. Here's the working spec we apply, element by element, with the rule that decides pass or fail. None of these need a human to evaluate; they need a human to set the standard once.

ElementThe rule that decides pass/fail
Title tagPresent, 50-60 characters, primary keyword near the front, unique across the site, describes the page
Meta descriptionPresent, 140-160 characters, unique, reads as a summary not a keyword list
H1Exactly one per page, contains the topic, not identical to the title tag
Heading orderNo skipped levels (no H3 before an H2), logical nesting
Image altPresent on content images, describes the image, not stuffed with keywords
CanonicalPresent, self-referencing unless the page is a known duplicate
SchemaValid against the type's spec, matches visible page content, no errors

Read that table and you can see why a human doesn't scale here. Checking one page against seven rules is a two-minute job. Checking 1,200 pages is a week nobody has, and by page 300 the standard slips. An agent applies rule four to page 900 exactly as it applied it to page one. The consistency is the product.

Two of these deserve a flag because they're the ones people get wrong. Title tags and meta descriptions are not guaranteed to display as you write them. Google says it "might modify the title link to better help users if it determines that the page title doesn't reflect the page content" (Google Search Central, "Influencing your title links," 2026). And meta descriptions get rewritten far more than most people assume - Ahrefs found Google shows your written meta description only about 37% of the time, replacing it in roughly two out of three results (Ahrefs, "How Often Does Google Rewrite Meta Descriptions?," 2026). So the rule for these elements isn't "stuff the keyword," it's "write something accurate and on-topic that Google has no reason to override." The validator checks for that: on-topic, right length, unique, not keyword soup.

The part that matters: validating before it ships

The difference between an on-page SEO service you can trust and one you have to babysit is whether every fix is validated against the rule before it goes live. Generation is cheap and easy. Validation is the work, because it's the thing that catches the 71-character title, the duplicate meta, the schema that references a price the page doesn't show.

This is the same principle we hold to everywhere we run agents in production: the agent has to be able to check its own output against a defined standard before that output counts as done. On our internal-linking work, the standard is anchor validity, every suggested link verified to point at a real, relevant page with an anchor that genuinely describes the target, at 100% before anything ships. On-page is the same shape. A title fix isn't "done" because the model wrote it. It's done because it passed the length, uniqueness, and on-topic checks, and a failing one never reaches the site.

Concretely, the validator is a small set of assertions that run on every generated fix. For a title tag, the logic is unglamorous and that's the point:

def validate_title(title: str, page_topic: str, existing: set[str]) -> None:
    """Reject any title that fails an on-page rule before it ships."""
    if not title:
        raise ValueError("empty title")
    if not (50 <= len(title) <= 60):
        raise ValueError(f"length {len(title)} outside 50-60")
    if title.lower() in existing:
        raise ValueError("duplicate title on this site")
    if not _is_on_topic(title, page_topic):
        raise ValueError("title does not match page topic")

Nothing about that is clever. The cleverness is insisting it runs on every single fix, every time, with rejection as the default outcome for anything that fails. A rejected title gets regenerated under the constraint it broke, not shipped with a note to fix it later. The same pattern covers meta length, single-H1, alt presence, and schema validity. Run that loop and the output you ship is the output that passed, which is the only output worth shipping to a client's live site.

The rule: on-page SEO at scale is a validation problem, not a writing problem. Generating fixes is the easy 20%. Proving each one is correct before it touches a client site is the 80% that decides whether "done-for-you" is true.
Want to see the failed checks? Send one client domain and we will map the on-page gaps free, with every finding tied to a real URL you can verify. Get a free audit.

Where a human still has to decide

On-page automation covers the rule-shaped work, but four things still need a human: the strategy of which pages matter, the brand voice the fixes are written in, the judgment calls a rule can't capture, and final sign-off on anything user-facing for a high-stakes page. The agent does the volume; a person sets the direction and owns the exceptions.

Concretely, here's the split we hold to. A human decides which templates and which page types get optimized first, because that's a business call, not a crawl result. A human sets the voice and the constraints once, so the generated titles sound like the brand and not like a model. And a human reviews the edge cases the validator flags as ambiguous - a product page where the "topic" is genuinely unclear, a title that passes every rule but reads oddly. The pipeline is built to surface those rather than guess, because a confident wrong answer on a money page is worse than no answer.

This is the honest version of on-page SEO services. Anyone promising fully autonomous on-page optimization with no human in the loop is either overselling or about to push a duplicate title to 200 of your client's pages. The win isn't removing the human. It's moving the human from doing 1,200 two-minute tasks to setting the standard once and reviewing the handful of real exceptions. That's the real job of an on-page SEO expert in a world of automation: owning the rules and the edge cases the agent hands back, not grinding the volume by hand.

What done-for-you should mean when you buy it

When you buy on-page SEO services as an agency, "done-for-you" should mean the fixes are applied and verified, not just listed in a report. Ask three questions: does it ship the fix or just flag it, does it validate each fix before it goes live, and does it show you what passed and what was rejected. If the answer to any of those is no, you're buying an audit, not a service.

The reason that distinction matters to an agency specifically: you already know what's wrong with your client sites. You don't need another tool to tell you there are 400 missing meta descriptions. You need the 400 written, validated, and live, in brand voice, without you assigning it to someone. The execution is the bottleneck, and it's the thing an agent built around a validation loop is genuinely good at - the same loop that powers everything from internal linking to schema across the sites we run. If you want to build this yourself rather than buy it, the engine underneath is an agent loop you can stand up with the Claude Agent SDK, wired to your own on-page rules and a validator that refuses to ship a failing fix.

On-page is the cleanest place to prove this works, because the rules are explicit and the result is verifiable on the page itself. That's also why it's the first thing worth checking on any client site: it's where the gap between "we know it's broken" and "it's fixed" is widest, and where closing it is most measurable.

Get a free audit on one client site - one domain, every finding checkable against the live site, no contract.
Want this run on one of your client sites? I'll do a free on-page audit on one site you pick - titles, meta, headers, schema, and alt checked against the rules above, with a gap map of exactly what's missing and what it'd take to fix. No pitch deck, just the report. Email me the URL and I'll send it back.
P

Pavle Lazic is the founder of Scalably, where he builds and runs multi-tenant Claude agent platforms in production for real businesses. He writes about the Claude Agent SDK, MCP servers, and what it actually takes to put AI agents to work on SEO. See the platform.