SEO Captain

Documentation

A complete guide to every feature — what the data means, how to read it, and what to do with it.

📄 Version 1.0.0 🌐 Chrome Extension ⚡ Manifest V3

🔍 Overview

SEO Captain is a Chrome extension that analyzes any webpage’s SEO health directly from your browser — no external tools, no account required.

Open the extension on any http:// or https:// page and it instantly extracts everything relevant to SEO: meta tags, headings, images, links, structured data, content quality, and more. All analysis runs locally — nothing is sent to any external server unless you choose to use AI generation with your own API key.

📋
Instant Analysis
Extracts all SEO signals from the page in milliseconds on open.
✍️
AI Meta Generation
Generate optimized titles and descriptions with Claude AI or offline JS engine.
📊
SEO Audit Score
17-point audit with a 0–100 score and per-check pass/warn/fail status.
🖼️
SERP Preview
See exactly how your page looks in Google and social media cards.
🔗
Link Audit
Inspect all internal and external links with broken-link detection.
🛠️
Export & Schema
Download HTML reports, copy meta tags, generate JSON-LD schemas.

⚙️ Installation

SEO Captain installs like any Chrome extension and requires no account or login to use.

1
Install from the Chrome Web Store

Search for “SEO Captain” in the Chrome Web Store and click Add to Chrome.

2
Pin the extension

Click the puzzle-piece icon in Chrome’s toolbar, find SEO Captain, and click the pin icon so it’s always accessible.

3
Open it on any webpage

Navigate to any http:// or https:// page, then click the SEO Captain icon. Analysis starts immediately.

4
(Optional) Add your Anthropic API key

To use AI-powered meta generation, go to the Settings tab and paste your Anthropic API key. It is stored locally in your browser — never transmitted anywhere except Anthropic’s API when you explicitly trigger generation.

⚠️
Browser-internal pages won’t work. SEO Captain cannot inject into chrome:// pages, the Chrome Web Store, or browser PDF viewer. On those pages you’ll see a friendly error message.

How It Works

SEO Captain uses a content script injected into the active tab to read the live DOM — no third-party APIs, no scraping.

When you open the popup, the extension sends a message to its content script already running in the page. The content script reads the DOM directly — title tags, meta elements, heading hierarchy, image attributes, link relationships, structured data, and more — and returns it to the popup for display.

Because the analysis runs on the rendered DOM (after JavaScript has executed), the data you see reflects what search engine crawlers that render JavaScript would see — a significant advantage over source-only tools.

💡
After a content update, refresh the tab first. The content script loads once when the tab opens. If the page changes (SPA navigation, infinite scroll, etc.), hard-refresh the tab (Cmd+Shift+R / Ctrl+Shift+R) before reopening SEO Captain to get fresh data.

📋 Summary Tab

Your at-a-glance SEO dashboard — all key meta signals, heading counts, and quick-access links on one screen.

Title Tag

Displays the page’s <title> tag along with a character count. The count is color-coded to reflect Google’s typical display limits:

50–60 chars — ideal range
30–49 or 61–69 chars — acceptable
<30 or >69 chars — likely truncated or too short

If the title is missing entirely, a red alert reads “Title is missing!” — this is a critical SEO issue that should be fixed immediately.

Meta Description

Shows the <meta name="description"> tag with a character count. Google typically truncates descriptions at 155–160 characters in search results:

150–160 chars — ideal range
100–149 or 161–169 chars — acceptable
<100 or >169 chars — too short or will be cut off

Keywords

Displays the <meta name="keywords"> tag content. Note: Google has ignored this tag since 2009, but some minor search engines and CMS systems still use it. Its absence is not an SEO problem.

Canonical URL

Shows the <link rel="canonical"> href. The canonical tag tells search engines which URL is the “master” version when duplicate or similar content exists across multiple URLs. If missing, it shows “Canonical URL is not defined.” — not always a problem, but worth setting on pages with URL parameters or duplicate content.

Robots Tag

Displays directives from <meta name="robots">. Common values:

DirectiveMeaning
index, followDefault behavior — crawl and index this page, follow its links
noindexDo not include this page in search results
nofollowDo not follow links on this page for crawling
noarchiveDo not show a cached copy in search results
nosnippetDo not show a text snippet in search results

If blank, SEO Captain shows “Not set (defaults to index, follow)” — this is the normal, expected state for most pages.

Author & Publisher

Pulled from <meta name="author">, Open Graph article:author, or og:site_name as fallback. Useful for news and article pages where Google’s News tab uses authorship signals.

Language

Reads the lang attribute on the <html> element (e.g., en, en-US). This is important for international SEO and assistive technologies. Missing lang attribute is flagged in the Audit tab.

Heading Counts (H1–H6)

A quick count of each heading level found on the page. Color coding on H1:

H1 = 1 — ideal
H1 > 1 — multiple H1s can dilute page focus
H1 = 0 — missing main heading, a significant SEO gap

Schema Indicator

If the page contains <script type="application/ld+json"> structured data blocks, the schema types found are listed here (e.g., Article, BreadcrumbList). Schema markup helps Google display rich results — knowledge panels, star ratings, breadcrumbs, FAQs, and more.

Robots.txt & Sitemap.xml Buttons

Quick-access buttons that open the site’s /robots.txt and /sitemap.xml in new tabs so you can inspect them without navigating away.


✍️ Generate Tab

Two meta generation modes: an instant offline JavaScript engine, and enhanced AI suggestions via Claude — your choice depending on need and speed.

JS Auto-Generation (Instant · No API Required)

Runs entirely in your browser the moment the extension opens. No API key, no internet call, no waiting. The engine analyzes the page’s extracted data using the following logic:

Keyword extraction: Words are scored by frequency across the title, H1, H2s, and body text. Words in the title or H1 receive a 6× frequency boost. Common stop words (the, and, is, are… ~80 words) are filtered out. The top 10 keywords become the basis for suggestions.

Title strategies (up to 3):

StrategyLogic
H1-BasedUses the page’s H1 tag, appends brand name if it fits within 63 characters
Keyword-PhraseCombines top two keywords with brand name; only used if result is 20–65 characters
Optimised ExistingTakes the current title; trims if over 60 chars, adds brand if under 50 chars

Description strategies (up to 3): Sentences from the body text are scored using keyword matches, position bonuses (earlier sentences score higher), and length bonuses (100–155 raw chars is the sweet spot). Each strategy targets a 130–162 character output:

StrategyLogic
Best SentenceHighest-scoring sentence from the full body text
Intro-BasedBest sentence restricted to the first 6 sentences only
Structure-BuiltCombines H1 + top 2–3 H2 tags: “[H1]. Topics covered: [H2], [H2], [H2].”
💡
Each suggestion card shows the character count (green = ideal, amber = acceptable, red = outside range), a strategy note explaining how it was built, and a Copy button that copies the text to your clipboard.

AI Generation via Claude

Click Generate with Claude AI to send page context to Anthropic’s Claude model. This produces more nuanced, human-readable suggestions that take into account the actual meaning of the page rather than pure keyword frequency.

What gets sent to Claude: page URL, current title, current description, H1, top 5 H2s, word count, and a 1,200-character slice of the body text. No personal data, no cookies, no user information.

🔑
API key required. If no key is configured, the Generate tab shows an amber notice with a Set up now → link to the Settings tab. Your key is stored in your browser’s local storage and is never shared with echozat.com.

The AI returns 3 title options and 3 description options, each with a short strategy note. Use these as starting points — they work best when combined with your own knowledge of the page’s purpose and audience.


📊 SEO Audit Tab

A 17-check audit that scores your page from 0 to 100, with a circular progress ring and per-check pass/warn/fail breakdown.

Understanding the Score

The score is calculated as earned points ÷ maximum possible points × 100. Each check carries a different weight depending on its SEO importance:

85–100Excellent — well-optimized page
65–84Good — solid fundamentals, room to improve
45–64Needs Work — several gaps affecting rankings
0–44Poor — critical issues need immediate attention

The 17 Audit Checks

8
HTTPS
Page served over a secure connection. HTTPS is a confirmed Google ranking signal since 2014.
6
Title Tag Exists
A <title> tag is present. Missing titles are auto-generated by Google, often poorly.
6
Title Length (50–60)
Titles in the 50–60 character range are less likely to be truncated in search results.
8
Meta Description Exists
A meta description is present. While not a direct ranking factor, it impacts click-through rate.
6
Description Length (150–160)
Descriptions beyond 160 characters are cut off in search results with an ellipsis.
8
H1 Tag (exactly 1)
Every page should have exactly one H1 — the primary topic signal for the page.
4
Heading Structure (H2 exists)
At least one H2 present, indicating a logical content hierarchy beneath the H1.
8
Image Alt Text
Percentage of <img> tags with alt attributes. Alt text helps Google understand image content and improves accessibility.
5
Canonical URL
A <link rel="canonical"> is present, preventing duplicate content issues.
6
Open Graph Tags
og:title, og:description, and og:image all present — required for rich social sharing previews.
4
Twitter Card Tags
twitter:card and core twitter meta tags present for proper Twitter/X link previews.
6
Structured Data (JSON-LD)
At least one <script type="application/ld+json"> block present, enabling rich results.
7
Mobile Viewport
<meta name="viewport"> present. Required for mobile-friendliness — a strong Google ranking factor.
5
Robots Meta
No noindex or nofollow directives that would prevent indexing or link equity flow.
4
Language Attribute
<html lang=""> attribute set. Helps search engines serve the right language to the right users.
5
Content Length (300+ words)
Pages with substantial content tend to rank better. Under 300 words may be considered thin content.
4
Internal Links (3+)
Internal links distribute page authority and help search engines discover related pages.
How to prioritize fixes. Start with the highest-weight checks (HTTPS, meta description, title, H1, image alt text) — they have the biggest impact on your score and SEO health. Structural data and social tags are lower risk but high reward for click-through rates.

🖼️ Preview Tab

See exactly how your page appears in Google search results and social media sharing cards before publishing changes.

Desktop SERP Preview

Simulates a Google desktop search result with:

  • URL breadcrumb in grey
  • Title in blue (truncated at 60 characters)
  • Meta description in grey (truncated at 160 characters)
  • Character count hints for title and description below the card

Mobile SERP Preview

Same as desktop but with narrower constraints reflecting Google’s mobile display limits: title at 55 characters, description at 120 characters.

📱
Mobile-first matters. Google uses mobile-first indexing for most sites. Check the Mobile SERP view to see if your title and description are getting cut off on smaller screens.

Facebook OG Card

Renders the Open Graph preview card using og:image, og:title, og:description, and og:site_name. A placeholder appears if og:image is missing or fails to load.

Tag presence indicators (✓/✗) are shown for each OG property so you can immediately see what’s missing without hunting through source code.

Twitter/X Card

Shows the Twitter/X link card. Supports both summary (small thumbnail left) and summary_large_image (full-width image) card types. Falls back to og:image if twitter:image is not set.

Tag presence indicators show the status of twitter:card, twitter:title, twitter:description, and twitter:image.


📝 Content Tab

Deep content analysis — readability scoring, keyword density, content freshness, and heading architecture.

Readability Score

Uses the Flesch-Kincaid Reading Ease formula, the same scale used by academics, journalists, and content strategists:

Score = 206.835 − 1.015 × (words ÷ sentences) − 84.6 × (syllables ÷ words)
90–100 — Very Easy (5th grade) · Ideal for most web content
80–89 — Easy (6th grade) · Suitable for general audiences
70–79 — Fairly Easy (7th grade) · Comfortable for most adults
60–69 — Standard (8–9th grade) · Average web content
50–59 — Fairly Difficult (10–12th grade) · Consider simplifying
30–49 — Difficult (College) · Likely too complex for a general audience
0–29 — Very Difficult (College+) · Dense academic or technical writing
💡
For marketing, e-commerce, and general web pages, aim for a score of 60 or above. Technical documentation, legal, or medical content may naturally fall lower — that’s acceptable when the audience is specialists.

Content Freshness

Extracts published and modified dates from <meta property="article:published_time">, itemprop="datePublished", and <time pubdate> elements. If no structured date is found, shows “Not found”.

Search engines use freshness as a ranking signal — particularly for news, trending topics, and queries with implied recency (e.g., “best laptops 2024”). Keeping the modified date updated after content revisions helps.

Keyword Density

Shows the top 10 keywords by frequency (after stop-word filtering) with their occurrence count, density percentage, and placement badges:

TKeyword appears in the page title H1Keyword appears in the H1 DKeyword appears in the meta description

Density color coding:

>3% — potentially over-optimized (keyword stuffing risk)
1–3% — healthy density range
<1% — low density for this keyword

The best pages have their primary keyword appearing in the title, H1, and description (all three T/H1/D badges lit). This isn’t about stuffing — it’s about alignment between the page’s topic signals.

Heading Structure

The count bar shows H1–H6 counts in a row (same color logic as the Summary tab). Below it is a full document-order heading tree, indented by level, so you can see how the content is structured hierarchically. Each level uses a distinct color for quick visual scanning.

A well-structured page typically has: one H1 (the page title), several H2s (major sections), and H3s nested under relevant H2s. Skipping levels (e.g., jumping from H2 to H4) makes structure harder to parse for both users and crawlers.


🖼️ Images Tab

A complete image audit — alt text coverage, file sizes, lazy loading status, and background image detection — all in a filterable table.

Filter Bar

Six clickable filters re-render the image table instantly:

FilterShows
TotalAll images including background images
With Alt<img> tags that have an alt attribute (background images excluded)
No Alt<img> tags missing the alt attribute — your action list for accessibility
With TitleImages that have a title attribute (bonus context, not required)
LazyImages using loading="lazy" for performance optimization
BG ImagesBackground images from inline CSS style="background-image: url(...)"

Table Columns Explained

ColumnHow to Interpret
Thumbnail36×36px preview — helps you identify the image at a glance. Grey box = image failed to load.
Image URLFilename (clickable — opens full image in new tab). Format badge shows WEBP/JPG/PNG/GIF/SVG.
Alt✓ green = alt present, ✗ red = missing, violet “BG” = background image (alt N/A for decorative backgrounds)
Title✓ = title attribute set, — = not set. Title text previewed below badge (30 chars)
SizeWidth × height in pixels (top), file size in KB/B from browser performance API (bottom). Blank = data not available (CORS-restricted or cached without timing headers).
Lazy✓ = loading="lazy" set. Important for Core Web Vitals — above-the-fold images should NOT be lazy-loaded.
⚠️
Alt text is non-negotiable. Missing alt text fails both SEO and WCAG accessibility standards. Use the “No Alt” filter to find and fix all offending images. For purely decorative images, use an empty alt attribute (alt="") rather than removing it — this tells screen readers to skip the image.

Background Images

SEO Captain detects background images from inline style attributes (background-image: url(...)). These appear in the table with a violet BG badge instead of an alt ✓/✗, because background images are inherently decorative — alt text doesn’t apply to them. SVG data URIs (typically icons) are automatically filtered out.



🛠️ Tools Tab

Utility actions — export reports, copy meta tags, save snapshots for tracking, generate JSON-LD schema, and jump to Google Search Console.

Export Report

Downloads a self-contained .html file named seo-report-{date}.html containing the SEO audit score, overview table, and all meta data in a shareable format. No special permissions needed — the file is generated in-browser using a Blob download.

Copy Meta Tags

Copies the full set of meta tags as ready-to-paste HTML to your clipboard, including: <title>, <meta name="description">, keywords, canonical, og:title, og:description, og:image, twitter:card, and twitter:title.

Save Snapshot

Saves a lightweight snapshot of the current page — URL, title, description, word count, and SEO quick score — to your browser’s local storage. Useful for tracking SEO progress over time without leaving the extension.

Up to 20 snapshots are stored (newest first). The Snapshot History section below the buttons lists all saved entries, with the current page’s URL highlighted. Each entry can be individually deleted.

Schema Generator

Generates JSON-LD structured data pre-filled with data extracted from the current page. Five schema types are available:

TypePre-filled from page dataBest for
ArticleHeadline, description, URL, author, publisher, datesBlog posts, news articles
FAQ PageFirst 3 H2 tags as question namesFAQ sections (enables Google rich results)
ProductName, description, URLE-commerce product pages
BreadcrumbListURL path segments as list itemsSite breadcrumb navigation
WebSiteSite name, origin URL, SearchActionHomepage sitelinks search box

Copy the generated JSON with the Copy JSON-LD button to get it wrapped in a <script type="application/ld+json"> tag, ready to paste into your CMS or <head>.

GSC Quick Link

Opens Google Search Console with the current page’s URL pre-filled, so you can jump directly to the GSC coverage or performance report for that exact page without having to copy/paste the URL.


⚙️ Settings Tab

Configure your Anthropic API key for AI generation, manage stored data, and find version and support information.

Setting Up Your API Key

1
Get an Anthropic API key

Sign up at console.anthropic.com, create a project, and generate an API key starting with sk-ant-api03-…

2
Paste the key in Settings

Open SEO Captain → Settings tab → paste in the Anthropic API Key field → click Save.

3
Confirm it’s saved

A green “✓ API key saved” message appears for 3 seconds. The Generate tab’s amber notice will disappear.

🔒
Your key stays in your browser. The API key is stored in chrome.storage.local — scoped to the extension, not accessible to websites. It is transmitted only to api.anthropic.com when you trigger AI generation, and is never sent to echozat.com.

Data Management

Clear all snapshots — removes all saved SEO snapshots from local storage. Useful when you want to start fresh tracking a site. This action cannot be undone.

Clear API key — removes the stored API key from local storage and clears the input field. Use this if you want to revoke access or switch to a different key.


📈 Interpreting Scores & Data

A quick reference for what the numbers mean and what “good” looks like.

MetricIdealAcceptableNeeds Fix
Title length50–60 chars30–69 chars<30 or >69
Description length150–160 chars100–169 chars<100 or >169
H1 countExactly 10 or 2+
Readability score60–10050–59<50 (for general audiences)
Keyword density1–3%<1%>3% (stuffing risk)
SEO audit score85–10065–84<65
Word count300+ words200–299 words<200 words (thin content)
Image alt coverage100%80–99%<80%

Frequently Asked Questions

Common questions about using SEO Captain, interpreting results, and troubleshooting.

General

Does SEO Captain work on any website?

SEO Captain works on any http:// or https:// page, including pages behind a login (since the content script reads the already-rendered DOM in your browser). It does not work on browser-internal pages (chrome://), the Chrome Web Store, PDF viewer pages, or pages that explicitly block all content script injection.

Does it send my page data anywhere?

No — all analysis runs locally in your browser. Page data is never sent to echozat.com or any analytics service. The only external call the extension makes is to api.anthropic.com when you explicitly click “Generate with Claude AI” — and even then, only if you’ve configured your own API key. You are in full control.

Is SEO Captain free?

Yes. The extension itself is free. The only cost involved is if you use AI generation — that requires an Anthropic API key billed by Anthropic directly (pay-per-use). The JS auto-generation engine (titles and descriptions) is completely free and requires no API key.

The extension shows an error on the page I’m trying to analyze. Why?

This usually happens for one of these reasons: (1) the page is a browser-internal page like chrome://settings or the Chrome Web Store — these block all extensions, (2) the page uses a Content Security Policy that prevents script injection, or (3) the extension was just installed/updated and the tab hasn’t been refreshed yet. Try hard-refreshing the tab (Cmd+Shift+R / Ctrl+Shift+R) and reopening the extension.

The data looks stale — it’s showing old meta tags from before I made changes.

The content script loads once when a tab opens and is guarded against re-injection. To get fresh data after making changes to a page, hard-refresh the tab first (Cmd+Shift+R / Ctrl+Shift+R), then open SEO Captain. Simply closing and reopening the popup is not enough — the tab itself needs to be refreshed.

Summary & Meta Tags

My title is 58 characters but Google is still truncating it in search results. Why?

Google measures title display width in pixels, not characters. Wide letters like W, M, and uppercase text consume more space than narrow letters like i, l, or lowercase text. A 58-character title with many wide characters can exceed Google’s ~580px display budget. If you’re seeing truncation, try shortening to 50–54 characters to create a safe margin, especially if your title has many capital letters or wide punctuation.

Google is rewriting my title and description in search results — does SEO Captain prevent that?

No tool can prevent Google from rewriting titles and descriptions — that’s entirely Google’s decision. However, Google is less likely to rewrite them if they are: descriptively accurate (match the page content), within the character limits, and not keyword-stuffed. SEO Captain helps you meet all those criteria, which significantly reduces the chances of rewriting. But it cannot guarantee Google will use your text as-is.

The Keywords field is blank. Is that a problem?

Not at all. The <meta name="keywords"> tag has been officially ignored by Google since 2009, and by most major search engines since around the same time. Leaving it blank is perfectly fine. The only edge cases where you might still want it are: certain minor search engines, some CMS systems that generate sitemaps or internal search indexes from it, or legacy technical requirements on specific platforms.

No canonical is set. Should I add one?

It depends. A canonical tag is most valuable when: (1) the same content is accessible via multiple URLs (e.g., with and without trailing slash, with/without URL parameters, HTTP vs HTTPS), (2) you have very similar content on multiple pages, or (3) your site accepts tracking parameters that create URL variations. For a simple page with a unique URL, no canonical is still perfectly fine. Google will often infer the canonical itself.

The schema indicator shows “No schema” but I know I have structured data on this page.

SEO Captain specifically reads <script type="application/ld+json"> blocks — the JSON-LD format. It does not detect schema implemented as Microdata (inline HTML attributes like itemprop) or RDFa. If your structured data uses one of those older formats, the indicator will show “No schema” even though schema is technically present. Google supports all three formats, but JSON-LD is now the recommended approach.

SEO Audit

My score is 72 (Good). What should I focus on first to get to Excellent?

Focus on the highest-weight failing or warning checks first. Sort by points: HTTPS (8), H1 (8), meta description exists (8), image alt text (8), title exists (6), title length (6), description length (6), JSON-LD (6), OG tags (6), viewport (7). A page with all these passing easily reaches 85+. Common quick wins at the “Good” level are: adding missing OG tags, fixing title/description length, and ensuring all images have alt attributes.

The audit says my word count is too low, but this is an intentionally short landing page.

The 300-word minimum is a general guideline, not an absolute rule. Short landing pages, contact pages, and homepages that convert well at low word counts are perfectly fine. The check is designed to catch unintentionally thin pages where content just hasn’t been written yet. You can safely ignore this check for pages where brevity is a deliberate design choice.

The audit shows a warning for my Robots Meta tag even though I want the page indexed.

If you have a <meta name="robots" content="noindex"> or nofollow directive set (possibly added by your CMS automatically), the audit will warn about it even if you don’t intend to block indexing. Check your page source to confirm whether the tag is actually present and what value it’s set to. Many CMS platforms add noindex to draft, staging, or search results pages by default.

Does a higher SEO Captain score guarantee better Google rankings?

No — and any tool that claims otherwise is misleading you. The SEO Captain score measures on-page technical and structural signals. Rankings also depend on factors outside the page: domain authority, backlink profile, Core Web Vitals, user engagement signals, topical relevance, competition, and Google’s constantly-evolving algorithms. A high score means your page’s on-page fundamentals are solid — which is a necessary but not sufficient condition for ranking well.

Content Analysis

My readability score is low (30–50). Should I rewrite the entire page?

Not necessarily. First, check if the low score is appropriate for your audience. Technical documentation, medical content, legal text, and academic writing is expected to be complex — a Flesch score of 30 is fine for a whitepaper aimed at PhDs. But if you’re writing for a general consumer audience and your score is low, the most effective improvements are: breaking long sentences into shorter ones, replacing jargon with plain language, and converting complex compound sentences into two simpler ones.

A keyword I care about doesn’t appear in the Keyword Density table. Why?

The table shows the top 10 keywords by frequency after filtering ~80 common stop words. Your keyword might not appear because: (1) it’s less frequent than the 10 keywords shown, (2) it’s in the stop word list (very common words), (3) it’s a multi-word phrase (the tool analyzes individual words, not phrases), or (4) the body text used for analysis is capped at 2,000 characters — if the page is very long, some content may not be captured.

The published date shows “Not found” but the page clearly shows a date.

SEO Captain reads publication dates from machine-readable structured signals: <meta property="article:published_time">, itemprop="datePublished", <time pubdate>, and similar patterns. A date visible in the page’s body text or displayed by a custom component that doesn’t use these standardized attributes won’t be detected. To make dates machine-readable (and improve Google’s understanding of freshness), add the appropriate schema.org or Open Graph date meta tags.

Images & Links

Some images have no file size shown. Why?

File sizes come from the browser’s Performance Resource Timing API. Three situations cause a blank: (1) cross-origin images without a Timing-Allow-Origin response header — browsers block their timing data for privacy, (2) images served from cache where transferSize = 0 and no encodedBodySize is available, (3) inline data URIs — these have no network request to measure. Blank size is not an error; it just means timing data isn’t available for that particular image in this browser session.

The image count in the extension is different from what I see on the page. Why?

Several reasons can cause a mismatch: (1) Images loaded by JavaScript after the initial DOM render may not be captured if the extension opened before they loaded — hard-refresh and reopen. (2) CSS background images in external stylesheets are not captured (only inline style attributes are); images set via CSS classes in linked stylesheets won’t appear. (3) Images inside iframes are in a different document context and cannot be accessed.

A link shows as broken (404) but it works fine when I open it. What’s happening?

A few possibilities: (1) The server returns a 404 for HEAD requests but works for GET requests — this is a server misconfiguration but not uncommon. (2) The page requires JavaScript to render and the HEAD request hits a pre-render that isn’t ready. (3) Rate limiting — if you checked many links quickly, the server may have temporarily blocked the requests. (4) Authentication — the link requires a session cookie that the HEAD request doesn’t carry. Try using the “Re-check” button and visiting the URL directly to compare.

Why does the broken link checker only check 25 links?

The 25-link cap prevents the extension from overwhelming the server with simultaneous HEAD requests, which could trigger rate limiting or look like a denial-of-service attempt. All 25 requests run in parallel for speed. For larger link audits on production sites, a dedicated crawl tool like Screaming Frog, Sitebulb, or Ahrefs Site Audit is more appropriate.

AI Generation & API Key

Where do I get an Anthropic API key?

Sign up at console.anthropic.com, create a new project, and generate an API key from the Keys section. New accounts receive a free credits tier. Beyond that, Anthropic charges per token (input + output) on a pay-per-use basis. Each SEO Captain AI generation call uses a small amount of tokens — typically well under 1,000 input tokens and 400 output tokens per call.

Is my API key safe? Could it be stolen or misused?

Your API key is stored in chrome.storage.local, which is scoped exclusively to the SEO Captain extension. Web pages cannot access it; other extensions cannot access it. It is only transmitted to api.anthropic.com when you click “Generate with Claude AI”, over HTTPS. It is never sent to echozat.com, never logged, and never stored anywhere except your own browser. As a best practice, you can set usage limits on your Anthropic API key from the console to cap any potential misuse.

AI generation failed with an error. What should I check?

Common causes: (1) Invalid API key — double-check the key in Settings; it should start with sk-ant-api03-. (2) Insufficient credits — log into console.anthropic.com to check your balance. (3) Rate limiting — Anthropic’s API has per-minute request limits; wait a few seconds and try again. (4) Network issue — check your internet connection. If the problem persists, the Anthropic status page at status.anthropic.com will show any ongoing incidents.

The AI suggestions are not very accurate for my page. How can I get better results?

The AI generates suggestions based on what it receives: URL, title, description, H1, top H2s, and a 1,200-character body text slice. Pages where the most relevant content appears deeper in the body (beyond the first ~1,200 characters) may yield less accurate suggestions. Also, pages with very little readable body text (mostly images, videos, or JavaScript-rendered content with no server-side rendered text) give the AI less to work with. For those pages, the JS auto-generation engine using the heading structure often produces more usable results.

Tools & Export

How do I use the exported JSON-LD schema in my site?

Paste the copied JSON-LD (which includes the <script type="application/ld+json"> wrapper) inside the <head> section of your HTML page. In a CMS like WordPress, most SEO plugins (Yoast, Rank Math) have a field for custom schema; paste it there. For Shopify, use the Additional scripts section in the theme editor or a custom app. After adding it, validate it with Google’s Rich Results Test to confirm it’s correctly structured.

My snapshots disappeared. What happened?

Snapshots are stored in chrome.storage.local, which is tied to your Chrome profile and the extension. They can be lost if: (1) you used the “Clear all snapshots” button in Settings, (2) you uninstalled and reinstalled the extension (local storage is deleted on uninstall), (3) you cleared Chrome’s site data with an overly broad setting that included extension storage. Snapshots are not synced across devices — they are local to the browser where they were saved.

Can I export snapshots as a CSV or JSON file?

Not currently — snapshots can be viewed within the extension and deleted individually, but bulk export to CSV/JSON is not available in version 1.0. The HTML Export Report (Export Report button in Tools) exports the current page’s full analysis as a self-contained HTML file you can share, print, or archive.

Privacy & Data

Does SEO Captain track which pages I visit?

No. There is no analytics, telemetry, or usage tracking of any kind in the extension. It does not know what pages you’ve opened it on. No data is ever sent to echozat.com. The only external network call the extension can make is to api.anthropic.com, and only when you explicitly click “Generate with Claude AI”.

What permissions does SEO Captain require and why?

activeTab — to inject the content script into the current tab and read its DOM. storage — to save your API key and snapshots in local storage. tabs — to open links (Robots.txt, Sitemap, broken link results, GSC) in new tabs. Host permission for api.anthropic.com — to make direct API calls from the browser popup for AI generation. No other permissions are requested.

Can SEO Captain read pages I visit when the popup isn’t open?

The content script is injected into pages automatically (because it’s declared as a content script in the manifest for immediate availability), but it only reads and sends data when the popup sends an explicit analyzePage message — which only happens when you open the extension popup on a page. There is no background monitoring, passive data collection, or reading of pages you haven’t explicitly opened the extension on.