Skip to content
TheShopMarketing Guys

Your website

Change the words on any page of your site and see the before and after.

Overview

Your website should say what you do, where you do it, and why people can trust you. It usually falls out of date because changing it meant sending an email and waiting. Now you tell your assistant what's changed, and it edits the page for you.

It reads the page first, so it knows what's there now. Then it checks your change against the same rules our team writes to. It looks at the length, whether the wording is plain, and whether we can back up any claim. If your change passes, it saves your words as you wrote them and shows you the before and after. If it doesn't pass, you get the reason, not a rewrite.

Not sure where something new should go? Ask. It gives you the options and what each one takes.

Some things stay with us on purpose. Your name, address, phone number, and hours have to match your Google listing, so changes there come to us as a request. The same goes for a claim we can't back up yet, like a new warranty. Send us the proof and we'll add it.

Changes here need an active account. If your account is on hold or cancelled, editing pauses until it's back.

You can also do this in your workspace. Look in Site (/workspace).

The tools on this page

Your website: what each tool reads, writes, and asks
ToolReadsWritesAsks you first
List your pagesYesNoNo
Read a pageYesNoNo
See the writing rulesYesNoNo
Ask where it goesYesNoNo
Check a changeYesNoNo
Edit a pageNoYesAlways

List your pages

get_content_mapReads only

What you can ask

  • Which pages on my site are missing FAQs?
  • Show me every service page we have.

What it does

Every page on your site you can edit, and which parts are filled in.

What your assistant sends

FieldRequiredDescription
areaSlugstringNoNarrow the service-in-city list to one city.
include_availablebooleanNoAlso list brands you could add a page for.
Example: what your assistant sends
{}
Example: what comes back
{
  "legend": {
    "empty": "Shown on the page and not filled in yet.",
    "populated": "Shown on the page and filled in."
  },
  "servicePages": [
    {
      "page": {
        "type": "service",
        "serviceSlug": "brake-repair"
      },
      "name": "Brake repair",
      "parentSlug": null,
      "renders": "service page",
      "fields": {
        "custom_title": "populated",
        "overview": "populated",
        "faqs": "empty"
      }
    }
  ],
  "areaPages": [
    {
      "page": {
        "type": "location",
        "areaSlug": "haines-city-fl"
      },
      "city": "Haines City, FL",
      "locationType": "physical_shop",
      "fields": {
        "description": "populated",
        "faqs": "empty"
      }
    }
  ],
  "areaServicePages": [
    {
      "page": {
        "type": "area_service",
        "areaSlug": "haines-city-fl",
        "serviceSlug": "brake-repair"
      },
      "city": "Haines City, FL",
      "service": "Brake repair",
      "fields": {
        "hero_title": "populated",
        "local_faqs": "empty"
      },
      "summary": "partial"
    }
  ],
  "aboutPage": {
    "page": {
      "type": "about"
    },
    "fields": {
      "heroHeadline": "populated",
      "story": "empty"
    }
  },
  "homePage": {
    "page": {
      "type": "home"
    },
    "fields": {
      "hero.headline": "populated",
      "services.headline": "empty"
    }
  },
  "availableBrandsNote": "Catalog makes not enabled for this client. update_page_content on one of them writes its copy and enables it (pass enable: false to write copy and leave it dark).",
  "brandPages": [],
  "next": "get_page_content for one page, advise_content_change before adding anything new."
}

Read a page

get_page_contentReads only

What you can ask

  • What does my brake repair page say right now?
  • Read me the about page.

What it does

What one page says now, how long each part can be, and where its photos and videos go.

What it needs

  • The page you want to read.

What your assistant sends

FieldRequiredDescription
pageobjectYes
Example: what your assistant sends
{
  "page": {
    "type": "site"
  }
}
Example: what comes back
{
  "page": {
    "type": "site"
  },
  "pageType": "site",
  "publicPath": "/",
  "preset": {
    "id": "professional",
    "name": "Professional"
  },
  "fields": {
    "theme.overrides": {
      "shape": "An object of theme tokens, e.g. { \"accent\": \"#ff6600\" }. Only the keys sent change.",
      "state": "populated",
      "fields": [
        "brand",
        "accent",
        "radius"
      ]
    }
  },
  "current": {
    "theme.overrides": {
      "accent": {
        "value": "#f59e0b",
        "source": "preset",
        "label": "Highlight color: links, icons, section labels",
        "accepts": "hex color like #1d4ed8"
      }
    }
  },
  "note": "The site shows the change on its next load.",
  "media": []
}

See the writing rules

get_content_guidanceReads only

What you can ask

  • What are the rules for writing on my site?
  • How should the words on my site sound?

What it does

The rules every change to your site has to pass, and what each refusal means.

What your assistant sends

Nothing. Your assistant just runs it.

Example: what your assistant sends
{}
Example: what comes back
{
  "shape": [
    "Read get_page_content for the page."
  ],
  "floor": "Plain words.",
  "findings": {
    "reject": {},
    "fix": {}
  },
  "rewrites": "Never rewritten.",
  "look_and_feel": "Theme tokens on the site page.",
  "coverage": {
    "cities": [
      "Winter Haven, FL"
    ],
    "shops": []
  },
  "existingCopy": [
    {
      "where": "about page story",
      "text": "We opened on Main Street."
    }
  ]
}

Ask where it goes

advise_content_changeReads only

What you can ask

  • We started doing fleet maintenance. Where should that go on the site?
  • Should financing get its own page?

What it does

Where something new should go on your site: the options, what each one takes, and which one we'd pick.

What it needs

  • What you want on your site, in a sentence.

What your assistant sends

FieldRequiredDescription
intentstringYesWhat the owner wants on the site, as one plain sentence.
pageobjectNoA page the owner already named, if any.
owner_requeststringNoWhat the owner asked for, in their words, one sentence. Optional. Stored with the audit record so their team can see what owners ask for.
Example: what your assistant sends
{
  "intent": "Add a page about fleet maintenance for local businesses"
}
Example: what comes back
{
  "class": "new_service",
  "options": [
    {
      "placement": "a new service page",
      "page": null,
      "why": "Nothing on the site covers fleet maintenance yet. We add the service; then the page takes copy here.",
      "ranking_effect": "high",
      "effort": "medium"
    },
    {
      "placement": "FAQs on Brake repair",
      "page": {
        "type": "service",
        "serviceSlug": "brake-repair"
      },
      "why": "Add the questions those customers ask. AI answers often quote FAQ answers directly.",
      "ranking_effect": "medium",
      "effort": "small"
    }
  ],
  "recommended": 0,
  "facts_needed": [],
  "seo_notes": [
    "Other pages link in automatically when their copy says \"fleet maintenance\"."
  ],
  "geo_notes": [
    "Open with one sentence that says what the service is and where you do it."
  ],
  "questions": [
    "Who do you do fleet maintenance for, and how often do they come in?"
  ]
}

Check a change

validate_page_contentReads only

What you can ask

  • Check this new paragraph before you save it.
  • Will this FAQ pass the rules?

What it does

Check a change to a page without saving it.

What it needs

  • The page you want to check.
  • The words you want to check.

What your assistant sends

FieldRequiredDescription
pageobjectYes
fieldsobjectYesField names and values for this page. Call get_page_content first for the exact set and shapes.
Example: what your assistant sends
{
  "page": {
    "type": "about"
  },
  "fields": {
    "story": "We opened on Main Street and still answer our own phone."
  }
}
Example: what comes back
{
  "written": false,
  "page": {
    "type": "about"
  },
  "publicPath": "/about",
  "status": "pass",
  "findings": [],
  "validation_id": "v1.opaque"
}

Edit a page

update_page_contentChanges your site or sends something

What you can ask

  • Change the headline on my brake repair page to 'Brake repair you can book today'.
  • Add an FAQ about weekend hours to my brake repair page.
  • Put the about page intro back the way it was.

What it does

Save changes to one page of your site, in your words.

This asks you first, every time.

What it needs

  • The page you want to change.
  • The new words.

What it won't do

It won't add a claim we can't back up, like a warranty or license we don't have on file. It saves your words as you wrote them, or tells you why it can't. It never rewrites them.

What your assistant sends

FieldRequiredDescription
pageobjectYes
fieldsobjectYesField names and values for this page. Call get_page_content first for the exact set and shapes.
enablebooleanNoBrand pages only. Default true turns the page on; false saves the copy and leaves it off.
validation_idstringNoFrom validate_page_content for these exact fields. Skips a repeat check; changed fields are checked again.
idempotency_keystringNoOptional. Reusing a key within 24 hours returns the first write's result instead of writing again.
cleararray of stringNoOptional. Field names to put back to the page default. A name also in fields is written instead.
confirmobjectYesRequired. One line stating the change, in the owner's words.
owner_requeststringNoWhat the owner asked for, in their words, one sentence. Optional. Stored with the audit record so their team can see what owners ask for.
Example: what your assistant sends
{
  "page": {
    "type": "site"
  },
  "fields": {
    "theme.overrides": {
      "accent": "#1f7a3a"
    }
  },
  "confirm": {
    "intent": "Make the accent our green"
  },
  "idempotency_key": "theme-green-0930"
}
Example: what comes back
{
  "updated": true,
  "page": {
    "type": "site"
  },
  "publicPath": "/",
  "fields": [
    "theme.overrides"
  ],
  "before": {
    "theme.overrides": {
      "brand": "#123456",
      "radius": 8
    }
  },
  "after": {
    "theme.overrides": {
      "brand": "#123456",
      "accent": "#1f7a3a",
      "radius": 8
    }
  },
  "previewNote": "The site shows the change on its next load.",
  "cacheNote": "Caches for this client were invalidated. Statically generated pages can still serve their previous build for up to an hour before the change is visible on the live site."
}
Edit your website through your assistant | The Shop Marketing Guys