Skip to content

Commit 3dcb862

Browse files
Paul Mulliganclaude
andcommitted
refactor: rebrand AI SEO Copilot to Optia
Rename all brand references across code, config, docs and UI from "AI SEO Copilot"/"SEO Copilot" to "Optia". Updates package names (optia-extension, optia), manifest name/short_name/default_title, HTML <title> tags, service-worker log prefixes, internal CSS identifiers (optia-highlight/optia-styles), and rewords the robot/copilot framing toward a score-first concept. External properties (GitHub repo/remote, Webflow site, Chrome Web Store listing, GitBook docs, Featurebase, Figma file) are intentionally left unchanged and documented as manual-rename TODOs in README.md. Build passes; 309 tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 91a5923 commit 3dcb862

17 files changed

Lines changed: 71 additions & 58 deletions

README.md

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,22 @@
1-
# AI SEO Copilot - Chrome Extension
1+
# Optia - Chrome Extension
22

33
A Chrome extension that analyzes web pages for SEO optimization and provides AI-powered recommendations to improve search rankings.
44

55
**Website:** https://ai-seo-copilot.webflow.io/
66

7+
> ⚠️ **Rebrand in progress (AI SEO Copilot → Optia).** The codebase, UI, docs, and package names have been renamed to **Optia**. The items below live on **external systems** and must be renamed/migrated **manually by the project owner** — they were intentionally left unchanged so links don't break before migration:
8+
>
9+
> - **GitHub repository & remote URL** — currently `die-Manufaktur/AISEOC-Chrome-Extension`. Rename the repo, update the git remote, then update the links in `docs/` and `app/src/components/Footer.tsx`.
10+
> - **Marketing website**`https://ai-seo-copilot.webflow.io/` (Webflow project).
11+
> - **Chrome Web Store listing** — extension name, description, screenshots, and the public store URL.
12+
> - **Documentation site**`ai-seo-copilot.gitbook.io` (referenced in `app/src/lib/docs-links.ts` and `app/src/components/Footer.tsx`).
13+
> - **Feature-request portal**`aiseocopilot.featurebase.app` (referenced in `app/src/components/Footer.tsx`).
14+
> - **Bug-report repo link**`github.com/PMDevSolutions/seo-copilot` (referenced in `app/src/components/Footer.tsx`).
15+
> - **Figma design file**`…/AI-SEO-Copilot-design` (referenced in `app/QA-PROMPT.md`).
16+
> - **Donation / sponsor links** — none found in the repo; update if any exist outside it.
17+
>
18+
> After migrating each external property, update the corresponding URL in `Footer.tsx`, `docs-links.ts`, and the docs to the new Optia domain.
19+
720
## Features
821

922
- **Real-time SEO Analysis** - Instant scoring for titles, meta descriptions, headings, images, and more
@@ -29,7 +42,7 @@ pnpm build
2942
## Project Structure
3043

3144
```
32-
ai-seo-copilot-extension/
45+
optia-extension/
3346
├── app/ # Chrome extension source code
3447
│ ├── src/ # React + TypeScript source
3548
│ ├── dist/ # Built extension (load this in Chrome)

app/CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Changelog
22

3-
All notable changes to AI SEO Copilot will be documented in this file.
3+
All notable changes to Optia will be documented in this file.
44

55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

app/PRIVACY_POLICY.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# Privacy Policy — AI SEO Copilot
1+
# Privacy Policy — Optia
22

33
**Last updated:** April 1, 2026
44

5-
AI SEO Copilot is a Chrome browser extension that analyzes web pages for SEO issues and provides recommendations. This privacy policy explains what data the extension accesses, how it is used, and how it is stored.
5+
Optia is a Chrome browser extension that analyzes web pages for SEO issues and provides recommendations. This privacy policy explains what data the extension accesses, how it is used, and how it is stored.
66

77
## Data the Extension Accesses
88

@@ -53,7 +53,7 @@ No data is stored on external servers. No cookies are set. No analytics or track
5353

5454
## Data Sharing
5555

56-
AI SEO Copilot does **not**:
56+
Optia does **not**:
5757

5858
- Collect or transmit personal information
5959
- Use analytics, telemetry, or tracking of any kind

app/QA-PROMPT.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# AI SEO Copilot — Visual QA, Functional Testing & Code Review
1+
# Optia — Visual QA, Functional Testing & Code Review
22

33
## Your Role
44

@@ -73,7 +73,7 @@ The app uses a strict dark-mode design system. Match these tokens against both F
7373
#### Screen 1: Setup Page (initial state)
7474
- Navigate to the dev app URL. This is the default view.
7575
- **Expected elements:**
76-
- Blue circle icon with Settings gear + "AI SEO Copilot" heading
76+
- Blue circle icon with Settings gear + "Optia" heading
7777
- "Dev mode" subtitle
7878
- "Page URL to Analyze" input (dev mode only)
7979
- "OpenAI API Key (optional)" password input
@@ -329,7 +329,7 @@ Read the following files and review for correctness, consistency, and bugs:
329329
Produce your report in this structure:
330330

331331
```markdown
332-
# AI SEO Copilot — QA Report
332+
# Optia — QA Report
333333

334334
## 1. Visual Comparison
335335

app/README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# AI SEO Copilot - Chrome Extension
1+
# Optia - Chrome Extension
22

33
A Chrome extension that analyzes web pages for SEO issues and provides AI-powered recommendations to improve search rankings.
44

@@ -46,8 +46,8 @@ You should see something like `9.x.x`
4646
Clone or download this repository from GitHub:
4747

4848
```bash
49-
git clone https://github.com/YOUR-USERNAME/ai-seo-copilot-extension.git
50-
cd ai-seo-copilot-extension
49+
git clone https://github.com/YOUR-USERNAME/optia-extension.git
50+
cd optia-extension
5151
```
5252

5353
Or download the ZIP file from GitHub and extract it.
@@ -85,15 +85,15 @@ This creates a `dist` folder with the built extension.
8585

8686
4. Navigate to the `app/dist` folder inside this project and select it
8787

88-
5. The AI SEO Copilot extension icon should appear in your browser toolbar
88+
5. The Optia extension icon should appear in your browser toolbar
8989

9090
---
9191

9292
## Using the Extension
9393

9494
1. Navigate to any website you want to analyze
9595

96-
2. Click the AI SEO Copilot icon in your toolbar (the little robot)
96+
2. Click the Optia icon in your toolbar
9797

9898
3. Enter your target keyword and click **Analyze**
9999

app/dev.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<meta charset="UTF-8" />
55
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
66
<link rel="icon" type="image/svg+xml" href="/icons/icon-32.svg" />
7-
<title>AI SEO Copilot — Dev Preview</title>
7+
<title>Optia — Dev Preview</title>
88
<style>
99
body { margin: 0; display: flex; justify-content: center; background: #111; }
1010
#frame { width: 715px; min-height: 100vh; }

app/manifest.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"manifest_version": 3,
3-
"name": "AI SEO Copilot",
4-
"short_name": "SEO Copilot",
3+
"name": "Optia",
4+
"short_name": "Optia",
55
"description": "Analyze page SEO and get AI-powered recommendations",
66
"version": "0.1.0",
77
"minimum_chrome_version": "116",
@@ -31,7 +31,7 @@
3131
"open_in_tab": false
3232
},
3333
"action": {
34-
"default_title": "Open AI SEO Copilot",
34+
"default_title": "Open Optia",
3535
"default_icon": {
3636
"16": "icons/icon-16.png",
3737
"32": "icons/icon-32.png",

app/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "ai-seo-copilot",
2+
"name": "optia",
33
"version": "0.1.0",
44
"private": true,
55
"type": "module",

app/src/background/service-worker.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { extractPageDataInline } from "@/lib/extract-page-data-inline";
22

3-
console.log("[AI SEO Copilot] Service worker initializing...");
3+
console.log("[Optia] Service worker initializing...");
44

55
// Disable automatic panel opening - we'll handle it manually for per-tab scoping
66
chrome.sidePanel.setPanelBehavior({ openPanelOnActionClick: false });
@@ -32,7 +32,7 @@ chrome.storage.session.get(PANEL_TABS_KEY).then((result) => {
3232
const saved = result[PANEL_TABS_KEY] as number[] | undefined;
3333
if (saved?.length) {
3434
saved.forEach((id) => panelTabs.add(id));
35-
console.log("[AI SEO Copilot] Restored panel tabs:", saved);
35+
console.log("[Optia] Restored panel tabs:", saved);
3636
}
3737
}).catch(() => {
3838
// Ignore errors
@@ -56,26 +56,26 @@ async function removePanelTab(tabId: number): Promise<void> {
5656
await persistPanelTabs();
5757
}
5858

59-
console.log("[AI SEO Copilot] Service worker initialized successfully");
59+
console.log("[Optia] Service worker initialized successfully");
6060

6161
// When the user switches tabs, hide the panel unless it was opened on that tab.
6262
// Only start scoping after the panel has been opened at least once — otherwise
6363
// the first click after install/reload would be blocked (chicken-and-egg bug).
6464
chrome.tabs.onActivated.addListener(({ tabId }) => {
65-
console.log("[AI SEO Copilot] Tab activated:", tabId, "panelTabs:", Array.from(panelTabs));
65+
console.log("[Optia] Tab activated:", tabId, "panelTabs:", Array.from(panelTabs));
6666
if (panelTabs.size === 0) {
67-
console.log("[AI SEO Copilot] panelTabs empty, skipping");
67+
console.log("[Optia] panelTabs empty, skipping");
6868
return;
6969
}
7070
if (panelTabs.has(tabId)) {
71-
console.log("[AI SEO Copilot] Enabling panel for tab:", tabId);
71+
console.log("[Optia] Enabling panel for tab:", tabId);
7272
chrome.sidePanel.setOptions({
7373
tabId,
7474
path: "src/sidepanel/index.html",
7575
enabled: true,
7676
});
7777
} else {
78-
console.log("[AI SEO Copilot] Disabling panel for tab:", tabId);
78+
console.log("[Optia] Disabling panel for tab:", tabId);
7979
chrome.sidePanel.setOptions({ tabId, enabled: false });
8080
}
8181
});
@@ -89,14 +89,14 @@ chrome.tabs.onRemoved.addListener((tabId) => {
8989
});
9090
});
9191

92-
console.log("[AI SEO Copilot] Registering message listener...");
92+
console.log("[Optia] Registering message listener...");
9393

9494
chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => {
95-
console.log("[AI SEO Copilot] Received message:", message.type);
95+
console.log("[Optia] Received message:", message.type);
9696

9797
// Ping handler for verifying service worker is responsive
9898
if (message.type === "PING") {
99-
console.log("[AI SEO Copilot] Responding to PING");
99+
console.log("[Optia] Responding to PING");
100100
sendResponse({ pong: true, timestamp: Date.now() });
101101
return true;
102102
}
@@ -147,31 +147,31 @@ chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => {
147147
// (Side panel already tried content script and it failed, so skip that step here)
148148
if (message.type === "EXTRACT_PAGE_DATA") {
149149
const tabId = message.tabId as number;
150-
console.log("[AI SEO Copilot] EXTRACT_PAGE_DATA for tab:", tabId);
150+
console.log("[Optia] EXTRACT_PAGE_DATA for tab:", tabId);
151151
(async () => {
152152
try {
153153
// Inject the analyzer directly via executeScript
154-
console.log("[AI SEO Copilot] Executing analyzer script...");
154+
console.log("[Optia] Executing analyzer script...");
155155
const results = await chrome.scripting.executeScript({
156156
target: { tabId },
157157
func: extractPageDataInline,
158158
});
159-
console.log("[AI SEO Copilot] executeScript completed, results:", results?.length ?? 0);
159+
console.log("[Optia] executeScript completed, results:", results?.length ?? 0);
160160
const data = results?.[0]?.result;
161161
if (data) {
162-
console.log("[AI SEO Copilot] Sending extracted data back");
162+
console.log("[Optia] Sending extracted data back");
163163
sendResponse({ data });
164164
} else {
165-
console.log("[AI SEO Copilot] No data from executeScript");
165+
console.log("[Optia] No data from executeScript");
166166
sendResponse({ error: "Failed to extract page data" });
167167
}
168168
} catch (error) {
169-
console.error("[AI SEO Copilot] EXTRACT_PAGE_DATA error:", error);
169+
console.error("[Optia] EXTRACT_PAGE_DATA error:", error);
170170
sendResponse({ error: String(error) });
171171
}
172172
})().catch((err) => {
173173
// Catch any unhandled promise rejections from the async IIFE
174-
console.error("[AI SEO Copilot] Unhandled error in EXTRACT_PAGE_DATA:", err);
174+
console.error("[Optia] Unhandled error in EXTRACT_PAGE_DATA:", err);
175175
try {
176176
sendResponse({ error: String(err) });
177177
} catch {

app/src/components/Onboarding.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@ export function Onboarding() {
3030
</button>
3131

3232
<div className="text-center">
33-
<h2 className="text-h2 text-text-primary mb-2">AI SEO Copilot</h2>
33+
<h2 className="text-h2 text-text-primary mb-2">Optia</h2>
3434
<p className="text-body-16 text-text-secondary mb-6">
35-
Your AI-powered SEO assistant
35+
Instant SEO scores with plain-language fixes
3636
</p>
3737
</div>
3838

0 commit comments

Comments
 (0)