Platform

AEO Website Research-grade Content Content Factory About Audits Rankings Pricing

Resources

Knowledge Base Research Docs FAQ

Client Tools

Client tools enable end-to-end content production for specific domains. They manage voice profiles, save articles with domain tracking, and publish directly to CMS platforms.

aeo_get_client_profile

Get everything needed to write for a client: audit data, voice profile, CMS connection, and recent articles. Returns null for any missing component. The CMS access token is stripped from the response for security.

Parameters

NameTypeRequiredDescription
domainstringRequiredClient domain (e.g., "understoodcare.com")

Example

json
aeo_get_client_profile({ domain: class="code-string">"understoodcare.com" })

Response Structure

The response includes audit data with weak criteria highlighted, domain taxonomy, voice profile settings, CMS connection metadata (token excluded), and a list of recent articles.

response shape
{
  class="code-string">"domain": class="code-string">"understoodcare.com",
  class="code-string">"slug": class="code-string">"understoodcare-com",
  class="code-string">"client": { class="code-string">"id": class="code-string">"...", class="code-string">"name": class="code-string">"...", class="code-string">"plan": class="code-string">"growth" },
  class="code-string">"audit": {
    class="code-string">"overall_score": 82,
    class="code-string">"verdict": class="code-string">"Good AEO readiness",
    class="code-string">"weak_criteria": [
      { class="code-string">"criterion": class="code-string">"Original Data & Research", class="code-string">"score": 7, class="code-string">"id": 8 }
    ]
  },
  class="code-string">"taxonomy": { class="code-string">"sector": class="code-string">"healthcare", class="code-string">"category": class="code-string">"Home Health Care" },
  class="code-string">"author": { class="code-string">"name": class="code-string">"Care Team Voice", class="code-string">"tone": class="code-string">"conversational", ... },
  class="code-string">"cms": { class="code-string">"provider": class="code-string">"webflow", class="code-string">"name": class="code-string">"Articles", ... },
  class="code-string">"recent_articles": [
    { class="code-string">"id": class="code-string">"...", class="code-string">"slug": class="code-string">"what-is-cdpap", class="code-string">"title": class="code-string">"...", class="code-string">"word_count": 1850 }
  ]
}

aeo_upsert_client_author

Create or update a domain voice profile. One profile per domain. Covers tone, writing rules, brand stance, and content guidelines. Only provided fields are updated on an existing profile.

Parameters

NameTypeRequiredDescription
domainstringRequiredClient domain
namestringRequiredAuthor/voice profile name
expertisestringOptionalDomain expertise
brand_stancestringOptionalBrand positioning statement
writing_samplestringOptionalSample writing for voice matching
tonestringOptionalWriting tone: conversational, professional, bold, academic
depthstringOptionalContent depth: short, standard, deep
industrystringOptionalIndustry vertical
reading_levelstringOptionalTarget reading level: beginner, intermediate, expert
do_rulesstring[]OptionalAlways-do writing rules
dont_rulesstring[]OptionalNever-do writing rules
signature_quirksstringOptionalVoice personality notes
content_guidelinesobjectOptionalCMS-specific content rules (output_format, internal_link_base, category_mapping, seo)
target_criteriastring[]OptionalAEO criteria slugs to focus on (e.g., "qa-content", "original-data")

Example

json
aeo_upsert_client_author({
  domain: class="code-string">"understoodcare.com",
  name: class="code-string">"Care Team Voice",
  tone: class="code-string">"conversational",
  depth: class="code-string">"standard",
  industry: class="code-string">"home health care",
  do_rules: [class="code-string">"Use empathetic language", class="code-string">"Include real examples"],
  dont_rules: [class="code-string">"No medical jargon", class="code-string">"No passive voice"],
  target_criteria: [class="code-string">"qa-content", class="code-string">"original-data", class="code-string">"faq-section"]
})

aeo_save_client_article

Save a client article as clean HTML to pipeline executions with domain tracking. Automatically snapshots the current author profile for the domain. The article enters the review workflow with draft status.

Parameters

NameTypeRequiredDescription
domainstringRequiredClient domain
topic_titlestringRequiredArticle title
content_htmlstringRequiredFull article as clean HTML
word_countnumberRequiredTotal word count
slugstringRequiredURL slug for the article
meta_descriptionstringOptionalSEO meta description
categorystringOptionalArticle category
aeo_criteria_targetedstring[]OptionalAEO criteria this article targets

aeo_publish_to_cms

Publish a saved article to the client CMS. Provider-agnostic - dispatches based on the connection type configured for the domain. Currently supports Webflow.

Parameters

NameTypeRequiredDescription
domainstringRequiredClient domain
execution_idstringRequiredPipeline execution ID to publish
publish_livebooleanOptionalPublish live (true) or as draft (false)Default: false
Set publish_live=true only when you are confident the article is ready. Draft mode (default) lets you review in the CMS before going live.

Webflow Integration Details

When the domain has a Webflow CMS connection, the tool automatically handles Webflow-specific content processing:

  • Strips <h1> from content (Webflow uses the name field for the page title)
  • Extracts the FAQ section into a separate CMS field via field_mapping.faq
  • Removes the Related Articles section from the main content body
  • Resolves category names to Webflow option IDs via config.categoryMapping
  • Sets config.defaultImage as a placeholder for required image fields
  • Applies a 500ms rate limit delay between API calls
The CMS connection stores all Webflow-specific configuration (access token, collection ID, field mapping, category mapping, default image). Set this up once at admin.aeocontent.ai/publishing.

aeo_cms_list_content

List existing content in a client CMS for deduplication and cross-linking. Returns item titles, slugs, and timestamps from the connected CMS collection.

Parameters

NameTypeRequiredDescription
domainstringRequiredClient domain
limitnumberOptionalMax items to returnDefault: 50
Always call aeo_cms_list_content before saving a new article to check for duplicate topics and find cross-linking opportunities with existing content.

aeo_open_article

Find and open an article by fuzzy title or slug match. Useful for quickly navigating to an existing article when you know part of its name.

Parameters

NameTypeRequiredDescription
domainstringRequiredClient domain (e.g., "understoodcare.com")
querystringRequiredFuzzy search string to match against title or slug

Example

json
aeo_open_article({ domain: class="code-string">"understoodcare.com", query: class="code-string">"cdpap eligibility" })

Response Structure

response shape
{
  class="code-string">"execution_id": class="code-string">"abc123-..."
}

aeo_update_client_article

Update an existing client article HTML. Use this after opening an article with aeo_open_article to push revised content.

Parameters

NameTypeRequiredDescription
execution_idstringRequiredPipeline execution ID of the article to update
content_htmlstringRequiredUpdated article HTML content
word_countnumberRequiredUpdated word count
topic_titlestringOptionalUpdated article title
meta_descriptionstringOptionalUpdated SEO meta description

Example

json
aeo_update_client_article({
  execution_id: class="code-string">"abc123-...",
  content_html: class="code-string">"<h2>Updated Section</h2><p>New content...</p>",
  word_count: 2150,
  topic_title: class="code-string">"Updated Title"
})

Response Structure

response shape
{
  class="code-string">"message": class="code-string">"Article updated successfully",
  class="code-string">"execution_id": class="code-string">"abc123-...",
  class="code-string">"updated_word_count": 2150
}

Workflow Example

A typical client content production workflow uses these tools in sequence. Start by loading the client profile, check existing content for gaps, write the article, save it, and publish when ready.

1

Load client context

aeo_get_client_profile({ domain: "understoodcare.com" })

Get audit data, voice profile, and weak criteria.

2

Check existing content

aeo_cms_list_content({ domain: "understoodcare.com" })

Find gaps and cross-linking opportunities.

3

Write article

Agent writes article targeting weak criteria

Focus on criteria with lowest scores from the audit.

4

Save draft

aeo_save_client_article({ domain: "understoodcare.com", ... })

Article enters review workflow as draft.

5

Publish to CMS

aeo_publish_to_cms({ domain: "understoodcare.com", execution_id: "..." })

Push to Webflow (or other connected CMS).