antigravity-seo-kit 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of antigravity-seo-kit might be problematic. Click here for more details.
- package/.agent/agent.md +96 -0
- package/.agent/skills/seo/SKILL.md +153 -0
- package/.agent/skills/seo/references/cwv-thresholds.md +108 -0
- package/.agent/skills/seo/references/eeat-framework.md +214 -0
- package/.agent/skills/seo/references/local-schema-types.md +230 -0
- package/.agent/skills/seo/references/local-seo-signals.md +218 -0
- package/.agent/skills/seo/references/maps-api-endpoints.md +160 -0
- package/.agent/skills/seo/references/maps-free-apis.md +176 -0
- package/.agent/skills/seo/references/maps-gbp-checklist.md +150 -0
- package/.agent/skills/seo/references/maps-geo-grid.md +154 -0
- package/.agent/skills/seo/references/quality-gates.md +155 -0
- package/.agent/skills/seo/references/schema-types.md +118 -0
- package/.agent/skills/seo/schema/templates.json +213 -0
- package/.agent/skills/seo/scripts/analyze_visual.py +217 -0
- package/.agent/skills/seo/scripts/capture_screenshot.py +181 -0
- package/.agent/skills/seo/scripts/fetch_page.py +196 -0
- package/.agent/skills/seo/scripts/parse_html.py +201 -0
- package/.agent/skills/seo-audit/SKILL.md +278 -0
- package/.agent/skills/seo-competitor-pages/SKILL.md +212 -0
- package/.agent/skills/seo-content/SKILL.md +230 -0
- package/.agent/skills/seo-dataforseo/SKILL.md +418 -0
- package/.agent/skills/seo-geo/SKILL.md +305 -0
- package/.agent/skills/seo-google/SKILL.md +405 -0
- package/.agent/skills/seo-google/assets/templates/cwv-audit-report.md +48 -0
- package/.agent/skills/seo-google/assets/templates/gsc-performance-report.md +44 -0
- package/.agent/skills/seo-google/assets/templates/indexation-status-report.md +43 -0
- package/.agent/skills/seo-google/references/auth-setup.md +154 -0
- package/.agent/skills/seo-google/references/ga4-data-api.md +184 -0
- package/.agent/skills/seo-google/references/indexing-api.md +107 -0
- package/.agent/skills/seo-google/references/keyword-planner-api.md +66 -0
- package/.agent/skills/seo-google/references/nlp-api.md +55 -0
- package/.agent/skills/seo-google/references/pagespeed-crux-api.md +204 -0
- package/.agent/skills/seo-google/references/rate-limits-quotas.md +75 -0
- package/.agent/skills/seo-google/references/search-console-api.md +156 -0
- package/.agent/skills/seo-google/references/supplementary-apis.md +99 -0
- package/.agent/skills/seo-google/references/youtube-api.md +49 -0
- package/.agent/skills/seo-google/scripts/crux_history.py +321 -0
- package/.agent/skills/seo-google/scripts/ga4_report.py +478 -0
- package/.agent/skills/seo-google/scripts/google_auth.py +795 -0
- package/.agent/skills/seo-google/scripts/google_report.py +2273 -0
- package/.agent/skills/seo-google/scripts/gsc_inspect.py +340 -0
- package/.agent/skills/seo-google/scripts/gsc_query.py +378 -0
- package/.agent/skills/seo-google/scripts/indexing_notify.py +313 -0
- package/.agent/skills/seo-google/scripts/keyword_planner.py +297 -0
- package/.agent/skills/seo-google/scripts/nlp_analyze.py +309 -0
- package/.agent/skills/seo-google/scripts/pagespeed_check.py +649 -0
- package/.agent/skills/seo-google/scripts/youtube_search.py +355 -0
- package/.agent/skills/seo-hreflang/SKILL.md +192 -0
- package/.agent/skills/seo-image-gen/SKILL.md +211 -0
- package/.agent/skills/seo-image-gen/references/cost-tracking.md +47 -0
- package/.agent/skills/seo-image-gen/references/gemini-models.md +200 -0
- package/.agent/skills/seo-image-gen/references/mcp-tools.md +115 -0
- package/.agent/skills/seo-image-gen/references/post-processing.md +192 -0
- package/.agent/skills/seo-image-gen/references/presets.md +69 -0
- package/.agent/skills/seo-image-gen/references/prompt-engineering.md +411 -0
- package/.agent/skills/seo-image-gen/references/seo-image-presets.md +137 -0
- package/.agent/skills/seo-image-gen/scripts/batch.py +97 -0
- package/.agent/skills/seo-image-gen/scripts/cost_tracker.py +191 -0
- package/.agent/skills/seo-image-gen/scripts/edit.py +141 -0
- package/.agent/skills/seo-image-gen/scripts/generate.py +149 -0
- package/.agent/skills/seo-image-gen/scripts/presets.py +153 -0
- package/.agent/skills/seo-image-gen/scripts/setup_mcp.py +151 -0
- package/.agent/skills/seo-image-gen/scripts/validate_setup.py +133 -0
- package/.agent/skills/seo-images/SKILL.md +176 -0
- package/.agent/skills/seo-local/SKILL.md +381 -0
- package/.agent/skills/seo-maps/SKILL.md +328 -0
- package/.agent/skills/seo-page/SKILL.md +86 -0
- package/.agent/skills/seo-plan/SKILL.md +118 -0
- package/.agent/skills/seo-plan/assets/agency.md +175 -0
- package/.agent/skills/seo-plan/assets/ecommerce.md +167 -0
- package/.agent/skills/seo-plan/assets/generic.md +144 -0
- package/.agent/skills/seo-plan/assets/local-service.md +160 -0
- package/.agent/skills/seo-plan/assets/publisher.md +153 -0
- package/.agent/skills/seo-plan/assets/saas.md +135 -0
- package/.agent/skills/seo-programmatic/SKILL.md +171 -0
- package/.agent/skills/seo-schema/SKILL.md +223 -0
- package/.agent/skills/seo-sitemap/SKILL.md +180 -0
- package/.agent/skills/seo-technical/SKILL.md +211 -0
- package/.agent/workflows/seo-audit.md +17 -0
- package/.agent/workflows/seo-competitor-pages.md +12 -0
- package/.agent/workflows/seo-content.md +14 -0
- package/.agent/workflows/seo-geo.md +12 -0
- package/.agent/workflows/seo-google.md +12 -0
- package/.agent/workflows/seo-hreflang.md +12 -0
- package/.agent/workflows/seo-images.md +13 -0
- package/.agent/workflows/seo-local.md +12 -0
- package/.agent/workflows/seo-maps.md +11 -0
- package/.agent/workflows/seo-page.md +13 -0
- package/.agent/workflows/seo-plan.md +13 -0
- package/.agent/workflows/seo-programmatic.md +12 -0
- package/.agent/workflows/seo-schema.md +11 -0
- package/.agent/workflows/seo-sitemap.md +9 -0
- package/.agent/workflows/seo-technical.md +18 -0
- package/LICENSE +88 -0
- package/README.md +122 -0
- package/bin/cli.js +117 -0
- package/docs/ARCHITECTURE.md +218 -0
- package/docs/COMMANDS.md +184 -0
- package/docs/INSTALLATION.md +100 -0
- package/docs/MCP-INTEGRATION.md +153 -0
- package/docs/TROUBLESHOOTING.md +151 -0
- package/docs/superpowers/plans/2026-03-13-github-audit-fixes.md +511 -0
- package/extensions/banana/README.md +95 -0
- package/extensions/banana/docs/BANANA-SETUP.md +86 -0
- package/extensions/banana/install.sh +170 -0
- package/extensions/banana/references/cost-tracking.md +47 -0
- package/extensions/banana/references/gemini-models.md +200 -0
- package/extensions/banana/references/mcp-tools.md +115 -0
- package/extensions/banana/references/post-processing.md +192 -0
- package/extensions/banana/references/presets.md +69 -0
- package/extensions/banana/references/prompt-engineering.md +411 -0
- package/extensions/banana/references/seo-image-presets.md +137 -0
- package/extensions/banana/scripts/batch.py +97 -0
- package/extensions/banana/scripts/cost_tracker.py +191 -0
- package/extensions/banana/scripts/edit.py +141 -0
- package/extensions/banana/scripts/generate.py +149 -0
- package/extensions/banana/scripts/presets.py +153 -0
- package/extensions/banana/scripts/setup_mcp.py +151 -0
- package/extensions/banana/scripts/validate_setup.py +133 -0
- package/extensions/banana/uninstall.sh +43 -0
- package/extensions/dataforseo/README.md +169 -0
- package/extensions/dataforseo/docs/DATAFORSEO-SETUP.md +74 -0
- package/extensions/dataforseo/field-config.json +280 -0
- package/extensions/dataforseo/install.ps1 +110 -0
- package/extensions/dataforseo/install.sh +161 -0
- package/extensions/dataforseo/uninstall.ps1 +35 -0
- package/extensions/dataforseo/uninstall.sh +39 -0
- package/lib/api.js +190 -0
- package/lib/fingerprint.js +68 -0
- package/lib/installer.js +486 -0
- package/lib/utils.js +254 -0
- package/package.json +40 -0
- package/pyproject.toml +11 -0
- package/requirements-google.txt +15 -0
- package/requirements.txt +11 -0
|
@@ -0,0 +1,511 @@
|
|
|
1
|
+
# GitHub Audit Fixes Implementation Plan
|
|
2
|
+
|
|
3
|
+
> **For agentic workers:** REQUIRED: Use superpowers:subagent-driven-development (if subagents available) or superpowers:executing-plans to implement this plan. Steps use checkbox (`- [ ]`) syntax for tracking.
|
|
4
|
+
|
|
5
|
+
**Goal:** Raise the GitHub repo health score from 70/100 by closing all audit gaps identified in the 2026-03-13 audit.
|
|
6
|
+
|
|
7
|
+
**Architecture:** All changes are isolated file edits and net-new file creation, with no refactoring and no dependency changes. GitHub settings are updated via `gh repo edit`. The `.github/` directory does not yet exist; all files in it are created from scratch with zero conflict risk.
|
|
8
|
+
|
|
9
|
+
**Tech Stack:** Markdown, YAML, GitHub Actions, `gh` CLI
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Pre-flight Checklist (Verify Before Any Changes)
|
|
14
|
+
|
|
15
|
+
- [ ] Confirm `agents/` directory has exactly 7 files:
|
|
16
|
+
`seo-content.md seo-geo.md seo-performance.md seo-schema.md seo-sitemap.md seo-technical.md seo-visual.md`
|
|
17
|
+
- [ ] Confirm CITATION.cff does NOT exist: `ls CITATION.cff 2>&1` → "No such file"
|
|
18
|
+
- [ ] Confirm `.github/` does NOT exist: `ls .github/ 2>&1` → "No such file"
|
|
19
|
+
- [ ] Confirm `plugin.json` version is `"1.3.2"` and agents array has 6 items (missing seo-geo)
|
|
20
|
+
- [ ] Confirm README line 181 says `Subagents (6 total)`
|
|
21
|
+
- [ ] Confirm CHANGELOG.md line 123 says "6 subagents" - **this is in the v1.0.0 historical entry, do NOT touch it**
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Task 1: Fix plugin.json (version bump + add seo-geo agent)
|
|
26
|
+
|
|
27
|
+
**Files:** Modify `plugin.json`
|
|
28
|
+
|
|
29
|
+
**What & Why:** Version is still `1.3.2` but the codebase is on v1.4.0. The `agents` array is missing `agents/seo-geo.md` which was added in v1.4.0.
|
|
30
|
+
|
|
31
|
+
**Safe to change:** Purely additive - adding one entry to the array and bumping a string.
|
|
32
|
+
|
|
33
|
+
- [ ] Open `plugin.json`, verify current state:
|
|
34
|
+
- `"version": "1.3.2"` ← stale
|
|
35
|
+
- agents array has 6 items, ends with `"agents/seo-visual.md"` ← missing seo-geo
|
|
36
|
+
- [ ] Change `"version"` from `"1.3.2"` to `"1.4.0"`
|
|
37
|
+
- [ ] Add `"agents/seo-geo.md"` to the `agents` array (after `"agents/seo-visual.md"`)
|
|
38
|
+
- [ ] Verify the JSON is valid: `python3 -c "import json; json.load(open('.claude-plugin/plugin.json'))"`
|
|
39
|
+
- [ ] Commit:
|
|
40
|
+
```bash
|
|
41
|
+
git add .claude-plugin/plugin.json
|
|
42
|
+
git commit -m "fix: bump plugin.json to v1.4.0 and add seo-geo agent"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Task 2: Fix README.md (H1 keyword, ToC, version badge, architecture count)
|
|
48
|
+
|
|
49
|
+
**Files:** Modify `README.md`
|
|
50
|
+
|
|
51
|
+
**What & Why:**
|
|
52
|
+
- H1 is `# Claude SEO` (weak keyword signal) → add keyword suffix
|
|
53
|
+
- No Table of Contents (10+ sections, hard to navigate)
|
|
54
|
+
- Only 2 badges → add GitHub release version badge
|
|
55
|
+
- Architecture block says `Subagents (6 total)` → should be 7
|
|
56
|
+
|
|
57
|
+
**Safe to change:** All edits are in isolated sections. No cross-file references break.
|
|
58
|
+
|
|
59
|
+
- [ ] Strengthen H1 (line 5):
|
|
60
|
+
- Change `# Claude SEO` -> `# Claude SEO: SEO Audit Skill for Claude Code`
|
|
61
|
+
- [ ] Add version badge after existing badges (line 12, after License badge):
|
|
62
|
+
```markdown
|
|
63
|
+
[](https://github.com/AgriciDaniel/claude-seo/releases)
|
|
64
|
+
```
|
|
65
|
+
- [ ] Add Table of Contents between the intro paragraph and `## Installation` section.
|
|
66
|
+
Insert after line 12 (the badges block), before line 14 (`## Installation`):
|
|
67
|
+
```markdown
|
|
68
|
+
|
|
69
|
+
## Table of Contents
|
|
70
|
+
|
|
71
|
+
- [Installation](#installation)
|
|
72
|
+
- [Quick Start](#quick-start)
|
|
73
|
+
- [Commands](#commands)
|
|
74
|
+
- [Features](#features)
|
|
75
|
+
- [Architecture](#architecture)
|
|
76
|
+
- [Extensions](#extensions)
|
|
77
|
+
- [Documentation](#documentation)
|
|
78
|
+
- [Requirements](#requirements)
|
|
79
|
+
- [Uninstall](#uninstall)
|
|
80
|
+
- [Contributing](#contributing)
|
|
81
|
+
```
|
|
82
|
+
- [ ] Fix architecture block (line 181 after ToC insertion - find by content):
|
|
83
|
+
- Change `~/.claude/agents/seo-*.md # Subagents (6 total)` → `~/.claude/agents/seo-*.md # Subagents (7 total)`
|
|
84
|
+
- [ ] Verify no other "6 total" or "6 subagent" strings remain:
|
|
85
|
+
`grep -n "6 total\|6 subagent" README.md`
|
|
86
|
+
- [ ] Commit:
|
|
87
|
+
```bash
|
|
88
|
+
git add README.md
|
|
89
|
+
git commit -m "docs: strengthen H1, add ToC and version badge, fix subagent count to 7"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Task 3: Fix SECURITY.md (add response timeline)
|
|
95
|
+
|
|
96
|
+
**Files:** Modify `SECURITY.md`
|
|
97
|
+
|
|
98
|
+
**What & Why:** Missing acknowledgment and resolution timeline, required for full Community Standards score.
|
|
99
|
+
|
|
100
|
+
**Safe to change:** Pure addition to existing section.
|
|
101
|
+
|
|
102
|
+
- [ ] Add response timeline to the "Reporting a Vulnerability" section.
|
|
103
|
+
After the 3-item list and before `## Supported Versions`, insert:
|
|
104
|
+
```markdown
|
|
105
|
+
|
|
106
|
+
## Response Timeline
|
|
107
|
+
|
|
108
|
+
- **Acknowledgment**: Within 72 hours of report
|
|
109
|
+
- **Status update**: Within 7 days with initial assessment
|
|
110
|
+
- **Resolution**: We aim to release a fix within 30 days for confirmed vulnerabilities
|
|
111
|
+
```
|
|
112
|
+
- [ ] Commit:
|
|
113
|
+
```bash
|
|
114
|
+
git add SECURITY.md
|
|
115
|
+
git commit -m "docs: add vulnerability response timeline to SECURITY.md"
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Task 4: Create CITATION.cff
|
|
121
|
+
|
|
122
|
+
**Files:** Create `CITATION.cff`
|
|
123
|
+
|
|
124
|
+
**What & Why:** File doesn't exist. Enables academic citation. Required for GitHub Community Standards full score.
|
|
125
|
+
|
|
126
|
+
- [ ] Create `CITATION.cff` at repo root:
|
|
127
|
+
```yaml
|
|
128
|
+
cff-version: 1.2.0
|
|
129
|
+
title: Claude SEO
|
|
130
|
+
message: >-
|
|
131
|
+
If you use this software, please cite it using the metadata from this file.
|
|
132
|
+
type: software
|
|
133
|
+
authors:
|
|
134
|
+
- alias: AgriciDaniel
|
|
135
|
+
given-names: Daniel
|
|
136
|
+
family-names: Agricidaniel
|
|
137
|
+
repository-code: 'https://github.com/AgriciDaniel/claude-seo'
|
|
138
|
+
url: 'https://github.com/AgriciDaniel/claude-seo'
|
|
139
|
+
license: MIT
|
|
140
|
+
version: 1.4.0
|
|
141
|
+
date-released: '2026-03-12'
|
|
142
|
+
keywords:
|
|
143
|
+
- seo
|
|
144
|
+
- claude-code
|
|
145
|
+
- ai-tools
|
|
146
|
+
- schema-markup
|
|
147
|
+
- e-e-a-t
|
|
148
|
+
- geo
|
|
149
|
+
```
|
|
150
|
+
- [ ] Commit:
|
|
151
|
+
```bash
|
|
152
|
+
git add CITATION.cff
|
|
153
|
+
git commit -m "docs: add CITATION.cff for academic citation support"
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Task 5: Create .github/ directory infrastructure
|
|
159
|
+
|
|
160
|
+
**Files:** Create 8 new files under `.github/`
|
|
161
|
+
|
|
162
|
+
**What & Why:** No `.github/` directory exists. This single gap zeros out: issue templates (20pts), PR template (10pts), devcontainer/Dependabot (15pts) in Community Health scoring. Creating these closes the biggest single scoring gap.
|
|
163
|
+
|
|
164
|
+
**Safe to create:** Directory doesn't exist at all, so zero conflict risk.
|
|
165
|
+
|
|
166
|
+
### 5a: Issue Templates
|
|
167
|
+
|
|
168
|
+
- [ ] Create `.github/ISSUE_TEMPLATE/bug_report.yml`:
|
|
169
|
+
```yaml
|
|
170
|
+
name: Bug Report
|
|
171
|
+
description: Report a bug or unexpected behavior in Claude SEO
|
|
172
|
+
title: "[Bug]: "
|
|
173
|
+
labels: ["bug"]
|
|
174
|
+
body:
|
|
175
|
+
- type: markdown
|
|
176
|
+
attributes:
|
|
177
|
+
value: |
|
|
178
|
+
Thanks for reporting a bug! Please fill in as much detail as possible.
|
|
179
|
+
- type: input
|
|
180
|
+
id: os
|
|
181
|
+
attributes:
|
|
182
|
+
label: Operating System
|
|
183
|
+
description: e.g. macOS 14, Ubuntu 24.04, Windows 11
|
|
184
|
+
validations:
|
|
185
|
+
required: true
|
|
186
|
+
- type: input
|
|
187
|
+
id: python-version
|
|
188
|
+
attributes:
|
|
189
|
+
label: Python Version
|
|
190
|
+
description: Run `python3 --version`
|
|
191
|
+
validations:
|
|
192
|
+
required: true
|
|
193
|
+
- type: input
|
|
194
|
+
id: command
|
|
195
|
+
attributes:
|
|
196
|
+
label: Command that failed
|
|
197
|
+
description: e.g. `/seo audit https://example.com`
|
|
198
|
+
validations:
|
|
199
|
+
required: true
|
|
200
|
+
- type: textarea
|
|
201
|
+
id: error-output
|
|
202
|
+
attributes:
|
|
203
|
+
label: Full error output
|
|
204
|
+
description: Copy the complete terminal output
|
|
205
|
+
render: shell
|
|
206
|
+
validations:
|
|
207
|
+
required: true
|
|
208
|
+
- type: textarea
|
|
209
|
+
id: expected
|
|
210
|
+
attributes:
|
|
211
|
+
label: Expected behavior
|
|
212
|
+
description: What did you expect to happen?
|
|
213
|
+
validations:
|
|
214
|
+
required: true
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
- [ ] Create `.github/ISSUE_TEMPLATE/feature_request.yml`:
|
|
218
|
+
```yaml
|
|
219
|
+
name: Feature Request
|
|
220
|
+
description: Suggest a new feature or improvement for Claude SEO
|
|
221
|
+
title: "[Feature]: "
|
|
222
|
+
labels: ["enhancement"]
|
|
223
|
+
body:
|
|
224
|
+
- type: markdown
|
|
225
|
+
attributes:
|
|
226
|
+
value: |
|
|
227
|
+
Have a great idea? We'd love to hear it! For general discussion, consider using [GitHub Discussions](https://github.com/AgriciDaniel/claude-seo/discussions) instead.
|
|
228
|
+
- type: textarea
|
|
229
|
+
id: problem
|
|
230
|
+
attributes:
|
|
231
|
+
label: Problem statement
|
|
232
|
+
description: What problem does this feature solve?
|
|
233
|
+
validations:
|
|
234
|
+
required: true
|
|
235
|
+
- type: textarea
|
|
236
|
+
id: solution
|
|
237
|
+
attributes:
|
|
238
|
+
label: Proposed solution
|
|
239
|
+
description: Describe how you'd like it to work
|
|
240
|
+
validations:
|
|
241
|
+
required: true
|
|
242
|
+
- type: textarea
|
|
243
|
+
id: alternatives
|
|
244
|
+
attributes:
|
|
245
|
+
label: Alternatives considered
|
|
246
|
+
description: Any alternative solutions or features you've considered?
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
- [ ] Create `.github/ISSUE_TEMPLATE/config.yml`:
|
|
250
|
+
```yaml
|
|
251
|
+
blank_issues_enabled: false
|
|
252
|
+
contact_links:
|
|
253
|
+
- name: Question or Discussion
|
|
254
|
+
url: https://github.com/AgriciDaniel/claude-seo/discussions
|
|
255
|
+
about: Ask questions and discuss ideas in GitHub Discussions
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
- [ ] Commit:
|
|
259
|
+
```bash
|
|
260
|
+
git add .github/ISSUE_TEMPLATE/
|
|
261
|
+
git commit -m "ci: add YAML issue templates for bug reports and feature requests"
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### 5b: PR Template
|
|
265
|
+
|
|
266
|
+
- [ ] Create `.github/PULL_REQUEST_TEMPLATE.md`:
|
|
267
|
+
```markdown
|
|
268
|
+
## Summary
|
|
269
|
+
|
|
270
|
+
<!-- What does this PR do? Why is it needed? -->
|
|
271
|
+
|
|
272
|
+
## Type of Change
|
|
273
|
+
|
|
274
|
+
- [ ] Bug fix
|
|
275
|
+
- [ ] New feature / sub-skill
|
|
276
|
+
- [ ] Documentation update
|
|
277
|
+
- [ ] Refactor / code quality
|
|
278
|
+
- [ ] Other (describe below)
|
|
279
|
+
|
|
280
|
+
## Checklist
|
|
281
|
+
|
|
282
|
+
- [ ] Tested with a real URL before submitting
|
|
283
|
+
- [ ] SKILL.md files stay under 500 lines (if modified)
|
|
284
|
+
- [ ] Python scripts output JSON (if modified)
|
|
285
|
+
- [ ] Reference files stay under 200 lines (if modified)
|
|
286
|
+
- [ ] `set -euo pipefail` used in any new shell scripts
|
|
287
|
+
- [ ] CHANGELOG.md updated with the change
|
|
288
|
+
```
|
|
289
|
+
- [ ] Commit:
|
|
290
|
+
```bash
|
|
291
|
+
git add .github/PULL_REQUEST_TEMPLATE.md
|
|
292
|
+
git commit -m "ci: add PR template with checklist"
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### 5c: GitHub Actions CI
|
|
296
|
+
|
|
297
|
+
**What:** Python syntax validation for scripts in `scripts/`. No test suite exists, so this is the minimum viable CI. It validates that all scripts are syntactically correct Python 3.10+.
|
|
298
|
+
|
|
299
|
+
- [ ] Create `.github/workflows/ci.yml`:
|
|
300
|
+
```yaml
|
|
301
|
+
name: CI
|
|
302
|
+
|
|
303
|
+
on:
|
|
304
|
+
push:
|
|
305
|
+
branches: [main]
|
|
306
|
+
pull_request:
|
|
307
|
+
branches: [main]
|
|
308
|
+
|
|
309
|
+
jobs:
|
|
310
|
+
lint:
|
|
311
|
+
name: Python Syntax Check
|
|
312
|
+
runs-on: ubuntu-latest
|
|
313
|
+
steps:
|
|
314
|
+
- uses: actions/checkout@v4
|
|
315
|
+
|
|
316
|
+
- name: Set up Python 3.10
|
|
317
|
+
uses: actions/setup-python@v5
|
|
318
|
+
with:
|
|
319
|
+
python-version: "3.10"
|
|
320
|
+
|
|
321
|
+
- name: Check Python syntax
|
|
322
|
+
run: |
|
|
323
|
+
python3 -m py_compile scripts/fetch_page.py
|
|
324
|
+
python3 -m py_compile scripts/parse_html.py
|
|
325
|
+
python3 -m py_compile scripts/analyze_visual.py
|
|
326
|
+
python3 -m py_compile scripts/capture_screenshot.py
|
|
327
|
+
echo "All scripts passed syntax check"
|
|
328
|
+
```
|
|
329
|
+
- [ ] Commit:
|
|
330
|
+
```bash
|
|
331
|
+
git add .github/workflows/ci.yml
|
|
332
|
+
git commit -m "ci: add GitHub Actions workflow for Python syntax validation"
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### 5d: Dependabot
|
|
336
|
+
|
|
337
|
+
- [ ] Create `.github/dependabot.yml`:
|
|
338
|
+
```yaml
|
|
339
|
+
version: 2
|
|
340
|
+
updates:
|
|
341
|
+
- package-ecosystem: "pip"
|
|
342
|
+
directory: "/"
|
|
343
|
+
schedule:
|
|
344
|
+
interval: "weekly"
|
|
345
|
+
labels:
|
|
346
|
+
- "dependencies"
|
|
347
|
+
|
|
348
|
+
- package-ecosystem: "github-actions"
|
|
349
|
+
directory: "/"
|
|
350
|
+
schedule:
|
|
351
|
+
interval: "weekly"
|
|
352
|
+
labels:
|
|
353
|
+
- "dependencies"
|
|
354
|
+
```
|
|
355
|
+
- [ ] Commit:
|
|
356
|
+
```bash
|
|
357
|
+
git add .github/dependabot.yml
|
|
358
|
+
git commit -m "ci: add Dependabot for pip and GitHub Actions updates"
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
### 5e: FUNDING and Release Config
|
|
362
|
+
|
|
363
|
+
- [ ] Create `.github/FUNDING.yml`:
|
|
364
|
+
```yaml
|
|
365
|
+
# Funding links for this project
|
|
366
|
+
# See: https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository
|
|
367
|
+
custom:
|
|
368
|
+
- https://www.skool.com/ai-marketing-hub-pro
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
- [ ] Create `.github/release.yml`:
|
|
372
|
+
```yaml
|
|
373
|
+
changelog:
|
|
374
|
+
exclude:
|
|
375
|
+
labels:
|
|
376
|
+
- ignore-for-release
|
|
377
|
+
categories:
|
|
378
|
+
- title: Security
|
|
379
|
+
labels:
|
|
380
|
+
- security
|
|
381
|
+
- title: New Features
|
|
382
|
+
labels:
|
|
383
|
+
- enhancement
|
|
384
|
+
- feature
|
|
385
|
+
- title: Bug Fixes
|
|
386
|
+
labels:
|
|
387
|
+
- bug
|
|
388
|
+
- fix
|
|
389
|
+
- title: Documentation
|
|
390
|
+
labels:
|
|
391
|
+
- documentation
|
|
392
|
+
- docs
|
|
393
|
+
- title: Dependencies
|
|
394
|
+
labels:
|
|
395
|
+
- dependencies
|
|
396
|
+
- title: Other Changes
|
|
397
|
+
labels:
|
|
398
|
+
- "*"
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
- [ ] Commit:
|
|
402
|
+
```bash
|
|
403
|
+
git add .github/FUNDING.yml .github/release.yml
|
|
404
|
+
git commit -m "ci: add FUNDING.yml and release.yml for auto-generated release notes"
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
---
|
|
408
|
+
|
|
409
|
+
## Task 6: Update GitHub Repository Settings
|
|
410
|
+
|
|
411
|
+
**What & Why:** These are GitHub UI settings that can be set via `gh repo edit`. Cannot be done via file commits; must use the CLI.
|
|
412
|
+
|
|
413
|
+
**Changes:**
|
|
414
|
+
1. Enable Discussions (currently off, but CONTRIBUTING.md tells users to use it)
|
|
415
|
+
2. Disable Wiki (currently on but unused, misleads visitors)
|
|
416
|
+
3. Fix description ("6 subagents" → "7 subagents")
|
|
417
|
+
4. Add topics: `python`, `skill`
|
|
418
|
+
|
|
419
|
+
**IMPORTANT:** These changes take effect immediately on the remote repo. Verify with `gh repo view` after each change.
|
|
420
|
+
|
|
421
|
+
- [ ] Enable Discussions:
|
|
422
|
+
```bash
|
|
423
|
+
gh repo edit AgriciDaniel/claude-seo --enable-discussions
|
|
424
|
+
```
|
|
425
|
+
Verify: `gh repo view AgriciDaniel/claude-seo --json hasDiscussionsEnabled --jq .hasDiscussionsEnabled`
|
|
426
|
+
Expected: `true`
|
|
427
|
+
|
|
428
|
+
- [ ] Disable Wiki:
|
|
429
|
+
```bash
|
|
430
|
+
gh repo edit AgriciDaniel/claude-seo --enable-wiki=false
|
|
431
|
+
```
|
|
432
|
+
Verify: `gh repo view AgriciDaniel/claude-seo --json hasWikiEnabled --jq .hasWikiEnabled`
|
|
433
|
+
Expected: `false`
|
|
434
|
+
|
|
435
|
+
- [ ] Fix description (replace "6 subagents" with "7 subagents"):
|
|
436
|
+
```bash
|
|
437
|
+
gh repo edit AgriciDaniel/claude-seo --description "Universal SEO skill for Claude Code. 13 sub-skills, 7 subagents, extensions system with DataForSEO MCP integration. Technical SEO, E-E-A-T, schema, GEO/AEO, and strategic planning."
|
|
438
|
+
```
|
|
439
|
+
Verify: `gh repo view AgriciDaniel/claude-seo --json description --jq .description`
|
|
440
|
+
|
|
441
|
+
- [ ] Add topics `python` and `skill`:
|
|
442
|
+
```bash
|
|
443
|
+
gh repo edit AgriciDaniel/claude-seo --add-topic python --add-topic skill
|
|
444
|
+
```
|
|
445
|
+
Verify: `gh repo view AgriciDaniel/claude-seo --json repositoryTopics --jq '.repositoryTopics | map(.name)'`
|
|
446
|
+
Expected: 15 topics including `python` and `skill`
|
|
447
|
+
|
|
448
|
+
- [ ] Push all committed changes:
|
|
449
|
+
```bash
|
|
450
|
+
git push origin main
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
---
|
|
454
|
+
|
|
455
|
+
## Task 7: Final Verification
|
|
456
|
+
|
|
457
|
+
- [ ] Confirm all 8 `.github/` files exist:
|
|
458
|
+
```bash
|
|
459
|
+
find .github/ -type f | sort
|
|
460
|
+
```
|
|
461
|
+
Expected 8 files: 3 under ISSUE_TEMPLATE/, PR template, ci.yml, dependabot.yml, FUNDING.yml, release.yml
|
|
462
|
+
|
|
463
|
+
- [ ] Confirm CITATION.cff exists and is valid YAML:
|
|
464
|
+
```bash
|
|
465
|
+
python3 -c "import yaml; yaml.safe_load(open('CITATION.cff'))" && echo "valid"
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
- [ ] Confirm plugin.json is valid JSON and has 7 agents:
|
|
469
|
+
```bash
|
|
470
|
+
python3 -c "import json; d=json.load(open('.claude-plugin/plugin.json')); print(d['version'], len(d['agents']))"
|
|
471
|
+
```
|
|
472
|
+
Expected: `1.4.0 7`
|
|
473
|
+
|
|
474
|
+
- [ ] Confirm no stale "6 subagent/total" strings remain in actively-versioned content:
|
|
475
|
+
```bash
|
|
476
|
+
grep -rn "6 subagent\|subagents (6\|6 total" --include="*.md" --include="*.json" . \
|
|
477
|
+
--exclude-dir=".git" --exclude-dir="claude-seo-main" --exclude-dir="claude-ads-main"
|
|
478
|
+
```
|
|
479
|
+
Expected: Only line 123 in CHANGELOG.md (v1.0.0 historical entry, correct, do not touch)
|
|
480
|
+
|
|
481
|
+
- [ ] Confirm GitHub settings applied:
|
|
482
|
+
```bash
|
|
483
|
+
gh repo view AgriciDaniel/claude-seo --json description,hasDiscussionsEnabled,hasWikiEnabled,repositoryTopics
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
- [ ] Confirm CI workflow is visible on GitHub:
|
|
487
|
+
```bash
|
|
488
|
+
gh workflow list --repo AgriciDaniel/claude-seo
|
|
489
|
+
```
|
|
490
|
+
|
|
491
|
+
---
|
|
492
|
+
|
|
493
|
+
## Do NOT Change
|
|
494
|
+
|
|
495
|
+
- `CHANGELOG.md` line 123: "6 subagents" is in the v1.0.0 historical entry. It was accurate when written.
|
|
496
|
+
- `seo/SKILL.md`: already correctly says "7 subagents"
|
|
497
|
+
- `CLAUDE.md`: already correctly says "7 parallel subagents"
|
|
498
|
+
- `docs/ARCHITECTURE.md`, `docs/COMMANDS.md`: no stale counts found
|
|
499
|
+
- `scripts/mobile_analysis.py`: already in `.gitignore` as a generated file
|
|
500
|
+
|
|
501
|
+
## Expected Score Impact
|
|
502
|
+
|
|
503
|
+
| Category | Before | Expected After |
|
|
504
|
+
|----------|--------|---------------|
|
|
505
|
+
| README Quality | 79 | ~84 (H1, ToC, badge) |
|
|
506
|
+
| Metadata & Discovery | 79 | ~87 (description, topics, Discussions) |
|
|
507
|
+
| Legal Compliance | 78 | ~88 (CITATION.cff, SECURITY timeline) |
|
|
508
|
+
| Community Health | 38 | ~68 (issue templates, PR template, dependabot) |
|
|
509
|
+
| Release & Maintenance | 67 | ~80 (CI, dependabot, release.yml, badge) |
|
|
510
|
+
| SEO & Discoverability | 73 | ~79 (Discussions, keyword H1) |
|
|
511
|
+
| **Overall** | **70** | **~81** |
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Banana Image Generation Extension for SEO Kit
|
|
2
|
+
|
|
3
|
+
Generate production-ready SEO images using AI: OG/social previews, blog heroes,
|
|
4
|
+
product photography, infographics, and more. Powered by Google Gemini via the
|
|
5
|
+
banana Creative Director pipeline.
|
|
6
|
+
|
|
7
|
+
## Prerequisites
|
|
8
|
+
|
|
9
|
+
> This extension wraps [Claude Banana](https://github.com/AgriciDaniel/banana-claude)
|
|
10
|
+
> for SEO-specific use cases. Install the standalone skill for general-purpose image generation.
|
|
11
|
+
|
|
12
|
+
- **SEO Kit** installed (`.agent/skills/seo/`)
|
|
13
|
+
- **Node.js 18+** with npx
|
|
14
|
+
- **Google AI API key** (free at [aistudio.google.com/apikey](https://aistudio.google.com/apikey))
|
|
15
|
+
- **ImageMagick** (optional, for post-processing)
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
./extensions/banana/install.sh
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The installer will:
|
|
24
|
+
1. Verify SEO Kit is installed
|
|
25
|
+
2. Prompt for your Google AI API key (if nanobanana-mcp not already configured)
|
|
26
|
+
3. Install the `seo-image-gen` skill to `.agent/skills/`
|
|
27
|
+
4. Configure the MCP server
|
|
28
|
+
|
|
29
|
+
## Commands
|
|
30
|
+
|
|
31
|
+
| Command | What it does |
|
|
32
|
+
|---------|-------------|
|
|
33
|
+
| `/seo image-gen og <description>` | OG/social preview image (1200x630 feel) |
|
|
34
|
+
| `/seo image-gen hero <description>` | Blog hero image (widescreen, dramatic) |
|
|
35
|
+
| `/seo image-gen product <description>` | Product photography (clean, white BG) |
|
|
36
|
+
| `/seo image-gen infographic <description>` | Infographic visual (vertical, data-heavy) |
|
|
37
|
+
| `/seo image-gen custom <description>` | Custom with full Creative Director pipeline |
|
|
38
|
+
| `/seo image-gen batch <description> [N]` | Generate N variations (default: 3) |
|
|
39
|
+
|
|
40
|
+
## Use Case Defaults
|
|
41
|
+
|
|
42
|
+
| Use Case | Aspect Ratio | Resolution | Domain Mode | Cost |
|
|
43
|
+
|----------|-------------|------------|-------------|------|
|
|
44
|
+
| OG/Social Preview | 16:9 | 1K | Product/UI | ~$0.04 |
|
|
45
|
+
| Blog Hero | 16:9 | 2K | Cinema/Editorial | ~$0.08 |
|
|
46
|
+
| Product Photo | 4:3 | 2K | Product | ~$0.08 |
|
|
47
|
+
| Infographic | 2:3 | 4K | Infographic | ~$0.16 |
|
|
48
|
+
| Social Square | 1:1 | 1K | UI/Web | ~$0.04 |
|
|
49
|
+
| Favicon/Icon | 1:1 | 512 | Logo | ~$0.02 |
|
|
50
|
+
|
|
51
|
+
## How It Works
|
|
52
|
+
|
|
53
|
+
The agent acts as a **Creative Director**. It never passes raw text to the API.
|
|
54
|
+
Instead, it analyzes your intent, selects the optimal domain mode, and constructs
|
|
55
|
+
an optimized prompt using a proven 6-component Reasoning Brief system:
|
|
56
|
+
|
|
57
|
+
1. **Subject** (30%):Physical specificity and micro-details
|
|
58
|
+
2. **Style** (25%):Camera specs, film stock, brand references
|
|
59
|
+
3. **Context** (15%):Location, time, weather, supporting elements
|
|
60
|
+
4. **Action** (10%):Pose, gesture, movement, state
|
|
61
|
+
5. **Composition** (10%):Shot type, framing, focal length
|
|
62
|
+
6. **Lighting** (10%):Direction, quality, color temperature
|
|
63
|
+
|
|
64
|
+
## Post-Generation SEO Checklist
|
|
65
|
+
|
|
66
|
+
After every generation, the agent provides:
|
|
67
|
+
- Alt text suggestion (keyword-rich, descriptive)
|
|
68
|
+
- SEO-friendly file naming convention
|
|
69
|
+
- WebP conversion command
|
|
70
|
+
- ImageObject schema snippet
|
|
71
|
+
- OG meta tag markup (for social previews)
|
|
72
|
+
|
|
73
|
+
## Audit Integration
|
|
74
|
+
|
|
75
|
+
During `/seo-audit`, the extension activates an image analysis skill that:
|
|
76
|
+
- Audits existing OG/social images across the site
|
|
77
|
+
- Identifies missing or low-quality images
|
|
78
|
+
- Creates a prioritized generation plan with prompt suggestions
|
|
79
|
+
- Estimates total cost for the generation plan
|
|
80
|
+
|
|
81
|
+
The skill never auto-generates images. It produces a plan for your review.
|
|
82
|
+
|
|
83
|
+
## Uninstallation
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
./extensions/banana/uninstall.sh
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
This removes the skill files. If you also use [Claude Banana](https://github.com/AgriciDaniel/banana-claude),
|
|
90
|
+
the MCP server config is preserved.
|
|
91
|
+
|
|
92
|
+
## Troubleshooting
|
|
93
|
+
|
|
94
|
+
See [docs/BANANA-SETUP.md](docs/BANANA-SETUP.md) for detailed setup instructions
|
|
95
|
+
and common issues.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Banana Extension Setup Guide
|
|
2
|
+
|
|
3
|
+
## Google AI API Key
|
|
4
|
+
|
|
5
|
+
1. Go to [aistudio.google.com/apikey](https://aistudio.google.com/apikey)
|
|
6
|
+
2. Sign in with your Google account
|
|
7
|
+
3. Click "Create API key"
|
|
8
|
+
4. Copy the key. You'll need it during installation
|
|
9
|
+
|
|
10
|
+
**Free tier limits:**
|
|
11
|
+
- ~10 requests per minute (RPM)
|
|
12
|
+
- ~500 requests per day (RPD)
|
|
13
|
+
- Resets at midnight Pacific time
|
|
14
|
+
|
|
15
|
+
## MCP Server Configuration
|
|
16
|
+
|
|
17
|
+
The installer configures this automatically. If you need to set it up manually,
|
|
18
|
+
add to `your MCP settings`:
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"mcpServers": {
|
|
23
|
+
"nanobanana-mcp": {
|
|
24
|
+
"command": "npx",
|
|
25
|
+
"args": ["-y", "@ycse/nanobanana-mcp@latest"],
|
|
26
|
+
"env": {
|
|
27
|
+
"GOOGLE_API_KEY": "your-api-key-here"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Verifying Installation
|
|
35
|
+
|
|
36
|
+
Run the validation script:
|
|
37
|
+
```bash
|
|
38
|
+
python3 .agent/skills/seo-image-gen/scripts/validate_setup.py
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Or check manually:
|
|
42
|
+
1. `ls .agent/skills/seo-image-gen/SKILL.md`:skill file exists
|
|
43
|
+
2. `ls .agent/skills/seo-image-gen.md`:agent file exists
|
|
44
|
+
3. `grep nanobanana your MCP settings`:MCP configured
|
|
45
|
+
|
|
46
|
+
## Common Issues
|
|
47
|
+
|
|
48
|
+
### "MCP tools not available"
|
|
49
|
+
- Restart your AI agent after installing the extension
|
|
50
|
+
- Verify your API key is valid at [aistudio.google.com](https://aistudio.google.com)
|
|
51
|
+
- Check `your MCP settings` has the nanobanana-mcp entry
|
|
52
|
+
|
|
53
|
+
### "Rate limited (429)"
|
|
54
|
+
- Free tier: ~10 requests/minute, ~500/day
|
|
55
|
+
- Wait 60 seconds and retry
|
|
56
|
+
- For batch operations, add delays between requests
|
|
57
|
+
|
|
58
|
+
### "IMAGE_SAFETY" error
|
|
59
|
+
- The safety filter flagged your prompt (often a false positive)
|
|
60
|
+
- Claude will suggest rephrased alternatives automatically
|
|
61
|
+
- Common triggers: certain color descriptions, implied scenarios
|
|
62
|
+
- See `references/prompt-engineering.md` Safety Rephrase section
|
|
63
|
+
|
|
64
|
+
### "Node.js version too old"
|
|
65
|
+
- Requires Node.js 18+
|
|
66
|
+
- Update via nvm: `nvm install 18 && nvm use 18`
|
|
67
|
+
- Or download from [nodejs.org](https://nodejs.org/)
|
|
68
|
+
|
|
69
|
+
### Generated images not appearing
|
|
70
|
+
- Default output directory: `~/Documents/nanobanana_generated/`
|
|
71
|
+
- Check the path returned by Claude after generation
|
|
72
|
+
- Verify disk space is available
|
|
73
|
+
|
|
74
|
+
## ImageMagick (Optional)
|
|
75
|
+
|
|
76
|
+
For post-processing (WebP conversion, cropping, background removal):
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# Ubuntu/Pop!_OS
|
|
80
|
+
sudo apt install imagemagick
|
|
81
|
+
|
|
82
|
+
# Verify
|
|
83
|
+
magick --version
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
If `magick` (v7) is not available, the scripts fall back to `convert` (v6).
|