seomd-cli 1.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.
@@ -0,0 +1,354 @@
1
+ # SEO.md
2
+
3
+ ## {{brand}}
4
+
5
+ ### spec v1.0 | <https://seomd.dev>
6
+
7
+ #### generated: {{date}}
8
+
9
+ ## FIELD OWNERSHIP
10
+
11
+ ### no prefix = founder declares (you own this)
12
+
13
+ ### _analysis: = platform writes back (do not edit manually)
14
+
15
+ ## Site
16
+
17
+ site:
18
+ type: ecommerce
19
+ domain: {{domain}}
20
+ canonical: https://{{domain}}
21
+ locale: en-US
22
+ launched: null # YYYY-MM-DD
23
+
24
+ ## Identity
25
+
26
+ identity:
27
+ brand: "{{brand}}"
28
+ tagline: null
29
+ social:
30
+ twitter: null
31
+ linkedin: null
32
+ github: null
33
+ schema_org_type: Organization
34
+
35
+ ## Keywords
36
+
37
+ keywords:
38
+
39
+ ### FOUNDER DECLARES
40
+
41
+ primary: "{{primary_keyword}}"
42
+ secondary: [] # add your secondary keywords
43
+ negative: # terms that dilute your intent signal
44
+ - "free"
45
+ - "tutorial"
46
+ - "how to"
47
+ competitor_terms:
48
+ {{competitor_terms}}
49
+ category_terms: # unbranded category queries
50
+ - "best {{primary_keyword}}"
51
+ - "top {{primary_keyword}} tools"
52
+ long_tail: [] # add long-tail variations
53
+ seasonal: null # add seasonal terms if applicable
54
+
55
+ ### PLATFORM WRITES BACK
56
+
57
+ _analysis:
58
+ source: null
59
+ primary_search_volume: null
60
+ primary_intent_type: null
61
+ primary_trend: null
62
+ recommended_secondary: []
63
+ negative_additions_suggested: []
64
+ last_analyzed: null
65
+ next_analysis: null
66
+
67
+ ## Intent
68
+
69
+ intent:
70
+
71
+ ### FOUNDER DECLARES
72
+
73
+ #### Add queries your buyers actually type into AI engines
74
+
75
+ #### Tip: think about what someone asks ChatGPT or Perplexity
76
+
77
+ #### when they are looking for a solution like yours
78
+
79
+ informational:
80
+ priority: low
81
+ queries:
82
+ - "what is {{primary_keyword}}"
83
+ - "how does {{primary_keyword}} work"
84
+
85
+ comparison:
86
+ priority: high
87
+ queries:
88
+ {{competitors_comparison_queries}}
89
+ - "best {{primary_keyword}} for startups"
90
+
91
+ transactional:
92
+ priority: critical
93
+ queries:
94
+ - "is {{brand_lower}} worth it"
95
+ - "should I use {{brand_lower}}"
96
+ - "{{brand_lower}} pricing"
97
+
98
+ reputational:
99
+ priority: high
100
+ queries:
101
+ - "{{brand_lower}} reviews"
102
+ - "is {{brand_lower}} legit"
103
+ - "{{brand_lower}} problems"
104
+
105
+ category:
106
+ priority: high
107
+ queries:
108
+ - "best {{primary_keyword}}"
109
+ - "top {{primary_keyword}} 2026"
110
+
111
+ ### PLATFORM WRITES BACK
112
+
113
+ _analysis:
114
+ source: null
115
+ last_analyzed: null
116
+ next_analysis: null
117
+ informational:
118
+ citation_rate: null
119
+ top_cited_competitor: null
120
+ gap_score: null
121
+ trend: null
122
+ comparison:
123
+ citation_rate: null
124
+ top_cited_competitor: null
125
+ gap_score: null
126
+ trend: null
127
+ transactional:
128
+ citation_rate: null
129
+ top_cited_competitor: null
130
+ gap_score: null
131
+ trend: null
132
+ reputational:
133
+ citation_rate: null
134
+ top_cited_competitor: null
135
+ gap_score: null
136
+ trend: null
137
+ category:
138
+ citation_rate: null
139
+ top_cited_competitor: null
140
+ gap_score: null
141
+ trend: null
142
+
143
+ ## Pages
144
+
145
+ pages:
146
+ site_type: ecommerce
147
+
148
+ ### FOUNDER DECLARES
149
+
150
+ #### status: live | draft | planned
151
+
152
+ required:
153
+ - id: homepage
154
+ url: /
155
+ primary_keyword: null
156
+ status: planned
157
+ priority: 1
158
+
159
+ - id: category
160
+ url: /[category]
161
+ primary_keyword: null
162
+ status: planned
163
+ priority: 2
164
+
165
+ - id: product
166
+ url: /products/[slug]
167
+ primary_keyword: null
168
+ status: planned
169
+ priority: 3
170
+
171
+ - id: collection
172
+ url: /collections/[slug]
173
+ primary_keyword: null
174
+ status: planned
175
+ priority: 4
176
+
177
+ - id: reviews
178
+ url: /reviews
179
+ primary_keyword: null
180
+ status: planned
181
+ priority: 5
182
+
183
+ - id: cart
184
+ url: /cart
185
+ primary_keyword: null
186
+ status: planned
187
+ priority: 6
188
+
189
+ - id: checkout
190
+ url: /checkout
191
+ primary_keyword: null
192
+ status: planned
193
+ priority: 7
194
+
195
+ ### PLATFORM WRITES BACK
196
+
197
+ _analysis:
198
+ source: null
199
+ last_analyzed: null
200
+ pages: []
201
+ missing_pages: []
202
+ build_order_recommendation: []
203
+
204
+ ## Copy
205
+
206
+ copy:
207
+
208
+ ### FOUNDER DECLARES
209
+
210
+ h1_contains_primary_keyword: true
211
+ meta_description_length: 150-160
212
+ meta_description_includes_cta: true
213
+ min_word_count:
214
+ homepage: 800
215
+ feature_page: 600
216
+ blog_post: 1200
217
+ comparison_page: 1500
218
+ reading_level: 8 # grade level target
219
+
220
+ ## Structure
221
+
222
+ structure:
223
+
224
+ ### FOUNDER DECLARES
225
+
226
+ answer_first: true # direct answer in first 50 words
227
+ faq_section_required: true # on all key pages
228
+ faq_minimum_questions: 6
229
+ statistics_per_page: 2 # minimum data points with sources
230
+ citations_required: true # link to primary sources
231
+ short_paragraphs: true # max 3 sentences
232
+ heading_hierarchy: strict # H1 > H2 > H3, no skipping
233
+
234
+ ## Authority
235
+
236
+ authority:
237
+
238
+ ### FOUNDER DECLARES
239
+
240
+ cite_sources: true
241
+ expert_quotes: false # set true when you have quotes
242
+ eeat_signals:
243
+ experience: null # describe your experience signal
244
+ expertise: null # describe your expertise signal
245
+ authority: null # describe your authority signal
246
+ trust: null # describe your trust signal
247
+
248
+ ## Schema
249
+
250
+ schema:
251
+
252
+ ### FOUNDER DECLARES
253
+
254
+ types:
255
+ - Product
256
+ - Organization
257
+ - FAQPage
258
+ - BreadcrumbList
259
+ faq_schema: true
260
+ breadcrumb_schema: true
261
+ organization_schema: true
262
+
263
+ ## Crawl
264
+
265
+ crawl:
266
+
267
+ ### FOUNDER DECLARES
268
+
269
+ sitemap: /sitemap.xml
270
+ robots_txt: /robots.txt
271
+ allow_ai_bots: true
272
+ allowed_bots:
273
+ - Googlebot
274
+ - Bingbot
275
+ - PerplexityBot
276
+ - ChatGPT-User
277
+ - GPTBot
278
+ - ClaudeBot
279
+ - anthropic-ai
280
+ - cohere-ai
281
+ disallow:
282
+ - /admin
283
+ - /checkout
284
+ - /user/*
285
+ - /api/*
286
+
287
+ ## Performance
288
+
289
+ performance:
290
+
291
+ ### FOUNDER DECLARES
292
+
293
+ lcp: 2.5s
294
+ cls: 0.1
295
+ fid: 100ms
296
+ page_size: 500kb
297
+ ttfb: 800ms
298
+
299
+ ## AEO
300
+
301
+ aeo:
302
+
303
+ ### FOUNDER DECLARES
304
+
305
+ ### AI Engine Optimization rules
306
+
307
+ answer_first_format: true
308
+ faq_on_all_key_pages: true
309
+ structured_data_priority: high
310
+ content_freshness_target: 30d # update key pages within 30 days
311
+ competitors_to_monitor:
312
+ {{competitors_to_monitor}}
313
+
314
+ ### PLATFORM WRITES BACK
315
+
316
+ _analysis:
317
+ source: null
318
+ overall_citation_rate: null
319
+ overall_gap_score: null
320
+ engines_tracked:
321
+ - chatgpt
322
+ - perplexity
323
+ - claude
324
+ - gemini
325
+ - grok
326
+ last_analyzed: null
327
+ next_analysis: null
328
+
329
+ ## Monitoring
330
+
331
+ monitoring:
332
+
333
+ ### FOUNDER DECLARES
334
+
335
+ sync_schedule: monthly # monthly | weekly | on_demand
336
+ auto_commit: false # platform commits directly to repo
337
+ pr_mode: true # open PR instead of direct commit
338
+ branch: main
339
+ alert_on_gap_score_above: 80 # alert when gap score exceeds threshold
340
+ alert_on_citation_drop: true # alert if citation rate drops
341
+
342
+ ## Platform Connection
343
+
344
+ ### Connect at <https://seomd.dev/connect>
345
+
346
+ ### Add SEOMD_API_KEY to your .env file
347
+
348
+ ### Never commit your API key to version control
349
+
350
+ platform:
351
+ provider: null # foxcite | manual | ahrefs | semrush
352
+ project_id: null
353
+
354
+ ### api_key: loaded from SEOMD_API_KEY environment variable
@@ -0,0 +1,222 @@
1
+ # SEO.REVERSE.md
2
+
3
+ ## {{brand}}
4
+
5
+ ### spec v1.0 | https://seomd.dev
6
+
7
+ #### generated: {{date}}
8
+
9
+ ## This file is generated by the {{brand}} platform.
10
+ ### Do not edit manually — run `npx seomd analyze` to update.
11
+ ### Run `npx seomd sync` to pull latest intelligence.
12
+
13
+ ## Each page section contains a full reverse engineer analysis:
14
+
15
+ ### why_page_won — what the top cited competitor does right
16
+ ### citation_hooks — specific patterns to replicate
17
+ ### gaps_for_brand — where your page falls short
18
+ ### remediation_playbook — step by step fixes with effort/impact
19
+ ### fastest_win — highest ROI action to take now
20
+ ### suggested_content_outline — ready to use outline for your writer/AI
21
+
22
+ domain: {{domain}}
23
+ brand: "{{brand}}"
24
+ primary_competitor: {{primary_competitor}}
25
+ last_analyzed: null
26
+ next_analysis: null
27
+ source: null
28
+
29
+ ## Pages
30
+ ### Run `npx seomd analyze` to populate these sections
31
+
32
+ pages:
33
+
34
+ ### Homepage
35
+
36
+ - id: homepage
37
+ url: /
38
+ status: planned
39
+ citation_rate: null
40
+ gap_score: null
41
+ top_cited_competitor: null
42
+
43
+ why_page_won: []
44
+ citation_hooks: []
45
+
46
+ gaps_for_{{brand_lower_snake}}: []
47
+
48
+ remediation_playbook: []
49
+
50
+ fastest_win:
51
+ action: null
52
+ estimated_gap_score_improvement: null
53
+ effort: null
54
+
55
+ suggested_content_outline: []
56
+
57
+ ### Services
58
+
59
+ - id: services
60
+ url: /services
61
+ status: planned
62
+ citation_rate: null
63
+ gap_score: null
64
+ top_cited_competitor: null
65
+
66
+ why_page_won: []
67
+ citation_hooks: []
68
+
69
+ gaps_for_{{brand_lower_snake}}: []
70
+
71
+ remediation_playbook: []
72
+
73
+ fastest_win:
74
+ action: null
75
+ estimated_gap_score_improvement: null
76
+ effort: null
77
+
78
+ suggested_content_outline: []
79
+
80
+ ### Location
81
+
82
+ - id: location
83
+ url: /[city]
84
+ status: planned
85
+ citation_rate: null
86
+ gap_score: null
87
+ top_cited_competitor: null
88
+
89
+ why_page_won: []
90
+ citation_hooks: []
91
+
92
+ gaps_for_{{brand_lower_snake}}: []
93
+
94
+ remediation_playbook: []
95
+
96
+ fastest_win:
97
+ action: null
98
+ estimated_gap_score_improvement: null
99
+ effort: null
100
+
101
+ suggested_content_outline: []
102
+
103
+ ### About
104
+
105
+ - id: about
106
+ url: /about
107
+ status: planned
108
+ citation_rate: null
109
+ gap_score: null
110
+ top_cited_competitor: null
111
+
112
+ why_page_won: []
113
+ citation_hooks: []
114
+
115
+ gaps_for_{{brand_lower_snake}}: []
116
+
117
+ remediation_playbook: []
118
+
119
+ fastest_win:
120
+ action: null
121
+ estimated_gap_score_improvement: null
122
+ effort: null
123
+
124
+ suggested_content_outline: []
125
+
126
+ ### Reviews
127
+
128
+ - id: reviews
129
+ url: /reviews
130
+ status: planned
131
+ citation_rate: null
132
+ gap_score: null
133
+ top_cited_competitor: null
134
+
135
+ why_page_won: []
136
+ citation_hooks: []
137
+
138
+ gaps_for_{{brand_lower_snake}}: []
139
+
140
+ remediation_playbook: []
141
+
142
+ fastest_win:
143
+ action: null
144
+ estimated_gap_score_improvement: null
145
+ effort: null
146
+
147
+ suggested_content_outline: []
148
+
149
+ ### FAQ
150
+
151
+ - id: faq
152
+ url: /faq
153
+ status: planned
154
+ citation_rate: null
155
+ gap_score: null
156
+ top_cited_competitor: null
157
+
158
+ why_page_won: []
159
+ citation_hooks: []
160
+
161
+ gaps_for_{{brand_lower_snake}}: []
162
+
163
+ remediation_playbook: []
164
+
165
+ fastest_win:
166
+ action: null
167
+ estimated_gap_score_improvement: null
168
+ effort: null
169
+
170
+ suggested_content_outline: []
171
+
172
+ ### Contact
173
+
174
+ - id: contact
175
+ url: /contact
176
+ status: planned
177
+ citation_rate: null
178
+ gap_score: null
179
+ top_cited_competitor: null
180
+
181
+ why_page_won: []
182
+ citation_hooks: []
183
+
184
+ gaps_for_{{brand_lower_snake}}: []
185
+
186
+ remediation_playbook: []
187
+
188
+ fastest_win:
189
+ action: null
190
+ estimated_gap_score_improvement: null
191
+ effort: null
192
+
193
+ suggested_content_outline: []
194
+
195
+ ### Service-area
196
+
197
+ - id: service-area
198
+ url: /service-area
199
+ status: planned
200
+ citation_rate: null
201
+ gap_score: null
202
+ top_cited_competitor: null
203
+
204
+ why_page_won: []
205
+ citation_hooks: []
206
+
207
+ gaps_for_{{brand_lower_snake}}: []
208
+
209
+ remediation_playbook: []
210
+
211
+ fastest_win:
212
+ action: null
213
+ estimated_gap_score_improvement: null
214
+ effort: null
215
+
216
+ suggested_content_outline: []
217
+
218
+ ## Competitor Profiles
219
+ ### Platform populated — competitor citation patterns
220
+
221
+ competitors:
222
+ {{reverse_competitors}}