Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions plugins/first-rank-pro/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# First Rank Pro

On-page SEO auditing for Framer sites. First Rank Pro analyzes the published pages of your project and checks the fundamentals search engines care about: page title, meta description, H1 and heading hierarchy, main-keyword usage and placement, image alt text, and content length — with a quick summary, per-check guidance, and a live SERP preview.

**By:** @arun-dev-des

![Quick Summary](docs/01-quick-summary.png)

The plugin is live on the Framer Marketplace: [**First Rank Pro**](https://www.framer.com/marketplace/plugins/first-rank-pro/) (plugin id `117943`). Marketplace versions are published manually by the author.

## How it works

- Pages and publish state come from the Plugin API (`getPublishInfo`, `subscribeToPublishInfo`, `getNodesWithType("WebPageNode")`), so the audited domain updates live when the site is republished. When a project has both a custom domain and a `*.framer.app` domain, a switcher in the navbar selects which one to audit.
- Page HTML is fetched through Framer's own CORS proxy (`framer-cors-proxy.framer-team.workers.dev`, the same worker other plugins in this repo use) and analyzed client-side. Override it with any transparent CORS-proxy prefix (the target URL is appended raw) via the `VITE_PROXY_URL` environment variable:

```bash
VITE_PROXY_URL="https://your-proxy.example.com/?" yarn dev --filter=first-rank-pro
```

- Image alt text can be edited inline; updates are written back to canvas nodes via `setAttributes` with cloned `ImageAsset`s.
- Focus keywords and analysis summaries persist via `setPluginData`/`getPluginData`.
- AI generation surfaces (suggested titles, descriptions, H1s, keywords, and alt text) exist in the code base but are disabled behind a single flag (`src/config/featureFlags.ts`, `AI_GENERATION_ENABLED = false`); the endpoints are env-overridable (`VITE_AI_API_URL`, `VITE_ALT_TEXT_API_URL`).
- The plugin intentionally does not import `framer-plugin/framer.css`; it ships its own design system that themes light/dark off the `data-framer-theme` attribute Framer sets on `<body>` (WCAG AA contrast in both themes), plus an in-plugin theme toggle.

## Development

```bash
yarn dev --filter=first-rank-pro
```

Then open the printed `https://localhost` URL in Framer via **Plugins → Developer Tools → Open Development Plugin**.
Binary file added plugins/first-rank-pro/docs/01-quick-summary.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions plugins/first-rank-pro/framer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"id": "117943",
"name": "First Rank Pro",
"modes": ["canvas"],
"icon": "/icon.svg"
}
16 changes: 16 additions & 0 deletions plugins/first-rank-pro/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/icon.svg" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>First Rank Pro</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
22 changes: 22 additions & 0 deletions plugins/first-rank-pro/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "first-rank-pro",
"type": "module",
"scripts": {
"dev": "run g:dev",
"build": "run g:build",
"check-biome": "run g:check-biome",
"check-eslint": "run g:check-eslint",
"preview": "run g:preview",
"pack": "run g:pack",
"check-typescript": "run g:check-typescript"
},
"dependencies": {
"framer-plugin": "3.11.0-alpha.12",
"react": "^18.3.1",
"react-dom": "^18.3.1"
},
"devDependencies": {
"@types/react": "^18.3.24",
"@types/react-dom": "^18.3.7"
}
}
60 changes: 60 additions & 0 deletions plugins/first-rank-pro/public/icon.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading