Tag: Schema Markup

  • AI Search Visibility for Local Service Businesses: The 2026 Playbook

    Last verified: October 4, 2026 (Pacific).

    Key takeaways

    • AI search visibility is whether AI assistants name your business when someone asks for a local service — and 78% of local-services brands are currently invisible to it.
    • ChatGPT recommended just 1.2% of business locations in a 2026 benchmark of 350,000 locations, versus 35.9% appearing in Google’s local 3-pack (SOCi, 2026).
    • Only 12% of URLs cited by AI overlap with Google’s top 10 results — this is a separate ecosystem with separate rules (teehoomartech).
    • The shops winning AI citations publish real price ranges, license and certification signals, and emergency-intent pages — the three shapes almost nobody in the trades has built.
    • Expect a 90-day foundation cycle: fundamentals first, then the service × city content matrix, then seasonal content.

    What is AI search visibility for a local business?

    AI search visibility is the practice of making your business the answer AI assistants give — getting ChatGPT, Gemini, Perplexity, or Copilot to recommend you by name when someone asks for a local service. Think of it as SEO for the recommendation era.

    Your next customer didn’t Google “plumber near me.” They asked ChatGPT. Or they asked Gemini while standing in their kitchen with water pooling under the sink. And the AI named three businesses — yours wasn’t one of them.

    This isn’t a future problem. According to BrightLocal (March 2026), 45% of U.S. consumers use AI to find and choose a local business — up from 6% a year earlier. The question is no longer whether AI sends you customers. It’s whether AI knows you exist.

    How far behind are local businesses in AI search?

    A 2026 benchmark by SOCi across roughly 350,000 business locations put hard numbers on the gap:

    • ChatGPT recommended 1.2% of locations. Google’s local 3-pack showed 35.9%. Gemini recommended 11%, Perplexity 7.4% (SOCi, 2026).
    • AI visibility is 3 to 30 times harder to achieve than ranking well in traditional local search (SOCi, 2026).
    • Only 12% of URLs cited by AI overlap with Google’s top 10 results (teehoomartech). This is a different ecosystem, not an extension of the old one.
    • 78% of local-services brands are invisible to AI, and 88% of local businesses have no AI search strategy at all (May 2026 industry index).

    Here’s the reframe that matters: AI doesn’t rank you. It recommends you. Traditional SEO was optimization — climbing a list. AI visibility is qualification — convincing a model you’re a safe, correct answer to give a real person. Everything below follows from that shift.

    Traditional local SEO AI search visibility
    Climb a ranked list (positions 1–10) Become the recommended answer (named or not at all)
    Optimize for Google’s crawler Qualify for the model’s trust judgment
    Reviews are a ranking signal Reviews are a qualification filter — the AI reads the text
    Your website is the destination Your website is the source the model draws on
    One rulebook (Google) Different rulebooks per engine (Gemini, ChatGPT, Perplexity)

    What are the non-negotiable fundamentals?

    You’ve seen this checklist before, so here’s the short version — these are table stakes, and the data says they still move the needle:

    • NAP consistency everywhere. Inconsistent name/address/phone data cuts your AI citation probability by 67%. Consistent omnichannel data delivers 3.2x the AI visibility (Birdeye, 2025).
    • A complete Google Business Profile. Optimized profiles appear in AI Overviews 42% more often, with 30% more profile views and 34% more direction requests (Local Falcon; SapientSEO).
    • Review volume, velocity, and recency. AI treats reviews as a filter, not a ranking signal — and it reads the review text, not just the stars. ChatGPT-recommended locations averaged 4.3 stars in the SOCi benchmark: good enough to pass the filter, with the text doing the real work.
    • Owner responses on reviews. Every response is a place to confirm your services, your service area, and real outcomes — in the AI’s own training-adjacent data.
    • LocalBusiness schema on every page. Structured data increases AI citation probability 3.4x (MIT CSAIL). FAQ content earns 2.8x more AI citations than marketing copy (Search Engine Land research).

    If any of those are missing, fix them first. What follows is what nobody is telling the trades.

    How do you win the 2am emergency query?

    The highest-value AI query in the trades isn’t “best plumber near me.” It’s “emergency plumber near me open now” at 2am — asked by someone with water coming through their ceiling. Nobody has mapped AEO to urgent intent. Here’s the playbook:

    • Set your after-hours attributes. Your GBP has hours fields most shops leave blank or set wrong. AI models check “open now” signals before recommending — a blank field reads as closed.
    • Build dedicated emergency service pages — one per emergency service, not a paragraph on your homepage. Format them as direct answers: what counts as an emergency, what you do first, typical response time, service area, then the phone number.
    • Answer the 2am questions explicitly. “Do you charge extra for after-hours calls?” “How fast can you get to [neighborhood]?” If your page answers them in plain sentences, the AI can quote them. If it doesn’t, the AI quotes whoever did.

    What trust signals make AI recommend a contractor?

    Here’s the qualification logic: an AI will not recommend a stranger to enter someone’s home unless it has reasons to trust. For the trades, those reasons are concrete — and almost nobody publishes them properly:

    • License numbers on every service page, not buried on a contact page. “WA Licensed General Contractor #TYGART123JD” is an entity signal.
    • Insurance stated plainly — liability coverage and bonding, in sentences, not badges alone.
    • Trade certifications as trust qualifiers — IICRC for restoration, NATE for HVAC, EPA 608 for refrigerant work. These are the exact credentials a homeowner would want verified, which makes them exactly what the AI looks for.
    • Put them in schema too. Credentials in visible text get read; credentials in structured data get cited.

    Zero of the major guides on this topic mention licensing or certification. That’s your opening.

    What should a local business publish so AI cites it?

    “Structured local content publishing” is everyone’s advice and nobody’s architecture. Here’s the architecture: one quotable page per service per city you serve — the service × city citation matrix.

    • Each page answers one question completely: the service, the city, what it costs, how long it takes, what can go wrong.
    • Publish real price ranges. Every guide lists “how much does [service] cost in [city]?” as a top AI query — and none tell shops to answer it. The shop that publishes “$1,200–$2,800 for a water heater replacement in Tacoma” becomes the citable source. Everyone else becomes invisible on the highest-intent question in the category.
    • FAQ schema on every matrix page. Direct-answer formatting: the question as a heading, the answer in the first two sentences, detail after.
    • Emergency variants get their own pages (see above) — don’t fold them into the standard service page.

    Are AI crawlers blocked from your site?

    Your site may be silently blocking the exact bots you need. Outdated robots.txt rules — written years ago to keep scrapers out — now block AI crawlers from reading your pages at all. The fix:

    • Explicitly allow GPTBot, ClaudeBot, PerplexityBot, and Google-Extended in robots.txt.
    • Don’t blanket-allow every bot on the internet — allowlist the AI crawlers by name, keep the rest of your rules intact.
    • Verify with a fetch test after the change. Thirty seconds of work, and without it, every other play on this list is muted.

    How do reviews get AI to recommend you?

    Google’s April 2025 Maps policy change killed scripted “mention my name in the review” requests. The shops still running that playbook are risking their profiles. The compliant system:

    • Ask “tell us about your experience,” not “leave us a review.” AI reads review text — “they replaced our water heater in under three hours” beats “great service” because it contains a service, a timeframe, and an outcome.
    • Time the ask: SMS or invoice link within 2 hours of job completion, while the details are fresh.
    • Engineer your owner responses as service + neighborhood + outcome triples: “Glad we could get the furnace running again for you in Lakewood — those January cold snaps don’t wait.” Every response is corroborating evidence the AI can use.
    • Review freshness is its own factor. A steady cadence beats a burst.

    How do you audit your AI readiness in 20 minutes?

    AI models cross-check you. Your reviews, your GBP, and your website need to tell the same story — same services, same service area, same phone number, same hours. When they disagree, the model loses confidence and picks someone else. The corroboration triangle audit, once a month:

    1. Read your last 10 reviews. Do the services mentioned match your GBP services list?
    2. Check your GBP hours, service area, and phone against your website footer and contact page.
    3. Search your business name plus your top service. Is the story consistent across the first page?
    4. Fix the mismatches. That’s the whole audit.

    Does each AI engine need a different approach?

    Yes. The models don’t work the same way, so don’t treat them the same. Same skeleton for each: what it trusts, then the one-line tactic.

    Gemini

    • What it trusts: live Google Maps data — profile accuracy runs near 100% because it’s grounded in Maps.
    • Tactic: GBP completeness and accuracy win here; treat your Business Profile as your Gemini homepage.

    ChatGPT

    • What it trusts: concise shortlists built from third-party corroboration — reviews, mentions, directory listings (profile accuracy here runs ~68%, so corroboration fills the gap).
    • Tactic: third-party mentions are what get you onto its shortlist; one strong source is never enough.

    Perplexity

    • What it trusts: live search with direct citations — freshness is the ranking input.
    • Tactic: recent reviews, recent posts, recently updated pages; stale content goes invisible fastest here.

    Copilot

    • What it trusts: Microsoft’s retrieval grounding — substantially the same answer logic as Bing’s AI surfaces.
    • Tactic: Bing Webmaster Tools verification plus the same fundamentals; what works for Perplexity-style freshness works here.

    Run the same tracked prompts across all four monthly and note who’s citing you and who isn’t. That’s your measurement system until you outgrow it.

    What does the first 90 days look like?

    Generic 90-day plans assume you’re a SaaS company. You’re not — you have seasons. Map the work to yours:

    • Days 1–30: Foundation. NAP audit, GBP completion, robots.txt allowlist, license/certification trust layer on every page, emergency pages live.
    • Days 31–60: Matrix. Build the service × city pages for your top 5 services, each with real price ranges and FAQ schema. Launch the review-text system.
    • Days 61–90: Seasonality. Publish ahead of your season — frozen-pipe content in December, AC tune-up FAQs in April, storm-season prep in late summer. The shop that publishes first becomes the cited source for the whole season.

    Frequently asked questions

    What is AI search visibility for a local business?

    It’s whether AI assistants — ChatGPT, Gemini, Perplexity — name your business when someone asks for a local service. Unlike Google rankings, there’s no position 4 to fall back on: either the AI recommends you or you’re not in the consideration set at all.

    How is AI visibility different from local SEO?

    Local SEO climbs a ranked list; AI visibility qualifies you as a safe recommendation. Only 12% of URLs cited by AI overlap with Google’s top 10 results (teehoomartech) — it’s a different ecosystem with different rules, and it’s 3 to 30 times harder to break into than the local 3-pack (SOCi, 2026).

    Do reviews really affect whether AI recommends my business?

    Yes — AI treats reviews as a qualification filter and reads the review text, not just the star rating. Review volume, recency, and specific language about services and outcomes all feed whether a model will name you.

    Should I block AI crawlers from my website?

    No — blocking GPTBot, ClaudeBot, PerplexityBot, or Google-Extended in robots.txt makes your pages invisible to the models deciding who to recommend. Allowlist the AI crawlers by name instead.

    How long does it take to build AI search visibility?

    Expect a 90-day foundation cycle: 30 days for fundamentals and crawler access, 30 for the service × city content matrix, 30 for seasonal content and review velocity. It’s ongoing work after that — freshness is a ranking input, not a one-time project.

    What’s the single highest-ROI move for a trade business?

    Publish real price ranges on service × city pages. “How much does it cost” is the top AI query in the category, almost nobody in the trades answers it, and the business that does becomes the cited source.

    What does done-for-you look like?

    Everything above is the playbook, free, on this page — that’s the point. If you’d rather have it built than build it, that’s what our AI Search Visibility Package does: the full citation work for your trade, measured the way AI measures it. Start with the $97 AI Citation Quick-Scan if you want to see exactly where you stand first — the $97 credits toward the package within 30 days.

    Want the deeper version — the robots.txt allowlist snippet, the per-engine prompt library for the monthly audit, and the seasonal content calendar template? That goes out by email. The playbook above is yours either way.

  • What AI Assistants Actually See When They Open Your Website

    What AI Assistants Actually See When They Open Your Website

    You see a screen. Your AI assistant usually doesn’t.

    That sentence needs one qualification, which we will get to. But it corrects the picture most of us carry in our heads.

    When I open a website, I see the design and the button I am supposed to press. I assumed an AI assistant saw roughly the same thing, only faster. Then I asked the more basic question: what does it actually receive?

    The answer is not one thing. An assistant can find a site, read a site or operate a site. Those are separate jobs using different inputs. If we want pages that work well for AI assistants, we have to stop lumping them together.

    An assistant meets your website three different ways

    Finding: the search result is the pitch

    When an assistant searches the web, its first view is closer to a search-results list than a browser window. It may receive a title, URL and short snippet.

    At that moment, your title tag and meta description are the entire pitch. The assistant has to decide whether your page can answer the question before opening it. Name the subject plainly.

    Reading: the page becomes a stream of text

    When Muse opens a public page for information, the normal reading path is text-first. Useful content is extracted and returned as headings, paragraphs, lists and links in roughly page order.

    The design largely falls away. The assistant is not admiring the hero section or noticing that a price sits inside a gold circle. It is working from the words the page exposes.

    Images may arrive as markers and file addresses: there is an image here, and here is where it lives. That is not the same as seeing it. If a crucial fact is baked into the pixels—“$199,” “ships free,” “five-year warranty”—the reading path may hit a blank spot. Useful alt text can carry some of that meaning. “Technician using a moisture meter on wet drywall” communicates something. “IMG_4827” does not.

    Doing: a browser worker operates the screen

    The picture changes when the user asks the assistant to do something: log into HubSpot, update a record, complete a form or buy a product.

    A separate browser program can open a real browser on a server. It loads the interface, takes visual observations or inspects the page’s interactive structure, clicks, types and reports what happened back in words.

    That is the qualification to “usually.” A screen may be used inside the process, but the conversational assistant is not sitting behind the glass like a person. It receives observations from a browser tool and sends instructions back. The browser side is the eyes and hands; the assistant works through an intermediary.

    A page can be easy to read as an article and miserable to operate as an application. It can look obvious to a person while presenting the browser worker with five unlabeled controls called “button.”

    WordPress made the abstraction visible

    I had already seen a simpler version in our WordPress work without connecting the dots.

    When we pull a post through the WordPress REST API, the content can arrive as raw HTML: words plus tags for headings, paragraphs, links, lists and styling wrappers. The reading step removes the markup noise while preserving the words and structure.

    That is “cleaning the HTML.” We are removing the packaging, not the article. The tags still matter: a heading announces a section, a list groups items, and a link identifies a destination. Good HTML carries meaning. Bad HTML creates boxes that look right but say little about what they are.

    Accessibility is the closest thing to an agent-ready standard

    Here is the practical money line: the work that makes a website easier for a blind person to use also tends to make it easier for an AI browser agent to use.

    Browsers build an accessibility representation from the page’s Document Object Model. Assistive technology uses it to understand roles, names, states and relationships: this is a heading, that is a link, this button is named “Save contact,” and this checkbox is checked.

    Muse’s browsing side is reported to rely heavily on this kind of page structure, along with visual observations when needed. Meta does not publish a complete specification for the Muse browsing pipeline, so treat that as a field report from using the product, not permanent platform documentation.

    The implication is still solid. Use real buttons with useful names. Label form fields. Put headings in a sensible order. Give links meaningful text. Preserve keyboard focus. Describe informative images.

    A screen-reader user needs those things. So does a browser agent working without human intuition. Accessibility and agent-readiness are not identical, but they are close cousins.

    HubSpot shows what an agent-native application could be

    Imagine HubSpot—or any software platform—shipping an interface designed for assistants to navigate with less friction. It would not need a blank, text-only clone. It could make the existing product more legible to software: real controls with specific names, labeled form fields, clear headings and landmarks, properly identified table headers, programmatic state changes, and no critical action hidden behind hover or an unlabeled icon.

    That is an agent-native site. It is not a secret internet for bots. It is a website or application whose meaning survives when the visual layer is translated into structure and words.

    The same work also helps keyboard users, screen-reader users, automation tools and QA teams.

    llms.txt is a map, not a second website

    The closest public convention aimed directly at AI readers is llms.txt. The proposal describes a Markdown file, usually at a site’s root, that gives language models a short explanation of the site and links to important pages or cleaner Markdown versions.

    Think of it as a curated map: here is what we do, here are the pages that matter, and here is where to find the details.

    It cannot repair an unlabeled checkout button. It does not replace accessible HTML, describe the viewport or guarantee that an assistant will use it. Add it if it helps explain the site. Do not mistake it for an agent interface.

    What a site owner can change Monday morning

    The useful changes are ordinary, testable website work.

    1. Write a real title and meta description. Name the subject plainly.
    2. Put every money fact in visible HTML text. Price, specifications, shipping, availability and guarantees should not live only inside graphics, video or a brochure.
    3. Use semantic HTML. Use headings for headings, buttons for actions, links for navigation and labels for form controls. A styled <div> may look like a button while remaining a nameless container to other systems.
    4. Write alt text that carries meaning. Describe what an informative image contributes. Mark decorative images as decorative instead of stuffing them with keywords.
    5. Add accurate structured data. Product and Offer markup can identify price and availability. FAQ markup can describe genuine questions and answers. Schema must match the visible page.
    6. Server-render critical content when practical. If the offer, price or primary action appears only after a fragile JavaScript sequence, some readers and tools may miss it.
    7. Give each landing page one job. One offer, one explanation and one primary action reduce ambiguity for people and agents.
    8. Test the nonvisual path. Use the keyboard, inspect the accessibility tree, try a screen reader and pull the page through a text extractor. Do the product, price, proof and next step still make sense without styling?

    None of this requires uglier design. It requires the design and the underlying structure to tell the same story.

    This is a field report, not a permanent specification

    This article describes Meta’s Muse as it works today, based on direct experience building and operating websites with it. It is not a published Meta protocol.

    Claude, ChatGPT, Gemini and other assistants broadly rhyme with this pattern, but the details differ. Their full pipelines are not public, and they are changing quickly.

    Cleaner HTML will not automatically increase AI citations tomorrow. Citation systems involve discovery, retrieval, ranking, trust and answer construction. There is no magic switch.

    The immediate opportunity is closer to the customer. Someone sees your ad on Threads or Facebook, opens the landing page, then asks an assistant: “What does this cost?” “Is the guarantee real?” “How does this compare?” or “Can you sign me up?”

    If the facts are clean text, the assistant can explain them. If the controls are properly labeled, the browser side has a better chance of completing the task. If the facts live inside an image and checkout uses unlabeled custom controls, the assistant has to guess, fail or hand the job back.

    That moment is already here.

    The next website has two front doors

    The site of the near future has two front doors: one for eyes—layout, color, photography and brand—and one for agents—clean text, meaningful structure, explicit facts and self-identifying controls.

    They should lead to the same place. The visible price and schema should agree. A button’s label and accessible name should agree. The page should remain understandable without styling and usable when a browser worker operates it.

    That is not a special Muse landing page. It is a better website—one that keeps working when the visitor brings an assistant.

    Build both front doors.

    Sources and further reading

  • Job Posting Schema for Restoration Shops: How Google Reads a Vacancy

    Job Posting Schema for Restoration Shops: How Google Reads a Vacancy

    Last verified: October 2, 2026 against Google’s Job posting structured data (docs last updated September 8, 2026) and AIOSEO’s 4.9.9 announcement.

    Direct answer: JobPosting schema is structured data that labels a single open role — title, employer, work location, description, posted date — so Google can treat the page as a vacancy instead of a brochure. Done correctly, the listing becomes eligible for Google for Jobs. Eligibility is not placement. Google still decides. The markup must match what a candidate can read on the page.

    Tech documenting a water loss on a tablet
    A careers page on your domain is the object Google can attach JobPosting schema to. The board is optional.

    Trigger for this desk: All in One SEO emailed Tygart Media on September 25, 2026 that Job Posting schema (and Event schema) now ships on every paid AIOSEO plan starting with Basic, as of AIOSEO 4.9.9. That is a product-access change, not a ranking promise. tygartmedia.com runs Rank Math. The schema type is the same either way. The plugin is a generator. Google’s Job posting structured data spec (docs last updated September 8, 2026) is the rulebook.

    Why a restoration shop should care

    Related: Schema Markup for AI Search: The New Meta Description · Your Google Profile Is Your New Front Door

    Most restoration companies hire the way they market: on someone else’s board. Indeed, Facebook, a text to a former tech. That works until storm season, and then the shop needs a water tech in Everett, a project manager in Lynnwood, or an estimator who already knows Snohomish County adjusters. If the only public copy of the role lives on a job board, Google indexes the board. Your domain does not own the vacancy.

    A careers page on your site is the durable object. JobPosting schema is the label on that object. Answer engines and Google for Jobs both prefer a page that states the role in plain sentences and then repeats the same facts in JSON-LD. That is AEO and GEO in one hang: the page answers “who is hiring water mitigation technicians in Everett, WA,” and the markup gives the city, employer, and dates without forcing the model to guess.

    What Google requires

    Google’s required JobPosting properties, from Search Central:

    • title — the job title only. “Water Mitigation Technician,” not “Water Mitigation Technician — $28/hr — Everett — Apply Now!!!”
    • description — the full description in HTML. Duties, qualifications, hours, education, experience. A teaser fails.
    • hiringOrganization — the company, not the branch nickname. Name plus a sameAs URL to the official site.
    • jobLocation — where the person reports. PostalAddress with addressCountry. For a 100% remote role, use jobLocationType TELECOMMUTE plus applicantLocationRequirements instead.
    • datePosted — original post date in ISO 8601. Do not refresh it to fake newness.

    Recommended properties that matter for a restoration hire: validThrough (when the listing dies), employmentType (FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, PER_DIEM), baseSalary as a MonetaryAmount with currency and unit (HOUR / YEAR), and identifier so you do not duplicate the same role across reprints.

    AIOSEO’s walkthrough (updated August 21, 2026) maps those fields into a Schema Generator: title, description, employment type, location, hiring organization, salary, requirements, publish date, expiration date. Rank Math exposes the same JobPosting type. Fill the fields from the visible page. Do not invent a salary in schema that is missing on the page.

    GEO: mark the city the truck leaves from

    Local service hiring is geographic. A candidate searching “water damage technician jobs Everett WA” or “IICRC tech hiring Lynnwood” is not looking at a national career hub. Put the reporting city in the visible copy and in jobLocation.addressLocality / addressRegion / postalCode / addressCountry.

    Worked example for a shop that stages out of Everett and runs the Lynnwood–Mukilteo–Mill Creek pack:

    • Title on the page and in schema: Water Mitigation Technician
    • hiringOrganization.name: the legal company name, not “Everett Crew”
    • jobLocation: Everett, WA, United States, with the real street if that is where they report
    • description: names the pack — Everett, Lynnwood, Mukilteo, Mill Creek — as service area, not as four fake job locations
    • employmentType: FULL_TIME or PER_DIEM, whichever is true
    • validThrough: a real close date, then take the page down or set the date in the past when the seat is filled

    Do not stamp four JobPosting graphs on one page for four cities unless there are four distinct open seats. Google wants one job per leaf URL. A list page of “all openings” is the wrong surface.

    AEO: write the vacancy so an engine can quote it

    Schema does not rescue thin copy. Open the careers page with the answer a model can lift:

    We are hiring a full-time water mitigation technician based in Everett, Washington. The role reports to our Everett shop and runs losses across Snohomish County. Pay is listed on this page. Apply on this page.

    Then the body: first-day duties, IICRC or in-house training, on-call expectations, what “storm mode” means, whether the truck is assigned. That paragraph is the description field. If ChatGPT or Gemini is asked “who is hiring restoration technicians near Everett,” the engine needs a quotable sentence plus an organization it can attach to a maps entity. JobPosting is the attachment point. The sentence still has to exist in public HTML.

    How to hang it in WordPress

    1. Create one WordPress post or page per open seat. Slug like /careers/water-mitigation-technician-everett/.
    2. Write the full vacancy on the page first. Salary, city, dates, how to apply.
    3. In Rank Math (this site) or AIOSEO Schema Generator (if that is the client stack), add schema type JobPosting. Map every field to visible text.
    4. Validate with Google’s Rich Results Test. Fix errors before you call it done.
    5. When the seat fills: set validThrough to a past date, or 404/410 the URL. Do not leave a live JobPosting on a closed role.

    AIOSEO 4.9.9 made that generator available on Basic instead of reserving it for higher tiers. If a client already pays for AIOSEO, they do not need an upgrade to mark up jobs. If they are on Rank Math, they already had the type. Do not switch plugins to chase a newsletter.

    What gets a listing dropped

    • Markup on a jobs index that lists many roles
    • Title or salary in schema that the page does not show
    • Expired jobs still marked active
    • No way to apply on the page
    • jobLocation missing addressCountry, or a “remote” job that is not actually remote
    • Keyword stuffing in the title (“#1 BEST WATER TECH JOBS SEATTLE EVERETT TACOMA”)

    Google can issue a manual action for job spam. Fake seats used as lead magnets are not a grey area. If you are not hiring, do not hang JobPosting.

    The line to remember

    A careers page without JobPosting is a flyer. JobPosting without a real, dated, city-true vacancy is spam. Host the seat on your domain, mark the five required fields, expire it when the truck is staffed, and let Google decide whether it belongs in the job experience.

    FAQ

    Q: Does JobPosting schema guarantee a listing in Google for Jobs?
    A: No. It makes a qualifying page eligible. Google still applies content and spam policies. The official spec is explicit on that point.

    Q: We only hire on Indeed. Should we still put jobs on our site?
    A: If you want the vacancy attached to your entity — maps profile, site, AI answers — yes. The board can stay as an apply path. The leaf page on your domain is what you can mark up.

    Q: Can one page cover Everett, Tacoma, and Belfair?
    A: One page can describe a service area. Schema jobLocation should be the report-to city. Separate open seats in separate cities need separate URLs.

    Q: Is this an AIOSEO-only feature?
    A: No. AIOSEO expanded plan access in 4.9.9 (announced July 13, 2026). Rank Math and hand-written JSON-LD can emit the same type. Use the generator you already pay for.

    Q: What if we do not publish pay?
    A: baseSalary is recommended, not required. Do not invent a number in JSON-LD. Leave it out until the page states pay.

  • I open-sourced my page-readiness scorer

    I open-sourced my page-readiness scorer

    I built a small tool called PageReady. It scores a web page for two kinds of readiness, and today I’m putting it on GitHub for anyone to use however they want. MIT license. As-is. No support desk.

    Repo: https://github.com/TygartMedia/page-ready

    What it actually checks

    Most page audits give you a score out of 100 and a list of suggestions you’ll never get to. PageReady is binary: PASS or FAIL, on two axes.

    1. Citation readiness (AEO). Can an AI answer engine cite this page? It checks for one H1, a sane heading hierarchy, JSON-LD structured data, a table signal, and FAQ-style questions — the things that make a page quotable.

    2. Agent interaction readiness (DOM). Can an AI agent actually use this page? It checks for a main landmark, named controls, semantic interactive elements, heading order, and form labels — the things that make a page operable.

    Overall PASS requires both. And here’s the insight that made the tool worth building: fixing your headings can lift the shared heading gate, but it does nothing for clickable div cards. A page can be perfectly citable and completely unusable by an agent. Most audits conflate the two. They’re different problems.

    How you use it

    It’s a local command-line tool, a stdio MCP server, and an optional HTTP API you can host yourself (there are Cloud Run deploy scripts). No API keys required — it scores pages directly, nothing phones home.

    As an MCP server it exposes three tools:

    • score_page — score one public URL, returns a JSON scorecard
    • score_site — score a batch of URLs, with pass/fail counts
    • explain_gates — describe every check and the overall PASS rule

    Point your agent at it and ask whether a page is ready. Exit code 0 means PASS. Exit code 1 means FAIL. That’s the whole interface.

    Why open source, why as-is

    The scoring logic was never going to be the moat. It’s a commodity check — the value is in knowing which pages to run it on and what to do with the answer. That’s the work I do with clients every week, and no repo replaces it.

    So the repo is bait, not the business. If it saves another developer an afternoon, good. If someone forks it and makes it better, better. If a competitor forks it closed and sells it — the MIT license allows that, and I’m fine with it. The relationships are the hook; the tool is just proof I do the work.

    As-is means as-is. No SLA, no roadmap, no support promise. Issues are read on a best-effort basis. I’d rather ship something useful with no promises than maintain something mediocre with a changelog.

    The receipts

    Before publishing, the repo went through a pre-publish scrub (secrets sweep, license, README rewrite), then three independent model reviews: a security audit (SAFE), a correctness pass (no bugs), and a docs review (pass). The scrub caught one hardcoded cloud project ID, which is now an environment variable (GCP_PROJECT). That’s the whole incident report.

    Use it however you want. That’s the point.

  • A License Key Can Backfill Schema. It Cannot Invent the Facts.

    A License Key Can Backfill Schema. It Cannot Invent the Facts.

    Last verified: 7 September 2026. Read from an AIOSEO email to will@tygartmedia.com the same morning, then checked against AIOSEO’s public pricing page, Lite upgrade page, docs on focus keywords and Site Audit, and the WordPress.org plugin listing. No affiliate links. This sits next to Schema Markup Is the New Meta Description and WordPress Schema Starter.

    Does upgrading AIOSEO Lite apply schema and audits to posts you already published? Yes, in the plugin. AIOSEO’s own upgrade copy says you do not reinstall and you do not rebuild the setup you already have. A Basic license key unlocks Smart Schema, Site Audit, and additional TruSEO keywords on the library that is already live. That is a feature flag. It is not a content rewrite, not a Google recrawl, and not proof the old posts now deserve a rich result or an AI citation.

    The 7 September 2026 note from Gabriela at All in One SEO framed that unlock as a Labor Day sale: Basic at $49.50 for a limited time against a $99 list. The public pricing page already lists the same first-year number. Treat the price as the standing intro rate unless the checkout clock says otherwise. Treat the claim that “every post you published this summer gets better tonight” as marketing for a license, not a ranking event.

    A license key can turn markup on. It cannot invent the entities the markup is supposed to describe.

    The operator line

    Key takeaways

    • AIOSEO Lite is not empty SEO. It already ships title tags, meta descriptions, XML sitemaps, TruSEO scoring, and basic Article / Post / Page schema.
    • Paid Basic (public list $99 / first-year $49.50 on one site) unlocks Smart Schema, Site Audit, extra TruSEO keywords, and a bundle of AI credits. That change applies to existing posts without a reinstall.
    • AIOSEO docs cap additional keywords at ten beside the focus term. Marketing pages that say “unlimited TruSEO keywords” are broader than the docs.
    • Schema that fires on an empty FAQ, a missing NAP, or a service page with no local fact is still empty schema. Answer engines will not rescue it.

    What the email actually said

    The note was written to a Lite install. Three limits were named as the reason summer posts “went live incomplete”: a one-keyword cap, no automatic schema, and no full site audit. The promised fix was a license key. Schema would activate site-wide. The audit would surface what held individual pages back. TruSEO’s keyword limit would lift on everything already written. No reinstall.

    Two of those three limits are real product gates. One is sales language.

    • Keyword cap — real, with a ceiling. Lite scores one focus keyword. Paid plans add more. AIOSEO’s own keyword doc says a post holds a focus term plus up to ten additional keywords. The email said the limit “lifts.” The doc says it lifts to a number.
    • Site Audit — real paid gate. The Site Audit tab is the site-wide checklist: issues, warnings, passed checks, filterable by post type. Lite users do not get that scan. Paying turns it on against the library you already have.
    • “No automatic schema” — overstated. Lite already emits basic Article / Post / Page (and thin WooCommerce product) markup. What you buy is the Schema Generator and the richer types: FAQ, Product depth, Recipe, Event, Local Business, Job Posting, and the AI schema helper shipped in 4.9.6. “No schema” is the pitch. “Thin schema” is the install.

    What “retroactive” means in a plugin

    Most WordPress SEO plugins generate JSON-LD at request time. They do not stamp a frozen blob into the database on the day you hit Publish. Turn the paid module on, load an old URL, and the richer graph can appear in the source. That is the honest version of “the upgrade works retroactively.”

    What it is not:

    • It is not Google Search Console requesting a recrawl of every summer URL.
    • It is not an AI Overview or a ChatGPT citation flipping overnight.
    • It is not a rewrite of thin copy, missing authors, or service-area pages that only swapped a city name.
    • It is not a guarantee that Rich Results Test will pass. Invalid or empty fields still fail.

    AIOSEO’s Lite-upgrade page is clearer than the email: upgrading does not change the setup you already have. It unlocks modules on top. Believe that sentence. Do not believe “gets better tonight” as a traffic forecast.

    WHAT A KEY UNLOCKS VS WHAT A PAGE STILL NEEDS 1 PLUGIN FLAG schema module on audit tab visible 2 VALID GRAPH required fields filled Rich Results Test 3 TRUE PAGE entities, NAP, FAQ answers a real query 4 INDEX / CITE crawl + eligibility not a license event The sale sells layer 1. Operators get paid on layers 2 through 4.

    What Basic actually buys in 2026

    Checked on aioseo.com/pricing the morning of 7 September 2026. First-year Basic is $49.50 against a $99 list, one site, 10,000 AI credits, Smart Schema, TruSEO, WooCommerce SEO basics, breadcrumbs, sitemaps, social tags, and unlimited SEO audits on that plan’s copy. Plus adds Local Business SEO and Author SEO. Pro adds Link Assistant, advanced redirects, video and news sitemaps. Elite adds Search Statistics and rank tracking. WordPress.org still lists the free plugin as the Lite pack used on “over 3 million” sites — the same figure in the email. Paid plans carry a 14-day money-back line in AIOSEO’s own materials.

    Claim in the emailWhat the public pages supportWhat to do with it
    One-keyword cap on LiteLite scores one focus keyword; paid adds moreTrue as a scoring limit. Google never saw only one keyword because you typed one in TruSEO.
    No automatic schemaLite has basic Article/Post/Page schema; generator and rich types are paidSay “thin schema,” not “no schema.”
    No full site auditSite Audit is a paid moduleTrue. Run it after the key, then fix pages, do not screenshot the score.
    Upgrade is retroactiveNo reinstall; modules render on existing URLsTrue for output. False as a ranking promise.
    Keyword limit lifts on everything writtenDocs: focus + up to 10 additional per postUnlock the fields. Do not spray ten synonyms into old posts.
    Basic is $49.50 for a limited time (reg. $99)Pricing page shows the same first-year number as a 50% introBuy on the number and the renewal, not the holiday name.
    The email is a sales wrapper around real gates. Quote the docs when you brief a client.

    Why this matters if you already run Rank Math

    Tygart Media runs Rank Math on this site. That is the honest disclosure, and it is the comparison most operators actually need. Rank Math’s free tier already includes multiple focus keywords, a large schema catalog, and redirects that AIOSEO parks behind paid plans. Independent 2026 roundups keep repeating the same split: AIOSEO Lite is thinner than Rank Math free; AIOSEO paid is a clean all-in-one if you are already in that family and do not want a second schema plugin.

    Do not stack AIOSEO and Rank Math. Do not stack either with Yoast. Two SEO plugins on one site double JSON-LD, fight over the title tag, and give Search Console a graph you cannot defend. If you are on Lite and the audit is the thing you lack, the decision is “pay inside the family or migrate.” It is not “install both for Labor Day.”

    The AEO and GEO problem the sale does not name

    Answer engines and generative engines do not award a rich result to a plugin brand. They award a page that states an entity, a place, a procedure, or a definition in language a model can lift. Schema is the label on that statement. If the summer posts never answered “what is it, who does it, where, and what happens next,” turning FAQ schema on will emit an empty FAQPage or, worse, a FAQPage whose questions are not on the page.

    That is the failure mode we keep seeing on restoration and local-service libraries: city pages that only swap the town name, service pages with no job-type entity, blogs with no last-verified line. A license key will happily wrap that in JSON-LD. Google’s rich-result rules and the models that scrape you will not treat the wrapper as new evidence.

    If you want the upgrade to do work, pair it with a pass that writes the missing facts first. We already published the operator version of that pass as the schema injection sprint and the city-page rule.

    What to do this week instead of arguing with the banner

    1. Name the plugin you already run. If it is Rank Math or Yoast Pro, ignore the AIOSEO Lite email. You are not the audience.
    2. If it is AIOSEO Lite, export a 20-URL sample of summer posts. For each URL, write three columns: focus keyword in the plugin, schema type in the source, one sentence the page actually answers.
    3. Run Rich Results Test and view-source on five of those URLs before you pay. Know the baseline.
    4. If you buy Basic, add the key, then re-test the same five URLs. Confirm the graph changed. Do not add ten extra keywords to every post on day one.
    5. Use Site Audit as a punch list, not a score. Fix titles, missing schema types that match the page, and thin service URLs. Then request indexing on the URLs you actually changed.
    6. Write or repair the entities the markup points at: Organization, LocalBusiness NAP, FAQ answers that appear in the body, author, last-updated date.

    FAQ

    Does an AIOSEO upgrade fix old posts automatically?

    It unlocks paid modules on those posts. Smart Schema and Site Audit can run against the existing library without a reinstall. Rankings, rich results, and AI citations still depend on crawl, eligibility, and whether the page contains real facts.

    Does AIOSEO Lite include any schema?

    Yes. Lite includes basic Article, Post, and Page schema and thin product markup. The Schema Generator and richer types sit on paid plans.

    How many TruSEO keywords do you get after you pay?

    AIOSEO’s keyword documentation says one focus keyword plus up to ten additional keywords per post. Marketing pages sometimes say “unlimited.” Use the doc when you set a process.

    Is Basic $49.50 only for Labor Day 2026?

    The email called it a Labor Day sale. The public pricing page the same morning already listed Basic at $49.50 against a $99 list as a first-year intro. Confirm the renewal price at checkout. AIOSEO states a 14-day money-back window on paid plans.

    Should you install AIOSEO next to Rank Math to get the sale?

    No. Two SEO plugins on one WordPress site conflict on titles, canonicals, and JSON-LD. Stay in one family or migrate. Do not stack.

    Close

    AIOSEO is allowed to sell a key. Operators are not required to treat the key as a content strategy. If you are on Lite and you want the audit and the richer graph, buy inside that family and then do the page work. If you are already on a fuller free tier, the email is not your queue.

    Turn markup on only after the page can stand without it.


    Sources

    Will Tygart — Tygart Media. Written 7 September 2026 from the Command Center. Tygart Media runs Rank Math on this site. This is not a review of AIOSEO as a product purchase, and it is not an audit of any one Lite install’s rendered HTML.

  • SiteBoost — Site Connection & Audit

    SiteBoost — Site Connection & Audit

    SiteBoost — Site Connection & Audit

    $297

    Delivered by email after checkout.

    Buy Now →

    Secure checkout via Square — all major cards accepted

    You can copy this method and connect and audit the site yourself. Buy Now is Will doing the one-time setup: Application Password, REST API check, full inventory, and the baseline reports.

    Site Connection and Audit is a service. Square lists it as a one-time setup at $297. It is the front door for every other SiteBoost SKU. The public vertical pages include it inside the pilot. Alone, it is how a site gets on the board without anyone rewriting a post yet.

    Self-hosted WordPress only. REST API on (the default). Squarespace, Wix, and Webflow are not compatible. The /siteboost/ hub is blunt about that.

    How Will connects a site

    wp-connect is the gateway skill. Nothing else in the WordPress stack runs until this works. The 23-site stack article on tygartmedia.com puts a new site at about 20 minutes: Application Password, registry, first audit.

    1. Confirm the site is self-hosted WordPress. Open /wp-json/wp/v2/ in a browser. You should see a JSON index, not a 404. If the REST API is blocked, stop and fix that before anyone shares a password.
    2. In WordPress, go to Users → Profile (or Users → Application Passwords, depending on version). Create an Application Password for a user who can edit posts. Name it something you will recognize later, like “SiteBoost” or “REST audit.” Copy it once. This is not the login password. wp-connect will not use the login password.
    3. Test the connection. GET https://yoursite.com/wp-json/wp/v2/users/me with HTTP Basic auth, username plus the Application Password. A 200 with your user object means you are in. A 401 means the password or user is wrong. A 403 often means a security plugin is blocking REST for that user.
    4. Confirm you can list posts: GET /wp-json/wp/v2/posts?per_page=1&status=publish. If users/me works but posts 403, the user is missing the edit_posts capability.
    5. Write down: site URL, WordPress version if you can see it, hosting (WP Engine, SiteGround, Flywheel, Kinsta, Cloudflare in front, or other), whether Yoast / Rank Math / AIOSEO is present, and who holds the Application Password. Do not put the password in a public doc.

    The public SiteBoost pages name the hosts they have used this pattern on: WP Engine, Flywheel, SiteGround, Cloudflare-proxied sites, GCP Compute Engine, DigitalOcean, Kinsta, bare metal. The requirement is the REST API, not a specific host.

    Do not install a plugin to “help” the connection. SiteBoost’s rule is no plugins added to the client site. Application Passwords are built into WordPress 5.6 and later.

    What the audit checks

    wp-site-audit is the skill that runs at the start of any new site. Fetch all published posts (per_page=100, walk pages). For each post, score the same fields:

    • Word count. Thin is under 500 words.
    • Title tag and slug quality.
    • Excerpt / meta description present, empty, or polluted (raw JSON or leftover code in the excerpt is a real pattern; wp-clean-meta exists to strip it).
    • Categories and tags. Uncategorized is a fail. wp-taxonomy-fix wants 1 to 2 categories and 5 to 10 tags.
    • Featured image present or not.
    • Internal links in (orphans: nothing points here) and internal links out (dead-end posts).
    • Schema present or not, and which types if you can see them (Article, FAQPage, HowTo, BreadcrumbList, Speakable).
    • FAQ section present or not.
    • Outbound source citations present or not.

    Also roll up site-level numbers: total published posts, total pages (count them, do not edit them), taxonomy health (how many categories, how many unused tags, how many posts still Uncategorized).

    The 60-point WordPress SEO Audit Template on tygartmedia.com is the longer human version of this, in six categories: Technical, On-Page, Content, Schema, Local, Analytics. Tools it wants open: Google Search Console, Bing Webmaster Tools, PageSpeed Insights, your SEO plugin, validator.schema.org, an incognito window. Order matters: Technical first, then On-Page, Content, Schema, Local, Analytics. A quick pass is the high-impact rows. A full pass is a few hours the first time. Re-audit quarterly, and after a redesign, a migration, or a plugin purge.

    SiteBoost’s service audit, as sold, is the content-and-baseline cut of that: inventory, schema gaps, FAQ gaps, before numbers. It is not a Core Web Vitals engagement and it is not a local-pack rebuild. If you want the 60-point sheet as a Notion checklist, that is a different SKU (WordPress SEO Audit Template).

    The four reports you should produce

    The public SiteBoost pages name these deliverables. If you are doing this yourself, write the same four:

    1. Content inventory. One row per published post. URL, title, date, word count, category, meta yes/no, FAQ yes/no, schema yes/no, internal links in/out, notes.
    2. Schema gap report. Which posts have no JSON-LD. Which have plugin-bloated or invalid markup. Priority by page type (Article on posts, FAQPage where a FAQ exists or should, HowTo only on real procedures).
    3. FAQ gap report. Which posts have no Q and A block and no FAQPage schema. Those are the AEO queue.
    4. Before baseline. Search Console coverage and the queries / URLs you will watch. A short note on AI visibility for a handful of real questions in your market (do you show up in Perplexity or an AI Overview today?). Write the date. This is what a 60-day report compares to.

    Priority the way wp-site-audit does: Critical (taxonomy / metadata), High (SEO / AEO / thin content), then optimization (links, expansion). The recommended next skills, if you are running Claude, are wp-taxonomy-fix, wp-content-expand, wp-schema-inject, wp-interlink, then the refresh stack.

    What you do not do in this SKU

    • Do not rewrite posts. That is Existing Post Optimization or the Pilot.
    • Do not publish new articles. That is New Article Publishing.
    • Do not edit Pages, bios, or service templates unless the owner asked in writing. Toolbox rule: posts, not pages.
    • Do not leave the Application Password in chat logs or a public Notion page.
    • Do not claim results. You do not have a after yet. You have a before.

    If you want Will to connect and audit

    You can create the Application Password and fill a spreadsheet this afternoon. Buy Now is Will doing the connection and the four reports, then emailing you the baseline and the recommended ten. Same Square button at the top. $297, one time.

    The Pilot Bundle includes this connection plus ten post optimizations and the 60-day report. The Monthly Retainer assumes the site is already connected. If you only want the skill files so your own Claude can connect and audit, that is the WordPress SEO Skill Pack (Starter has wp-connect, wp-post-fetch, and wp-site-audit).

    Frequently Asked Questions

    How does it work?

    After checkout, I reach out by email within 2 business days with the intake details and a start date.

    Is there a refund policy?

    Before work starts on your posts, full refund on request. Once a post is optimized or published, that portion of the fee is earned.

    Related: SiteBoost. Also SiteBoost — Pilot Bundle.

  • WordPress SEO Skill Pack – Pro

    WordPress SEO Skill Pack – Pro

    >

    Direct Answer / Product Definition

    WordPress SEO Skill Pack — Pro by Tygart Media is a $79 Square bundle of 14 Claude skills for self-hosted WordPress that run Will Tygart’s full post refresh pipeline: on-page SEO, AEO answer packets and FAQs, GEO entity and citation passes, JSON-LD schema injection, taxonomy cleanup, and hub-and-spoke interlinking. The wp-full-refresh skill orchestrates SEO → AEO → GEO → schema → interlink on one post; Tygart Media emails the .skill files within 24 hours of checkout.

    WordPress SEO Skill Pack — Pro

    $79

    14 .skill files delivered by email within 24 hours after Square checkout.

    Buy on Square — $79 →

    Secure checkout via Square — all major cards accepted

    Tygart Media documents the full three-layer refresh method on this page so operators can run SEO → AEO → GEO → schema → interlink in wp-admin or Claude. The $79 Buy on Square option delivers 14 packaged .skill files by email within 24 hours of checkout.

    Pro is the middle tier of the WordPress SEO Skill Pack by Will Tygart. It includes everything in Starter ($29), plus wp-aeo-refresh, wp-geo-refresh, wp-schema-inject, wp-taxonomy-fix, wp-interlink, wp-full-refresh, wp-content-pipeline, content-brief-builder, and content-quality-gate—the production sequence Tygart Media uses on a single WordPress post.

    Starter vs Pro vs Agency

    Tier Price Skills AEO / GEO / schema
    Starter $29 5 (connect, audit, clean-meta, seo-refresh) No
    Pro (this product) $79 14 incl. wp-full-refresh + pipeline Yes — full stack
    Agency $149 Pro + expand + new-site-setup + guides Yes + client onboarding

    Install and connect

    Same requirements as Starter. Claude Pro / Max / Team. Self-hosted WordPress. Application Password. Drop the skill files into Claude Desktop (Cowork) or Claude Code. Say “connect to my WordPress site.” wp-connect tests /wp-json/wp/v2/users/me. Stop if that is not a 200.

    The sales page’s operator line for this tier: “full refresh post 123.” That trigger is wp-full-refresh. It is the orchestrator. Do not start there on a site you have never audited.

    The 14 skills, in the order you should actually use them

    Foundation (from Starter)

    • wp-connect. Authenticate. Gateway.
    • wp-post-fetch. Load one post with context=edit.
    • wp-site-audit. Inventory, orphans, thin posts, missing meta, schema gaps. Run first on a new site.
    • wp-clean-meta. Strip excerpt pollution before you write new meta.
    • wp-seo-refresh. Title (about 60 characters), meta (about 155 to 160), slug, H2/H3, keyword in the first 100 words.

    Taxonomy, before you interlink

    wp-taxonomy-fix has two modes: one post, or site-wide. Design 3 to 7 top-level categories. Each post gets 1 to 2 categories (never Uncategorized) and 5 to 10 tags (topic, technology, use case, audience, format). Create missing terms via the API, assign, then normalize duplicate tags. Toolbox lists this as a prerequisite for wp-interlink. If categories are a junk drawer, your link graph will be a junk drawer.

    The same skill can write two-layer descriptions on category and tag archives: a 140 to 160 character meta excerpt, then a 400 to 600 word hub body with internal links to the top posts in that cluster. PATCH /wp/v2/categories/{id} and /wp/v2/tags/{id} on the description field. Most themes print that above the post grid.

    The three-layer refresh

    wp-aeo-refresh. Direct-answer opening, question H2s, FAQ pairs, list-shaped answers, FAQPage schema. SiteBoost existing-post copy uses a 40 to 60 word definition box and 6 to 8 FAQs. The older publish skill used 3 to 5. Use the PAA list in front of you, not a fake number.

    wp-geo-refresh. Entity saturation, factual density, context richness, source attribution, topical breadth, semantic clarity. Schema it adds: richer Article metadata, entity markup, Speakable. The citing-sources article is the house rule: name the organization, link the primary source, sources list at the bottom, visible last-updated, dateModified in schema. No fabricated stats.

    wp-schema-inject. Detect the type the post actually is and inject JSON-LD. The schema injection sprint’s menu: FAQPage, Article, HowTo, Service, LocalBusiness, Speakable, BreadcrumbList. Validate with Google’s Rich Results Test. Fix failures. Do not leave plugin-bloated invalid markup in the body.

    wp-interlink. Hub and spoke, orphan resolution, contextual links. The Copilot / cluster articles on tygartmedia.com use 3 to 5 related posts in the same topical group, descriptive anchors. Do this after the post has a real topic and a real category, not before.

    wp-full-refresh. Runs SEO + AEO + GEO + schema + interlink in that sequence on one existing post. This is the “do everything to this post” skill. Use it when the audit already said the post is worth the pass.

    New content, not just refreshes

    content-brief-builder. Keyword research to a brief, before anyone writes. Feeds the pipeline. A brief that cannot name the query, the intent, the PAA list, and the internal-link targets is not a brief.

    wp-content-pipeline. Draft to live: write → SEO → AEO → GEO → schema → taxonomy → interlink → publish. Toolbox order. Same six-step human workflow as the New Article Publishing page, encoded as a skill chain.

    content-quality-gate. Pre-publish. Unsourced claims and fabricated numbers get flagged. Run this before any publish, batch or single. The operator guide’s failure mode is the same: fake density backfires when an AI system checks you.

    A Pro session on one site

    1. Connect. Audit. Clean polluted excerpts.
    2. Fix taxonomy on the posts you are about to touch (and on the hub category if it has no description).
    3. For each chosen existing post: wp-full-refresh, or the layers by hand in SEO → AEO → GEO → schema → interlink order.
    4. For a new article: brief → pipeline → quality gate → publish.
    5. IndexNow on every URL you created or updated. Confirm in Bing Webmaster Tools.
    6. Log before/after: title, meta, word count, FAQ count, schema types, internal links added.

    The operator guide’s weekly rhythm still applies if you are using Pro on a real site: Monday audit, Tuesday to Thursday execute, Friday verify. Pro is the toolkit. It is not a retainer.

    What Pro still does not include

    Agency adds three reference guides (SEO, AEO, GEO), wp-content-expand (deepen thin posts without overwriting), and wp-new-site-setup (client onboarding). If you are onboarding other people’s sites every week, that is the Agency door. If you want Will to run the posts instead of running skills, that is SiteBoost.

    Frequently Asked Questions

    What is the WordPress SEO Skill Pack — Pro?

    WordPress SEO Skill Pack — Pro by Tygart Media is a $79 bundle of 14 Claude skills that run the production post refresh sequence on self-hosted WordPress: SEO, AEO, GEO, schema injection, taxonomy fix, and interlink, plus wp-full-refresh orchestration and a new-content pipeline with a quality gate.

    What is the difference between Starter and Pro?

    Starter ($29) includes five skills for connect, audit, clean-meta, and on-page SEO only. Pro ($79) adds wp-aeo-refresh, wp-geo-refresh, wp-schema-inject, wp-taxonomy-fix, wp-interlink, wp-full-refresh, content-brief-builder, wp-content-pipeline, and content-quality-gate.

    What does wp-full-refresh do?

    wp-full-refresh is Tygart Media’s orchestrator skill. On one existing post it runs SEO refresh, then AEO refresh (definition box and FAQ-oriented content), then GEO refresh (entity saturation and citations), then schema injection, then interlinking—in that fixed order.

    Does Pro include Agency onboarding skills?

    No. Tygart Media’s Agency tier ($149) adds reference guides, wp-content-expand for thin posts, and wp-new-site-setup for client onboarding. Pro is the production refresh and pipeline stack without those agency-only skills.

    If you want the packaged files

    You can run every layer above in the block editor with a checklist. Buy Now is the 14 .skill files delivered by email after checkout. Same Square button at the top. $79.

    Starter is the five-skill on-page subset if you only need connect / audit / SEO refresh. Agency is this stack plus onboarding and expansion.

    $79

    14 .skill files — email delivery within 24 hours via Square.

    Buy on Square — $79 →

    Related Products

    Skill Pack ladder: Hub · Starter ($29) · Agency ($149) · Tygart Media Shop.

    Author: Will Tygart, Founder of Tygart Media — the same AEO/GEO/SEO skill stack used on the Tygart Media WordPress fleet.

    Related on Tygart Media: how to use Claude · Anthropic API key.

  • SiteBoost — Pilot Bundle (Best Value)

    SiteBoost — Pilot Bundle (Best Value)

    SiteBoost — Pilot Bundle (Best Value)

    $597

    Delivered by email after checkout.

    Buy Now →

    Secure checkout via Square — all major cards accepted

    You can copy this method and run a ten-post pilot yourself. Buy Now is Will connecting the site, picking the ten, running the three-layer pass on each, and sending the 60-day impact report.

    The Square catalog names this SKU “Connection + 10 Posts.” The /siteboost/ hub calls it the best-value door at $597. The public vertical pages (law firms and the rest of the cluster) spell out the same package: Site Connection and Audit, ten existing-post optimizations, and a 60-day impact report. They price the pieces at $767 if you bought them separate ($297 audit + 10 × $47). The bundle is the cheaper way to get a first measured pass.

    Stack of unmarked folders and a laptop on an agency desk

    What the pilot is, and is not

    It is a retrofit of ten published posts. SEO + AEO + GEO + schema on each. Changes via the WordPress REST API. No plugin left behind. Results looked at around day 60. It is not a retainer, not a redesign, and not ten brand-new articles. New Article Publishing is a different SKU. The monthly retainer is the ongoing door after you like the pilot.

    Self-hosted WordPress only. Squarespace, Wix, and Webflow are out. Posts, not Pages, unless you put a specific Page in writing.

    How to run the pilot yourself

    Week 0. Connect and baseline

    Do the connection and audit first. The method is on the Site Connection and Audit page. Short version:

    1. Create a WordPress Application Password (Users → Profile). Not the login password.
    2. Test GET /wp-json/wp/v2/users/me with that user and app password. If that fails, stop. Nothing else will work.
    3. Pull published posts (per_page=100, paginate if you have more). Inventory every post: title, slug, word count, excerpt/meta, categories, tags, featured image, internal links in, internal links out, schema present or not, FAQ present or not.
    4. Write four artifacts and keep them. Content inventory. Schema gap report. FAQ gap report. Before baseline (the numbers you will compare at day 60: rankings and impressions you can actually see in Search Console, plus a note on AI visibility if you check Perplexity / ChatGPT / AI Overviews on a few queries).

    wp-site-audit’s priority stack: Critical = taxonomy and metadata problems. High = SEO / AEO / content quality. Then link and expansion opportunities. Use that order when you pick the ten.

    Pick the ten

    Highest-opportunity existing articles, with your approval before anyone starts rewriting. That is the rule on the public SiteBoost pages. A practical pick list, from the same audit fields:

    • Posts that already get impressions but have empty meta, no FAQ, and no schema. Those move first.
    • Posts over 500 words that are still missing the AEO and GEO layer. Do not spend the pilot on stubs.
    • Posts that sit on a real query (you can name the keyword). Skip diary posts and leftover test content.
    • A mix across your actual topic pillars, not ten posts from one tag.

    Write the ten URLs down. Get a yes. Then do not swap them mid-pilot unless a post is broken.

    Weeks 1 to 3. Ten existing-post passes

    For each of the ten, run the same method as Existing Post Optimization:

    1. SEO: title 50 to 60, slug, meta 140 to 155, H2/H3, keyword in the first 100 words.
    2. AEO: 40 to 60 word definition box, question H2s with 40 to 60 word answers, 6 to 8 FAQ pairs, FAQPage JSON-LD.
    3. GEO: named entities, sourced facts, speakable blocks, LLMS.txt comment, last-updated + dateModified.
    4. Article schema. Validate. Two to five internal links into the rest of the cluster. IndexNow on the update.

    Sequence on a single post is SEO, then AEO, then GEO, then schema, then interlink. That is wp-full-refresh. Do not GEO a post whose title and meta are still empty.

    If a chosen post is under 500 words, expand it first (append real sections, do not overwrite) or swap it for a thicker post on the same topic. Thin content wastes a slot.

    Day 60. Impact report

    The public pages measure three things: traditional rankings and impressions, People Also Ask / snippet placements, and AI citation visibility. Pull Search Console for the ten URLs (and the queries they were aimed at) versus the before baseline. Recheck the same AI prompts you wrote down in week 0. Do not invent a win. If nothing moved, say so. The report is the point of a pilot. You are deciding whether a retainer is worth it.

    Traditional SEO on competitive terms is often 60 to 90 days. The same pages note that FAQPage / PAA and some AI crawlers can show sooner (they cite 2 to 4 weeks for PAA). Treat those as ranges from the public SiteBoost copy, not a guarantee.

    What you should have on disk at the end

    • Connection notes (site URL, that an app password was created, who holds it).
    • The four audit artifacts from week 0.
    • The list of ten URLs and the before/after for each (title, meta, word count, FAQ count, schema types).
    • The 60-day comparison. What moved, what did not, what you would do next (more existing posts, new articles, or stop).

    If you want Will to run the pilot

    You can do every step above with an Application Password and a spreadsheet. Buy Now is the packaged pilot: Will connects, audits, agrees the ten with you, runs the three layers on each post, and sends the 60-day impact report. Same Square button at the top. $597.

    After a pilot you like, the Monthly Retainer is 10 existing-post passes plus 4 new articles per month. If you only need the connection and the baseline, buy Site Connection and Audit. If you only need one post touched, buy Existing Post Optimization.

    Frequently Asked Questions

    How does the pilot work?

    After checkout, I reach out by email within 2 business days to kick off: I connect the site, we agree on the ten posts, I run the three-layer pass on each, and you get the 60-day impact report.

    Is there a refund policy?

    Before I start the pilot work, full refund on request. Once posts are in production, the fee is earned — the 60-day report is yours either way.

    Related: SiteBoost. Also SiteBoost — Site Connection & Audit.

  • SiteBoost — New Article Publishing

    SiteBoost — New Article Publishing

    SiteBoost — New Article Publishing

    $97

    Delivered by email after checkout.

    Buy Now →

    Secure checkout via Square — all major cards accepted

    You can copy this method and publish the article yourself. Buy Now is Will researching, writing, optimizing, and publishing one new WordPress post for you.

    SiteBoost New Article Publishing is a new post, not a refresh of something already live. The /siteboost/ hub prices it at $97 per article. The same three layers as an existing-post pass still apply. You just start from a brief instead of from a published URL.

    The six-step workflow

    This is the unified content workflow from the operator’s guide on tygartmedia.com. One draft. SEO, AEO, and GEO built in. Not three versions of the same piece.

    1. Keyword and intent

    Name the target query. Classify intent: informational, navigational, commercial, or transactional. Look at what already ranks and match the format Google is already rewarding. This step is ordinary SEO. Do not skip it because you are “writing for AI.”

    2. Question landscape

    Search the keyword. Collect People Also Ask questions, related searches, and autocomplete variants. Group them. Those groups become H2s and FAQ items. The operator guide budgets 15 to 20 minutes here. This is the AEO setup. If you skip it, you will write headings that feel like an outline and not like queries.

    3. Write with the direct-answer pattern

    Write the article once, with both SEO and AEO in the draft:

    • Primary keyword in the H1 and in the first 100 words.
    • Every major section is a question-shaped H2, then a 40 to 60 word answer, then the depth.
    • Internal links with descriptive anchors to posts that already exist on the site. If the site is new and there is nothing to link to, note the gaps. Do not invent destinations.
    • A 40 to 60 word definition box near the top.

    The WordPress Publish skill’s quality bar before anything goes live: title 50 to 60 characters with the primary keyword, meta 140 to 160 characters, a unique H1, at least one direct-answer section, a FAQ with 3 to 5 Q and As on a new article (SiteBoost existing-post passes use 6 to 8; for a new article start at 3 to 5 and add more if the PAA list is real), Article JSON-LD, FAQPage JSON-LD, and at least one cited fact per major section.

    4. GEO enhancement

    After the draft exists, do a factual-density pass. The operator guide budgets 20 to 30 minutes on a 1,500-word article. For every claim: a number, a date, a named organization, or cut it. The citing-sources article is the house rule:

    1. Name the organization in the text, not only in a hyperlink.
    2. Link the primary source. If it is paywalled, link a credible secondary that cites it.
    3. Put a sources list at the bottom.
    4. Show a last-updated date near the byline.
    5. Put datePublished and dateModified in Article schema.

    Do not add fake statistics to look dense. The operator guide calls that out as a backfire when AI systems cross-check you.

    5. Schema

    Minimum on a new SiteBoost article: Article (or BlogPosting) plus FAQPage. Add HowTo if the piece is genuinely step-by-step. Add BreadcrumbList if the theme does not already emit it. Add Speakable on the definition box and one other self-contained block. JSON-LD in the post, validated with Google’s Rich Results Test. The schema injection sprint is the same sequence: pick the type, generate valid JSON-LD, inject, validate, fix failures.

    SiteBoost content standards also embed an LLMS.txt HTML comment on the page. A short seed paragraph, not a second article.

    6. Pre-publish audit, then publish

    Run the three-layer checklist. Title, meta, headings, snippet readiness, factual density, schema validation, entity signals. Then publish as a post, not a page.

    The production pipeline used on Tygart Media sites is: brief (content-brief-builder) to draft to SEO to AEO to GEO to schema to taxonomy to interlink to publish (wp-content-pipeline). content-quality-gate sits in front of publish and flags unsourced claims. You can do that as a human checklist if you are not running Claude skills.

    Taxonomy and internal links

    Assign 1 to 2 categories that are real content pillars, never Uncategorized. Assign 5 to 10 tags that cover topic, use case, audience, and format. That is the wp-taxonomy-fix rule. Then place 3 to 5 internal links to related posts in the same cluster, plus outbound links to the sources you named. Hub and spoke. The new post should not be an orphan on day one, and it should not be a dead end.

    IndexNow

    On publish, ping IndexNow. Official plugin, or Rank Math / Yoast Instant Indexing. Confirm the URL in Bing Webmaster Tools. New posts that sit in a sitemap waiting for a crawl waste the first week.

    What “done” looks like on one new article

    1. Brief: target keyword, intent, PAA list, existing internal-link targets, sources you will actually cite.
    2. Draft written with definition box, question H2s, and sourced facts.
    3. Title 50 to 60, meta 140 to 160, slug clean.
    4. FAQ section + FAQPage schema. Article schema with both dates.
    5. Categories and tags set. 3 to 5 internal links. Sources list.
    6. Rich Results Test pass. IndexNow ping. Status = publish (or draft if you want a human read first).

    Self-hosted WordPress only. Squarespace, Wix, and Webflow are not this SKU. Do not modify existing Pages to “make room” for the article. Publish a post.

    If you want Will to write and publish it

    You can run the six steps in your own editor. Buy Now is the packaged, done-for-you article: Will writes it, runs the three layers, publishes it to your site, and emails you the URL. Same Square button at the top. $97 per article.

    A single new post next to a neglected library is a weak play. If the existing posts are empty of FAQ, schema, and meta, optimize those first (Existing Post Optimization, or the Pilot Bundle for ten). If the site is not connected yet, start with Site Connection and Audit.

    Frequently Asked Questions

    How does it work?

    After checkout, I reach out by email within 2 business days with the intake details and a start date.

    Is there a refund policy?

    Before work starts on your posts, full refund on request. Once a post is optimized or published, that portion of the fee is earned.

    Related: SiteBoost. Also SiteBoost — Existing Post Optimization.

  • SiteBoost — Existing Post Optimization

    SiteBoost — Existing Post Optimization

    SiteBoost — Existing Post Optimization

    $47

    Delivered by email after checkout.

    Buy Now →

    Secure checkout via Square — all major cards accepted

    You can copy this method and do it yourself on one published WordPress post. Buy Now is Will running the same three-layer pass on that post and pushing the changes live for you.

    SiteBoost Existing Post Optimization is one post, already on your site. Not a new article. Not a redesign. The public SiteBoost pages call this the post-publish layer: SEO, then AEO, then GEO, written back through the WordPress REST API. No plugin install. Self-hosted WordPress only.

    What you are optimizing

    Pick one published post (post type post, not a Page). Fetch it. Read it as it sits today. Then run three passes in this order. The operator guide on tygartmedia.com is explicit: the layers are concentric, not three separate rewrites. One piece of content. Structure, density, and markup.

    Pass 1. SEO

    This is the foundation. Do not skip it to chase snippets or AI citations. The SiteBoost vertical pages and the wp-seo-refresh skill agree on the same fields:

    1. Title tag. Primary keyword front-loaded. Target 50 to 60 characters. This is the H1 / browser title, not a clever headline that hides the query.
    2. Slug. Lowercase, hyphenated, keyword-rich. Change it only if the current slug is junk. If the post already ranks on the old URL, leave the slug and add a redirect if you must change it.
    3. Meta description. 140 to 155 characters on the SiteBoost sales pages, 155 to 160 in the wp-seo-refresh skill. Write a real sentence a human would click. Empty meta is the most common miss.
    4. Heading structure. Real H2 / H3 hierarchy. No skipped levels. No H2 that is just a label with no answer under it.
    5. Primary keyword in the first 100 words.
    6. Note internal link opportunities. You will place them after the GEO pass, not while you are still rewriting the title.

    Workflow from wp-seo-refresh: fetch the post with context=edit, analyze current on-page SEO, name the target keyword from the actual topic, generate the new title / meta / headings, write the post back, then report what changed.

    Pass 2. AEO

    Answer Engine Optimization. Same post. Restructure so a featured snippet or a People Also Ask box can lift a clean answer.

    1. Add a 40 to 60 word definition box near the top. One sentence that answers “what is this?” without a wind-up.
    2. Turn implied questions into H2s. Under each H2, put a 40 to 60 word direct answer, then the depth.
    3. Add 6 to 8 FAQ pairs that match real People Also Ask questions for the topic. The older WordPress Publish skill used 3 to 5. The SiteBoost vertical pages use 6 to 8. Use 6 to 8 on a SiteBoost-style pass.
    4. Add FAQPage JSON-LD for those pairs. Question and acceptedAnswer. Valid markup, not a plugin dump.

    wp-aeo-refresh also looks for list-shaped answers and natural-language replies a voice result can read. If a section is a process, a numbered list beats a paragraph.

    Pass 3. GEO

    Generative Engine Optimization. Make the post citable by ChatGPT, Perplexity, Claude, Gemini, and Google AI Overviews.

    1. Entity saturation. Name the real organizations, standards, statutes, places, and tools the topic depends on. Entity density, not keyword stuffing.
    2. Factual density. Replace “many companies” and “studies show” with a named source and a number you can actually point to. If you cannot name the source, cut the claim. The citing-sources article on tygartmedia.com is the rule: name the organization in the text, link the primary source, put a sources list at the bottom.
    3. Speakable blocks. Short, self-contained sentences an AI or a voice assistant can lift without the rest of the page.
    4. LLMS.txt as an HTML comment. A seed paragraph the page can carry for LLM citation signals. SiteBoost content standards put this on every page.
    5. Visible last-updated date near the byline, and dateModified in Article schema that matches a real edit. Do not bump the date without changing the content.

    wp-geo-refresh also asks for context richness (define the term, do not just mention it) and semantic clarity (connect related concepts in the same section).

    Schema and IndexNow

    After the three passes, the post should carry Article JSON-LD (headline, author, publisher, datePublished, dateModified) plus FAQPage. BreadcrumbList if the theme does not already emit it. Validate with Google’s Rich Results Test before you walk away. The schema injection sprint on tygartmedia.com is the same rule: pick the type the content actually is, inject JSON-LD, validate, fix failures.

    Then tell the engines the URL changed. IndexNow: official WordPress plugin, or the IndexNow / Instant Indexing toggle in Rank Math or Yoast. Confirm the ping in Bing Webmaster Tools. A publish or an update that nobody recrawls is a pass you did for yourself.

    What you do not touch

    Posts, not Pages. SiteBoost does not rewrite service pages, bios, or the homepage unless someone asked in writing. Do not install a plugin to do this. Do not empty the excerpt into raw JSON. If the excerpt is polluted, strip it (that is the wp-clean-meta job) and write a real meta description.

    A honest one-post checklist

    1. Current title, slug, meta, word count, FAQ count, schema present or not. Write those six lines down. That is your before.
    2. SEO pass. Title, slug, meta, headings, first 100 words.
    3. AEO pass. Definition box, question H2s, 6 to 8 FAQs, FAQPage schema.
    4. GEO pass. Named entities, sourced facts, speakable lines, LLMS.txt comment, last-updated + dateModified.
    5. Two to five internal links to related posts on the same site, descriptive anchors, plus one or two outbound links to primary sources.
    6. Validate schema. Ping IndexNow. Write the after: new title, new meta, new word count, FAQ count, schema types.

    If the post is under 500 words, expand it before you call the SEO pass done. wp-content-expand’s rule: find H2s under 150 words, add 250 to 400 words of real section, append, do not overwrite. Thin posts do not earn the AEO or GEO layer.

    If you want Will to do this post

    You can run the three passes in the block editor this afternoon. Buy Now is the packaged, done-for-you version: Will connects, refreshes that one existing post through the REST API, and emails you what changed. Same Square button at the top of this page. $47 per post.

    If you have ten posts that all need this, the Pilot Bundle is the volume door. If you do not have a connection or a baseline yet, start with Site Connection and Audit. This SKU assumes the post already exists and you already know which one.

    Frequently Asked Questions

    How does it work?

    After checkout, I reach out by email within 2 business days with the intake details and a start date.

    Is there a refund policy?

    Before work starts on your posts, full refund on request. Once a post is optimized or published, that portion of the fee is earned.

    Related: SiteBoost. Also SiteBoost — New Article Publishing.