Agents Reference
All agents are accessible at Account → SEO Agents. Each agent has a dedicated form page, a polling status screen, and a persistent result page.
Keyword Research
Slug: keyword-research | Category: Research | SERP data: Yes | Est. time: 30 s
Generates a full keyword strategy from a seed keyword: long-tail variations, search intent classification, semantic/LSI terms, and content gap opportunities.
Inputs
| Field | Required | Description |
|---|---|---|
| Seed Keyword | Yes | The primary keyword or phrase you want to rank for |
| Niche / Industry | No | Narrows suggestions to a specific context |
| Target Country | No | Country for SERP results (default: US) |
| Number of Variations | No | Long-tail keywords to generate (5–30, default 15) |
Output (structured JSON)
{
"primary_keyword": "electric car charging station",
"volume_estimate": "unknown",
"intent": "commercial",
"difficulty": "medium",
"long_tail_keywords": [
{ "keyword": "best home ev charging station 2025", "intent": "commercial", "difficulty": "low", "rationale": "..." }
],
"semantic_terms": [
{ "term": "EVSE", "relevance": "..." }
],
"content_gaps": [
{ "angle": "Apartment-friendly EV charging", "suggested_title": "..." }
]
}Tools used
fetch_serp_results— fetches top organic results to infer competition and intent
Meta Tag Generator
Slug: meta-tag-generator | Category: On-page | SERP data: No | Est. time: 20 s
Generates optimised title tags, meta descriptions, Open Graph tags, and Twitter Card tags. Accepts a URL (fetches live content) or pasted text.
Inputs
| Field | Required | Description |
|---|---|---|
| Page URL | One of URL or Content required | Fetches live page content via HTTP |
| Page Content | One of URL or Content required | Paste raw copy or HTML — HTML tags are stripped |
| Target Keyword | No | Keyword to include in title and description |
| Brand Name | No | Appended to the title tag (e.g. … | ChargePanda) |
| Number of Variations | No | How many alternative tag sets to generate (1–5, default 3) |
Output (HTML)
Ready-to-copy <head> snippet for each variation, wrapped in <pre><code> blocks with a one-sentence strategic rationale.
Tools used
fetch_web_page— fetches and extracts body text from the provided URL
Competitor Analysis
Slug: competitor-analysis | Category: Research | SERP data: Yes | Est. time: 60 s
Fetches the top-ranking pages for a keyword, analyses their SEO tactics (word count, heading structure, schema, strengths/weaknesses), and produces a ranked list of recommendations to outrank them.
Inputs
| Field | Required | Description |
|---|---|---|
| Target Keyword | Yes | Keyword to analyse competition for |
| Your Page URL | No | If provided, your page is included in the comparison |
| Target Country | No | Country for SERP results (default: US) |
| Competitors to Analyse | No | Number of top-ranking pages to fetch (2–5, default 3) |
Output (structured JSON)
{
"keyword": "best ev home charger",
"serp_data_available": true,
"your_score": null,
"competitors": [
{
"position": 1,
"url": "https://example.com",
"title": "...",
"word_count": 2800,
"h1": "...",
"h2_count": 8,
"has_schema": true,
"strengths": ["Comparison table", "Expert quotes"],
"weaknesses": ["No installation guide"]
}
],
"content_gaps": ["Installation cost breakdown"],
"recommendations": ["Target 2,500–3,000 words to match competitor depth"]
}Tools used
fetch_serp_results— fetches top organic SERP resultsfetch_web_page— fetches and parses each competitor page
Content Audit
Slug: content-audit | Category: On-page | SERP data: No | Est. time: 25 s
Audits an existing page for SEO health across eight dimensions. Produces an overall score (0–100), letter grade, and actionable quick wins.
Inputs
| Field | Required | Description |
|---|---|---|
| Page URL | One of URL or Content required | Fetches live page for analysis |
| Page Content | One of URL or Content required | Paste full HTML or plain text |
| Target Keyword | No | Used to check keyword placement and density |
Output (structured JSON)
{
"url": "https://example.com/page",
"overall_score": 72,
"grade": "B",
"target_keyword": "home EV charger",
"readability": { "flesch_score": 65, "grade_level": 9, "reading_ease": "Standard", "word_count": 1200 },
"dimensions": [
{ "name": "Title Tag", "score": "pass", "notes": "57 chars, keyword present" },
{ "name": "Meta Description", "score": "warn", "notes": "145 chars — slightly short" },
{ "name": "Heading Structure", "score": "fail", "notes": "Two H1 tags found" }
],
"issues": ["Duplicate H1"],
"quick_wins": ["Merge H1 tags", "Expand meta description to 155+ chars"],
"detailed_recommendations": ["..."]
}Dimensions scored: Title Tag, Meta Description, Heading Structure, Keyword Usage, Readability, Content Depth, Open Graph tags, Canonical tag.
Tools used
fetch_web_page— fetches and extracts page contentanalyse_readability— computes Flesch reading ease and grade level
Content Brief
Slug: content-brief | Category: Content | SERP data: Yes | Est. time: 45 s
Creates a detailed brief for a content writer: recommended title, H1, word count target, heading outline, must-cover topics, secondary keywords, content formats, schema recommendation, and internal linking ideas.
Inputs
| Field | Required | Description |
|---|---|---|
| Target Keyword | Yes | The keyword to build the brief around |
| Content Goal | No | Informational, commercial, landing page, product, or FAQ |
| Target Audience | No | Who the content is written for |
| Target Country | No | Country for SERP results (default: US) |
| Competitor URL | No | A top-ranking URL to analyse structure and depth |
Output (structured JSON)
{
"keyword": "ev charger installation guide",
"recommended_title": "EV Charger Installation Guide: Costs, Steps & Top Picks (2025)",
"recommended_h1": "EV Charger Installation Guide",
"word_count_range": "2000–2500",
"search_intent": "informational",
"tone": "helpful, authoritative, jargon-light",
"outline": [
{ "heading": "What is an EV Charger?", "level": "H2", "notes": "Brief intro — 100 words" }
],
"must_include_topics": ["permitting requirements", "cost breakdown"],
"must_include_keywords": ["Level 2 charger", "EVSE"],
"recommended_formats": ["comparison table", "numbered steps", "FAQ section"],
"schema_recommendation": "HowTo",
"internal_linking_ideas": ["best home ev chargers"],
"cta_recommendation": null
}Tools used
fetch_serp_results— analyses what formats and topics rank for the keywordfetch_web_page— fetches competitor URL structure when provided
Schema Markup
Slug: schema-markup | Category: On-page | SERP data: No | Est. time: 20 s
Generates valid JSON-LD schema markup ready to paste into a page's <head>. Supports Article, HowTo, FAQ, Product, LocalBusiness, BreadcrumbList, Review, Recipe, Event, VideoObject, and WebSite schemas. Can auto-detect the correct type from page content.
Inputs
| Field | Required | Description |
|---|---|---|
| Page URL | One of URL or Content required | Fetches live page content |
| Page Content | One of URL or Content required | Paste content, FAQs, product details, or step-by-step instructions |
| Schema Type | No | Specific type or "Auto-detect" (default) |
| Site / Business Name | No | Used in publisher, brand, and WebSite schemas |
| Also generate BreadcrumbList? | No | Generates a second schema block for breadcrumb navigation |
Output (HTML)
A heading for each schema block followed by a <pre><code> block containing the JSON-LD, ready to copy-paste. Any properties that could not be inferred from the content are flagged so the user knows what to fill in manually.
Supported schema types: Article, HowTo, FAQPage, Product, LocalBusiness, BreadcrumbList, Review, Recipe, Event, VideoObject, WebSite.
Tools used
fetch_web_page— fetches and parses the page when a URL is provided
Blog Writer
Slug: blog-writer | Category: Content | SERP data: Yes | Est. time: 90 s
Writes a complete, publication-ready SEO article from a keyword and an optional brief. The output is a ready-to-paste HTML fragment that includes a suggested meta title and description, H1, H2/H3 body sections, and an optional FAQ block at the end.
Inputs
| Field | Required | Description |
|---|---|---|
| Target Keyword | Yes | The primary keyword the article should rank for |
| Content Brief / Outline | No | Paste an outline or brief (e.g. from the Content Brief agent) — if omitted the agent builds its own structure from SERP data |
| Article Length | No | Short (600–800 w), Medium (1,200–1,500 w), or Long (2,000–2,500 w) — default Medium |
| Tone | No | Informational, Conversational, Professional, or Persuasive — default Informational |
| Target Audience | No | Describe who the article is written for |
| Target Country | No | Country for SERP results (default: US) |
| Include FAQ section | No | Toggle — appends a Frequently Asked Questions block at the end (default: on) |
Output (HTML)
A ready-to-paste HTML fragment structured as:
<div class="meta-box">
<p><strong>Suggested title tag:</strong> How to Install an EV Charger at Home: Costs, Steps & Tips (2025)</p>
<p><strong>Suggested meta description:</strong> Learn how to install a home EV charger in 6 steps...</p>
</div>
<h1>How to Install an EV Charger at Home</h1>
<p>Introduction paragraph...</p>
<h2>Level 1 vs Level 2: Which Charger Do You Need?</h2>
<p>...</p>
<!-- If FAQ toggle is on: -->
<h2>Frequently Asked Questions</h2>
<h3>Do I need an electrician to install a home EV charger?</h3>
<p>Yes. Level 2 chargers require a dedicated 240 V circuit...</p>Tools used
fetch_serp_results— analyses what content formats and subtopics currently rank for the keyword
Content Rewriter
Slug: content-rewriter | Category: Content | SERP data: No | Est. time: 60 s
Rewrites existing content to improve SEO, readability, depth, or tone. The agent scores the original with Flesch-Kincaid before rewriting, scores the rewrite, and returns the updated article alongside a before/after comparison table and a bullet-point summary of key changes.
Inputs
| Field | Required | Description |
|---|---|---|
| Existing Content | Yes | Paste the article or page copy to rewrite — plain text or HTML (tags are stripped before analysis) — up to 10,000 characters |
| Target Keyword | Yes | The keyword the rewritten content should be optimised for |
| Rewrite Goal | No | Improve SEO, Improve Readability, Expand Depth, Modernise, or Change Tone — default Improve SEO |
| Target Tone | No | Match original, Formal, Conversational, or Persuasive — default Match original |
| Preserve existing heading structure | No | Toggle — when on, keeps the existing H2 headings verbatim (default: off) |
Output (HTML)
A ready-to-paste HTML fragment structured as:
<div class="rewrite-summary">
<h3>Improvements Made</h3>
<table>
<thead><tr><th>Metric</th><th>Before</th><th>After</th></tr></thead>
<tbody>
<tr><td>Flesch Score</td><td>48.2 (Fairly Difficult)</td><td>67.4 (Standard)</td></tr>
<tr><td>Grade Level</td><td>13.1</td><td>9.4</td></tr>
<tr><td>Word Count</td><td>480</td><td>620</td></tr>
<tr><td>Avg. Sentence Length</td><td>24 words</td><td>15 words</td></tr>
</tbody>
</table>
<ul>
<li>Added target keyword "home ev charger installation" to H1 and opening paragraph</li>
<li>Broke 8 run-on sentences into shorter ones</li>
<li>Expanded the "Costs" section with a pricing breakdown</li>
</ul>
</div>
<h1>Rewritten article heading</h1>
<p>Rewritten content...</p>Tools used
analyse_readability— called twice: once on the original content and once on the rewrite, to produce the before/after scores
FAQ Generator
Slug: faq-generator | Category: Content | SERP data: Yes | Est. time: 30 s
Generates a set of SEO-optimised FAQs grounded in real "People Also Ask" data. Optionally reads a source URL so the FAQs match the page's content. Output includes the visual FAQ list and an optional FAQPage JSON-LD schema block for Google rich results.
Inputs
| Field | Required | Description |
|---|---|---|
| Topic / Keyword | Yes | The topic the FAQs should be built around |
| Source Page URL | No | If provided, the agent reads this page and generates FAQs relevant to its content |
| Number of FAQs | No | How many FAQ pairs to generate — 5, 10, 15, or 20 (default: 10) |
| Tone | No | Conversational or Formal (default: Conversational) |
| Include FAQPage JSON-LD schema | No | Toggle — appends a ready-to-paste FAQPage schema block (default: on) |
Output (HTML)
<div class="faq-list">
<h2>Frequently Asked Questions</h2>
<div class="faq-item">
<h3>How much does it cost to install a home EV charger?</h3>
<p>The total cost typically ranges from $500 to $2,000...</p>
</div>
<!-- repeated for each FAQ -->
</div>
<!-- If schema toggle is on: -->
<div class="schema-block">
<h3>FAQPage Schema (JSON-LD)</h3>
<p>Copy and paste this into your page's <code><head></code>...</p>
<pre><code>{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [ ... ]
}</code></pre>
</div>Tools used
fetch_serp_results— surfaces "People Also Ask" questions and related searches for the topicfetch_web_page— fetches and parses the source URL when provided
Core Web Vitals Advisor
Slug: core-web-vitals | Category: Technical | SERP data: No | Est. time: 25 s
Analyses a page's Core Web Vitals using the Google PageSpeed Insights API. Returns a performance score, per-metric verdicts, an overall pass/fail, and a prioritised list of developer-ready fixes.
PageSpeed API key
The agent works without an API key (anonymous quota). For higher volume, add a free Google PageSpeed API key in Admin → SEO Agents → Settings.
Inputs
| Field | Required | Description |
|---|---|---|
| Page URL | Yes | The page to analyse |
| Device | No | Mobile, Desktop, or Both (default: Both — reports worst-case values) |
Output (structured)
{
"url": "https://example.com",
"strategy": "mobile",
"overall": {
"performance_score": 67,
"cwv_pass": false,
"summary": "Page fails Core Web Vitals on mobile. LCP and TBT are the primary issues."
},
"metrics": [
{ "name": "LCP", "full_name": "Largest Contentful Paint", "value": "3.2 s", "status": "needs-improvement", "threshold": "Good < 2.5 s" },
{ "name": "CLS", "full_name": "Cumulative Layout Shift", "value": "0.05", "status": "good", "threshold": "Good < 0.1" },
{ "name": "FID", "full_name": "First Input Delay", "value": "18 ms", "status": "good", "threshold": "Good < 100 ms" },
{ "name": "FCP", "full_name": "First Contentful Paint", "value": "1.9 s", "status": "needs-improvement", "threshold": "Good < 1.8 s" },
{ "name": "TBT", "full_name": "Total Blocking Time", "value": "480 ms", "status": "poor", "threshold": "Good < 200 ms" },
{ "name": "TTFB", "full_name": "Time to First Byte", "value": "0.6 s", "status": "good", "threshold": "Good < 0.8 s" }
],
"top_fixes": [
{ "priority": 1, "issue": "Reduce unused JavaScript", "impact": "Could save ~0.8 s", "how": "..." }
]
}Core Web Vitals thresholds:
| Metric | Good | Needs Improvement | Poor |
|---|---|---|---|
| LCP | < 2.5 s | < 4 s | ≥ 4 s |
| CLS | < 0.1 | < 0.25 | ≥ 0.25 |
| FID | < 100 ms | < 300 ms | ≥ 300 ms |
| FCP | < 1.8 s | < 3 s | ≥ 3 s |
| TBT | < 200 ms | < 600 ms | ≥ 600 ms |
| TTFB | < 0.8 s | < 1.8 s | ≥ 1.8 s |
Tools used
fetch_pagespeed_data— calls Google PageSpeed Insights API (once per strategy)
Site Audit
Slug: site-audit | Category: Technical | SERP data: No | Est. time: 180 s
Crawls a site and checks for common SEO issues across up to 50 pages. Returns an issue summary, priority fix list, and a full per-page issue log.
Inputs
| Field | Required | Description |
|---|---|---|
| Site URL | Yes | Homepage URL — the agent discovers internal links from here |
| Pages to Crawl | No | 10 (fastest), 25, or 50 pages (slowest — may take 3–4 min) |
| Issues to Check | No | Multi-select — defaults to missing meta, duplicate titles, missing alt, missing canonical |
Available checks:
| Check | Severity | Notes |
|---|---|---|
| Missing title tag or meta description | Warning | Flags absent or empty values |
| Duplicate title tags | Critical | Flags any title appearing on more than one page |
| Images missing alt text | Warning | Based on content signals — may not catch all cases |
| Missing canonical tag | Info | Flags pages with no canonical set |
| Broken internal links | Critical | Fetches each link — significantly increases run time |
Output (HTML)
A three-section report:
- Audit Summary — pages crawled, total issues, issue-type breakdown table
- Priority Fixes — top 5–10 most impactful changes with affected URLs
- Full Issue List — table of every issue: page, issue type, severity, recommendation
Tools used
fetch_web_page— called once per crawled page (and per link when broken-link check is on)
Internal Link Suggester
Slug: internal-link-suggester | Category: On-page | SERP data: No | Est. time: 60 s
Finds internal linking opportunities from a set of source pages to a target page. For each source page the agent suggests the best anchor text, two alternatives, and the specific passage where the link fits naturally — with a relevance rating.
Inputs
| Field | Required | Description |
|---|---|---|
| Target Page URL | Yes | The page you want to build internal links TO |
| Target Keyword / Topic | Yes | The main keyword of the target page — used to find relevant anchor text |
| Source Pages to Check | Yes | One URL per line — up to 10 pages to scan for opportunities |
Output (structured JSON)
{
"target_url": "https://example.com/ev-charging-guide",
"target_keyword": "EV charging guide",
"pages_analysed": 3,
"opportunities_found": 5,
"no_opportunity_pages": ["https://example.com/contact"],
"opportunities": [
{
"source_url": "https://example.com/blog/electric-cars",
"anchor_text": "EV charging guide",
"anchor_alternatives": ["home charging guide", "complete EV charger walkthrough"],
"placement": "Third paragraph — after \"...charging infrastructure has expanded rapidly.\"",
"relevance": "high",
"context": "The paragraph discusses charging infrastructure and would benefit from a link to the full guide."
}
],
"summary": "Found 5 internal linking opportunities across 3 pages."
}Tools used
fetch_web_page— fetches the target page and each source page
Image Alt Text
Slug: image-alt-text | Category: On-page | SERP data: No | Est. time: 20 s
Generates SEO-optimised alt text for up to 20 images in a single run. The agent infers the image subject from filenames, directory paths, and an optional source page fetch, then writes alt text in your chosen style.
Inputs
| Field | Required | Description |
|---|---|---|
| Image URLs | Yes | One image URL per line — up to 20 images |
| Page Context / Target Keyword | Yes | Describes what the page is about — helps write contextually relevant alt text |
| Alt Text Style | No | Descriptive (accurate, accessibility-first), Keyword-rich (natural keyword weaving), or Concise (under 60 chars) — default: Descriptive |
| Source Page URL | No | Optional — if provided, the agent reads the page for richer context |
Output (structured JSON)
{
"page_context": "home EV charger installation guide",
"style": "descriptive",
"images_total": 2,
"images_results": [
{
"url": "https://example.com/images/ev-charging-station.jpg",
"filename": "ev-charging-station.jpg",
"alt_text": "Level 2 EV charging station mounted on a residential garage wall",
"char_count": 62,
"notes": "Filename strongly indicates subject. Descriptive style used."
}
],
"summary": "Generated alt text for 2 images."
}Tools used
fetch_web_page— fetches the optional source page for richer context
Local Keyword Research
Slug: local-keyword | Category: Local SEO | SERP data: Yes | Est. time: 35 s
Builds a complete local SEO keyword strategy for any business type and city. Generates primary keywords, "near me" variants, suburb/city combinations, long-tail phrases, and recommended Google Business Profile categories.
Inputs
| Field | Required | Description |
|---|---|---|
| Business Type / Service | Yes | e.g. "EV charger installation", "plumber", "dental clinic" |
| City / Region | Yes | Primary city or region the business serves |
| Service Radius | No | City only, Metro area (city + suburbs), or State-wide — default: Metro |
| Include "near me" variants | No | Toggle — default: on |
| Number of Keywords | No | 20, 50, or 100 keywords — default: 50 |
Output (structured JSON)
{
"business_type": "EV charger installation",
"location": "Austin, Texas",
"radius": "metro",
"keywords_total": 50,
"primary_keywords": [
{ "keyword": "EV charger installation Austin", "intent": "commercial", "difficulty": "medium" }
],
"near_me_variants": ["EV charger installation near me", "electric car charger installer near me"],
"suburb_variants": [
{ "suburb": "Round Rock", "keywords": ["EV charger installation Round Rock", "electric car charger Round Rock TX"] }
],
"long_tail_keywords": [
{ "keyword": "Level 2 EV charger home installation Austin", "intent": "informational", "difficulty": "low" }
],
"gbp_categories": {
"primary": "Electrician",
"secondary": ["Electric vehicle charging station", "Solar energy contractor"]
},
"summary": "Generated 50 local keywords for EV charger installation in Austin, TX metro area."
}Tools used
fetch_serp_results— researches what keywords and formats rank locally for the business type
Google Business Profile Optimizer
Slug: gbp-optimizer | Category: Local SEO | SERP data: Yes | Est. time: 40 s
Produces a complete Google Business Profile optimisation package: an SEO-optimised description, recommended categories, 10 Google Post ideas, 5 Q&A suggestions, and attribute recommendations.
Inputs
| Field | Required | Description |
|---|---|---|
| Business Name | Yes | The business name |
| Business Type / Category | Yes | What the business does — used to research competitor profiles |
| City / Location | Yes | The city the business operates in |
| Current Business Description | No | Paste existing GBP description to improve — leave blank to write from scratch |
| Services Offered | No | One service per line — helps generate specific Post topics and Q&As |
Output (structured JSON)
{
"business_name": "Austin EV Charging Co.",
"location": "Austin, Texas",
"description": {
"text": "Austin EV Charging Co. is Austin's leading electric vehicle charger installer...",
"char_count": 354,
"notes": "Uses primary keyword in first sentence, includes social proof and CTA. Under 750-char GBP limit."
},
"gbp_categories": {
"primary": "Electrician",
"secondary": ["Electric vehicle charging station", "Electrical installation service"]
},
"google_posts": [
{ "title": "Level 2 Charger Installation — From $299", "hook": "Charge your EV 5x faster at home. Book your installation this week..." }
],
"qa_suggestions": [
{ "question": "How much does EV charger installation cost in Austin?", "answer": "Home Level 2 charger installation in Austin typically ranges from $299–$599..." }
],
"attributes": ["Online appointments", "Free estimates", "LGBTQ+ friendly"],
"summary": "Generated optimised GBP description, 2 categories, 10 Post ideas, 5 Q&As, and 4 attributes."
}Description constraints: GBP descriptions have a 750-character hard limit. URLs, phone numbers, and promotional pricing in the description field violate GBP policy and can trigger suspensions — the agent avoids all of these.
Tools used
fetch_serp_results— researches what top-ranked competitors include in their GBP profiles
SEO Report
Slug: seo-report | Category: Reporting | SERP data: Yes | Est. time: 90 s
Generates a professional, white-label HTML SEO report combining live PageSpeed data, SERP analysis, and page content checks into a single polished document. Suitable for printing to PDF or emailing directly to a client.
Inputs
| Field | Required | Description |
|---|---|---|
| Client / Site Name | Yes | Used in the report header and throughout the document |
| Site URL | Yes | The site being reported on |
| Primary Target Keyword | Yes | Used for SERP ranking check and competitor analysis |
| Report Period | No | Last 30 days, Last 90 days, Last 6 months, or Custom label — default: Last 30 days |
| Custom Period Label | No | Only shown when "Custom label" is selected — e.g. "Q1 2026" |
| Sections to Include | No | Multi-select — defaults to all five sections (see below) |
| Agency Name | No | If provided, replaces the default report branding — white-label output |
| Agency Logo URL | No | Direct URL to a logo image shown in the report header |
| Notes / Context for Client | No | Context acknowledged in the executive summary — recent changes, goals, concerns |
Available sections:
| Section | What it covers |
|---|---|
| Technical Health | PageSpeed performance score + full Core Web Vitals table (LCP, CLS, FID, FCP, TBT, TTFB) with pass/fail status and top improvement opportunities |
| On-Page SEO | Title tag (value + length), meta description, H1, canonical tag, Open Graph completeness |
| Keyword Insights | Current ranking position for the target keyword, search intent, and 4–6 related keyword opportunities from PAA and related searches |
| Competitor Snapshot | Top 3 ranking pages for the target keyword — domain, title, notable strengths, plus a summary of patterns common among competitors |
| Recommendations Roadmap | Prioritised action list with Critical / High / Medium / Quick Win labels and a one-phrase expected impact note per item |
Output (HTML)
A fully inline-styled HTML fragment structured as:
- Report header — agency branding (name + optional logo), client name, site domain, period, and generated date
- Executive summary — 2–3 paragraph professional narrative covering overall health, top findings, and a forward-looking statement
- At a Glance — summary table with ✅ / ⚠️ / ❌ status for each included section
- (Selected sections in order)
- Footer — agency credit and data source attribution
All status indicators use emoji (✅ ⚠️ ❌) so the report renders correctly in email clients and PDF without CSS dependency. Priority labels in the Recommendations Roadmap are colour-coded inline: Critical (red), High (amber), Medium (blue), Quick Win (green).
Tools used
fetch_pagespeed_data— called for the Technical Health sectionfetch_web_page— called to check on-page elements (title, meta, H1, canonical, OG)fetch_serp_results— called for keyword ranking check and competitor identificationfetch_web_page— called again on top competitor URLs for the Competitor Snapshot
WordPress Publisher
Slug: wp-publisher | Category: WordPress | SERP data: Yes | Est. time: 120 s
Writes and publishes an SEO-optimised article directly to a connected WordPress site in a single run. Requires a WordPress connection (see WordPress Connections).
Inputs
| Field | Required | Description |
|---|---|---|
| WordPress Site | Yes | Dropdown of the user's connected WordPress sites |
| Target Keyword | Yes | The keyword the article should rank for |
| Content Brief / Outline | No | Optional brief or outline — leave blank to let the agent build its own structure from SERP data |
| Article Length | No | Short (600–800 w), Medium (1,200–1,500 w), or Long (2,000–2,500 w) — default: Medium |
| Publish As | No | Draft, Published, or Scheduled — default: Draft |
| Scheduled Date & Time | No | Only shown when Scheduled is selected — enter in the WordPress site's timezone |
| Category | No | Category name — matched to an existing WordPress category |
| Tags | No | Comma-separated tag names |
| Set SEO Meta | No | Toggle — writes SEO title, meta description, and focus keyword via Yoast/RankMath after post creation (default: on) |
Output (structured JSON)
{
"status": "draft_created",
"post_id": 1042,
"post_url": "https://yoursite.com/?p=1042",
"edit_url": "https://yoursite.com/wp-admin/post.php?post=1042&action=edit",
"title": "How to Install a Home EV Charger: Costs, Steps & Tips (2026)",
"word_count": 1380,
"seo_meta_set": true,
"seo_title": "Home EV Charger Installation Guide: Costs & Steps (2026) | YourSite",
"seo_description": "Learn how to install a home EV charger in 6 steps. Covers costs ($300–$1,200), permits, and Level 1 vs Level 2.",
"next_steps": [
"Add a featured image to the post before publishing.",
"Add 2–3 internal links from related posts to this one.",
"Submit the URL to Google Search Console for faster indexing."
]
}Tools used
fetch_serp_results— researches the SERP before writing to match current ranking structureswordpress_api—list_categories,create_post,update_seo_meta
WordPress Bulk Meta
Slug: wp-bulk-meta | Category: WordPress | SERP data: No | Est. time: 90 s
Generates and applies SEO title tags and meta descriptions to multiple WordPress posts in one run. Includes a per-post before/after log and an overwrite guard. Requires a WordPress connection.
Inputs
| Field | Required | Description |
|---|---|---|
| WordPress Site | Yes | Dropdown of the user's connected WordPress sites |
| Posts to Process | No | Missing meta only (recommended), All published posts, or Posts in a specific category — default: Missing meta |
| Category Name | No | Only used when "Posts in a specific category" is selected |
| Maximum Posts | No | 10, 25, or 50 posts — default: 10 |
| Meta to Generate | No | SEO title only, Meta description only, or Both — default: Both |
| Overwrite Existing Meta | No | Toggle — off by default; when off, posts that already have SEO meta are skipped |
Output (structured JSON)
{
"scope": "missing-meta",
"posts_found": 15,
"posts_processed": 10,
"posts_updated": 9,
"posts_skipped": 1,
"posts_failed": 0,
"results": [
{
"post_id": 101,
"title": "How to Install a Home EV Charger",
"seo_title_old": null,
"seo_title_new": "How to Install a Home EV Charger: Costs & Steps (2026)",
"seo_desc_old": null,
"seo_desc_new": "Learn how to install a home EV charger in 6 steps. Covers costs, permits, and Level 1 vs Level 2.",
"status": "updated"
},
{
"post_id": 102,
"title": "Best EV Chargers 2026",
"seo_title_old": "Best EV Chargers 2026 | YourSite",
"seo_desc_old": "Our top picks for home EV chargers in 2026.",
"seo_title_new": null,
"seo_desc_new": null,
"status": "skipped",
"skip_reason": "Already has meta — overwrite is off."
}
],
"errors": [],
"summary": "Updated SEO meta on 9 of 10 posts. 1 post skipped (already has meta)."
}Overwrite is off by default
When overwrite is off, the agent skips any post that already has a Yoast or RankMath SEO title or meta description. This is intentional — bulk operations are hard to reverse.
Tools used
wordpress_api—list_categories,list_posts,get_post,update_seo_meta
WordPress Connections
WordPress Connections is not an agent — it is a user-facing connection manager at Account → WordPress Connections.
Users add WordPress sites by entering a Site URL, WordPress username, and an Application Password. Application Passwords are a built-in WordPress feature (5.6+) — no plugin is required. The connection is verified on save; invalid credentials or insufficient role are rejected with a clear error message.
Requirements per connected site:
- WordPress 5.6 or later (Application Passwords support)
- WordPress REST API enabled (default on all standard WP installs)
- WordPress user must have at least Editor role
What is stored: Site URL, username, and Application Password (encrypted at rest). Multiple sites per user account are supported.