opencode-skills-collection 4.1.0 → 4.1.2
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.
- package/README.md +46 -42
- package/bundled-skills/.antigravity-install-manifest.json +127 -1
- package/bundled-skills/360-feedback-system/SKILL.md +481 -0
- package/bundled-skills/access-matrix/SKILL.md +338 -0
- package/bundled-skills/accounting-audit-system-builder/SKILL.md +302 -0
- package/bundled-skills/accounting-audit-system-builder/references/catalog.md +114 -0
- package/bundled-skills/accounting-software-selection/SKILL.md +427 -0
- package/bundled-skills/accounting-software-selection/references/build-artifacts.md +362 -0
- package/bundled-skills/accounting-software-selection/references/common-pitfalls.md +44 -0
- package/bundled-skills/accounting-software-selection/references/field-reference.md +93 -0
- package/bundled-skills/accounting-software-selection/references/select-options.md +202 -0
- package/bundled-skills/admin-access-register/SKILL.md +381 -0
- package/bundled-skills/advanced-analytics-dashboard/SKILL.md +318 -0
- package/bundled-skills/ai-image-generation-studio/SKILL.md +259 -0
- package/bundled-skills/ai-logo-maker/SKILL.md +259 -0
- package/bundled-skills/ai-multilingual-dubbing/SKILL.md +259 -0
- package/bundled-skills/ai-photo-restyler/SKILL.md +259 -0
- package/bundled-skills/ai-podcast-voiceover/SKILL.md +259 -0
- package/bundled-skills/alumni-re-hire-tracker/SKILL.md +314 -0
- package/bundled-skills/announcement-board/SKILL.md +336 -0
- package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +48 -3
- package/bundled-skills/asset-it-management/SKILL.md +407 -0
- package/bundled-skills/attendance/SKILL.md +331 -0
- package/bundled-skills/audit-log/SKILL.md +314 -0
- package/bundled-skills/audit-preparation/SKILL.md +416 -0
- package/bundled-skills/beatra/SKILL.md +260 -0
- package/bundled-skills/board-governance/SKILL.md +360 -0
- package/bundled-skills/brand-growth-system-builder/SKILL.md +360 -0
- package/bundled-skills/brand-kit-print-collateral/SKILL.md +498 -0
- package/bundled-skills/buddy-program-manager/SKILL.md +329 -0
- package/bundled-skills/budget-cash-flow/SKILL.md +352 -0
- package/bundled-skills/busabase/SKILL.md +118 -0
- package/bundled-skills/business-email-template/SKILL.md +480 -0
- package/bundled-skills/business-email-template/references/common-pitfalls.md +30 -0
- package/bundled-skills/business-website-setup/SKILL.md +489 -0
- package/bundled-skills/business-website-setup/references/common-pitfalls.md +32 -0
- package/bundled-skills/candidate-talent-pool/SKILL.md +359 -0
- package/bundled-skills/capacity-workload-planner/SKILL.md +354 -0
- package/bundled-skills/changelog-entry/SKILL.md +141 -0
- package/bundled-skills/clients-accounts/SKILL.md +398 -0
- package/bundled-skills/code-of-conduct/SKILL.md +488 -0
- package/bundled-skills/code-of-conduct/references/common-pitfalls.md +31 -0
- package/bundled-skills/company-email-accounts/SKILL.md +404 -0
- package/bundled-skills/competency-matrix/SKILL.md +335 -0
- package/bundled-skills/contract-document-renewal/SKILL.md +396 -0
- package/bundled-skills/course-upskilling-requests/SKILL.md +354 -0
- package/bundled-skills/credit-cycle-analysis/SKILL.md +303 -0
- package/bundled-skills/credit-cycle-analysis/references/best-practices.md +35 -0
- package/bundled-skills/credit-cycle-analysis/references/common-pitfalls.md +5 -0
- package/bundled-skills/credit-cycle-analysis/references/examples.md +34 -0
- package/bundled-skills/credit-cycle-analysis/references/field-reference.md +47 -0
- package/bundled-skills/credit-cycle-analysis/references/how-it-works.md +494 -0
- package/bundled-skills/credit-cycle-analysis/references/security-notes.md +16 -0
- package/bundled-skills/credit-cycle-analysis/references/select-options.md +32 -0
- package/bundled-skills/csv-manual-export/SKILL.md +499 -0
- package/bundled-skills/csv-manual-export/references/common-pitfalls.md +19 -0
- package/bundled-skills/culture-retention/SKILL.md +346 -0
- package/bundled-skills/data-export-engine/SKILL.md +308 -0
- package/bundled-skills/data-privacy-controls/SKILL.md +317 -0
- package/bundled-skills/day-book/SKILL.md +499 -0
- package/bundled-skills/day-book/references/best-practices.md +32 -0
- package/bundled-skills/day-book/references/common-pitfalls.md +58 -0
- package/bundled-skills/day-book/references/field-reference.md +45 -0
- package/bundled-skills/day-book/references/how-it-works.md +7 -0
- package/bundled-skills/day-book/references/related-skills.md +18 -0
- package/bundled-skills/day-book/references/relations.md +14 -0
- package/bundled-skills/day-book/references/reusable-prompt.md +50 -0
- package/bundled-skills/day-book/references/security-safety-notes.md +19 -0
- package/bundled-skills/day-book/references/select-options.md +38 -0
- package/bundled-skills/dei-dashboard/SKILL.md +307 -0
- package/bundled-skills/design-theme-guide/SKILL.md +472 -0
- package/bundled-skills/disciplinary-pip-tracker/SKILL.md +345 -0
- package/bundled-skills/document-management-system/SKILL.md +328 -0
- package/bundled-skills/ecommerce-listing-image-set/SKILL.md +259 -0
- package/bundled-skills/employee-suggestion-hub/SKILL.md +322 -0
- package/bundled-skills/esop-equity-tracker/SKILL.md +331 -0
- package/bundled-skills/events-activities/SKILL.md +355 -0
- package/bundled-skills/expense-accounting/SKILL.md +496 -0
- package/bundled-skills/expense-accounting/references/common-pitfalls.md +41 -0
- package/bundled-skills/expense-accounting/references/related-skills.md +11 -0
- package/bundled-skills/expense-accounting/references/reusable-prompt.md +36 -0
- package/bundled-skills/expense-management/SKILL.md +351 -0
- package/bundled-skills/free-design-resources/SKILL.md +480 -0
- package/bundled-skills/free-design-resources/references/common-pitfalls.md +44 -0
- package/bundled-skills/free-design-resources/references/related-skills.md +24 -0
- package/bundled-skills/free-design-resources/references/reusable-prompt.md +12 -0
- package/bundled-skills/gamification-engine/SKILL.md +307 -0
- package/bundled-skills/gbp-local-seo-intent/SKILL.md +466 -0
- package/bundled-skills/gbp-local-seo-intent/references/best-practices.md +41 -0
- package/bundled-skills/gbp-local-seo-intent/references/common-pitfalls.md +40 -0
- package/bundled-skills/gbp-local-seo-intent/references/related-skills.md +17 -0
- package/bundled-skills/gbp-local-seo-intent/references/reusable-prompt.md +11 -0
- package/bundled-skills/gbp-local-seo-intent/references/security-safety-notes.md +27 -0
- package/bundled-skills/health-wellness/SKILL.md +334 -0
- package/bundled-skills/intern-program/SKILL.md +354 -0
- package/bundled-skills/internal-communication/SKILL.md +318 -0
- package/bundled-skills/inventory-stock-reconciliation/SKILL.md +470 -0
- package/bundled-skills/inventory-stock-reconciliation/references/best-practices.md +18 -0
- package/bundled-skills/inventory-stock-reconciliation/references/common-pitfalls.md +42 -0
- package/bundled-skills/inventory-stock-reconciliation/references/related-skills.md +13 -0
- package/bundled-skills/inventory-stock-reconciliation/references/relations.md +8 -0
- package/bundled-skills/inventory-stock-reconciliation/references/reusable-prompt.md +31 -0
- package/bundled-skills/inventory-stock-reconciliation/references/security-safety-notes.md +17 -0
- package/bundled-skills/inventory-stock-reconciliation/references/select-options.md +45 -0
- package/bundled-skills/invoices-billing/SKILL.md +385 -0
- package/bundled-skills/issue-grievance-tracker/SKILL.md +400 -0
- package/bundled-skills/json-schema-manual/SKILL.md +309 -0
- package/bundled-skills/json-schema-manual/references/best-practices.md +9 -0
- package/bundled-skills/json-schema-manual/references/common-pitfalls.md +25 -0
- package/bundled-skills/json-schema-manual/references/input-modules.md +203 -0
- package/bundled-skills/json-schema-manual/references/related-skills.md +8 -0
- package/bundled-skills/json-schema-manual/references/reusable-prompt.md +10 -0
- package/bundled-skills/json-schema-manual/references/security-safety-notes.md +13 -0
- package/bundled-skills/knowledge-base/SKILL.md +318 -0
- package/bundled-skills/kpi-tracker/SKILL.md +345 -0
- package/bundled-skills/learning-career-development/SKILL.md +349 -0
- package/bundled-skills/leave-management/SKILL.md +341 -0
- package/bundled-skills/legal-compliance-vault/SKILL.md +324 -0
- package/bundled-skills/linktree-link-hub/SKILL.md +453 -0
- package/bundled-skills/logo-image-design/SKILL.md +459 -0
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package-lock.json +3 -3
- package/bundled-skills/loki-mode/examples/todo-app-generated/backend/package.json +2 -1
- package/bundled-skills/mentorship-program/SKILL.md +332 -0
- package/bundled-skills/mirrord/SKILL.md +90 -0
- package/bundled-skills/monthly-closing-statements/SKILL.md +488 -0
- package/bundled-skills/monthly-closing-statements/references/related-skills.md +17 -0
- package/bundled-skills/monthly-closing-statements/references/reusable-prompt.md +8 -0
- package/bundled-skills/music-generation-studio/SKILL.md +259 -0
- package/bundled-skills/notification-reminder-hub/SKILL.md +324 -0
- package/bundled-skills/notion-manual-import/SKILL.md +376 -0
- package/bundled-skills/notion-manual-import/references/best-practices.md +10 -0
- package/bundled-skills/notion-manual-import/references/common-pitfalls.md +26 -0
- package/bundled-skills/notion-manual-import/references/input-modules.md +203 -0
- package/bundled-skills/notion-manual-import/references/related-skills.md +7 -0
- package/bundled-skills/notion-manual-import/references/reusable-prompt.md +8 -0
- package/bundled-skills/notion-manual-import/references/security-safety-notes.md +15 -0
- package/bundled-skills/observability-cloud-planning/SKILL.md +487 -0
- package/bundled-skills/observability-cloud-planning/references/common-pitfalls.md +39 -0
- package/bundled-skills/observability-cloud-planning/references/related-skills.md +20 -0
- package/bundled-skills/observability-cloud-planning/references/reusable-prompt.md +12 -0
- package/bundled-skills/observability-cloud-planning/references/security-safety-notes.md +30 -0
- package/bundled-skills/offboarding-exit/SKILL.md +343 -0
- package/bundled-skills/offer-appointment/SKILL.md +351 -0
- package/bundled-skills/okr-system/SKILL.md +355 -0
- package/bundled-skills/omentir-linkedin-outreach/SKILL.md +96 -0
- package/bundled-skills/onboarding-playbook/SKILL.md +292 -0
- package/bundled-skills/organization-design/SKILL.md +324 -0
- package/bundled-skills/party-ledger-reconciliation/SKILL.md +411 -0
- package/bundled-skills/payment-accounting/SKILL.md +421 -0
- package/bundled-skills/payments-received/SKILL.md +315 -0
- package/bundled-skills/payroll-finance/SKILL.md +351 -0
- package/bundled-skills/people-directory/SKILL.md +459 -0
- package/bundled-skills/performance-management/SKILL.md +367 -0
- package/bundled-skills/petty-cash-management/SKILL.md +448 -0
- package/bundled-skills/policy-acknowledgement/SKILL.md +314 -0
- package/bundled-skills/policy-library/SKILL.md +327 -0
- package/bundled-skills/poster-design-studio/SKILL.md +259 -0
- package/bundled-skills/pre-boarding/SKILL.md +326 -0
- package/bundled-skills/presentation-deck/SKILL.md +491 -0
- package/bundled-skills/presentation-deck/references/related-skills.md +19 -0
- package/bundled-skills/presentation-deck/references/reusable-prompt.md +11 -0
- package/bundled-skills/probation-tracker/SKILL.md +347 -0
- package/bundled-skills/product-photo-studio/SKILL.md +259 -0
- package/bundled-skills/project-based-performance/SKILL.md +323 -0
- package/bundled-skills/projects-work-management/SKILL.md +368 -0
- package/bundled-skills/promotion-upgrade-requests/SKILL.md +377 -0
- package/bundled-skills/purchase-accounting/SKILL.md +414 -0
- package/bundled-skills/receipt-accounting/SKILL.md +424 -0
- package/bundled-skills/recognition-rewards/SKILL.md +324 -0
- package/bundled-skills/recruitment-pipeline/SKILL.md +399 -0
- package/bundled-skills/remote-work-tracker/SKILL.md +306 -0
- package/bundled-skills/reports-analytics/SKILL.md +320 -0
- package/bundled-skills/salary-benchmarking/SKILL.md +318 -0
- package/bundled-skills/salary-wage-accounting/SKILL.md +412 -0
- package/bundled-skills/sales-accounting/SKILL.md +494 -0
- package/bundled-skills/sales-accounting/references/common-pitfalls.md +28 -0
- package/bundled-skills/sales-accounting/references/related-skills.md +13 -0
- package/bundled-skills/sales-accounting/references/reusable-prompt.md +8 -0
- package/bundled-skills/seo-directory-backlinks/SKILL.md +484 -0
- package/bundled-skills/seo-directory-backlinks/references/common-pitfalls.md +36 -0
- package/bundled-skills/seo-directory-backlinks/references/related-skills.md +15 -0
- package/bundled-skills/seo-directory-backlinks/references/reusable-prompt.md +11 -0
- package/bundled-skills/since-cutoff/SKILL.md +68 -0
- package/bundled-skills/skill-gap-analysis/SKILL.md +338 -0
- package/bundled-skills/social-media-setup/SKILL.md +477 -0
- package/bundled-skills/social-media-setup/references/common-pitfalls.md +34 -0
- package/bundled-skills/social-media-setup/references/related-skills.md +19 -0
- package/bundled-skills/social-media-setup/references/reusable-prompt.md +11 -0
- package/bundled-skills/social-media-setup/references/security-safety-notes.md +27 -0
- package/bundled-skills/sop-company-wiki/SKILL.md +324 -0
- package/bundled-skills/source-document-filing/SKILL.md +368 -0
- package/bundled-skills/spreadsheet-manual-build/SKILL.md +493 -0
- package/bundled-skills/spreadsheet-manual-build/references/best-practices.md +9 -0
- package/bundled-skills/spreadsheet-manual-build/references/common-pitfalls.md +22 -0
- package/bundled-skills/spreadsheet-manual-build/references/related-skills.md +8 -0
- package/bundled-skills/spreadsheet-manual-build/references/reusable-prompt.md +9 -0
- package/bundled-skills/spreadsheet-manual-build/references/security-safety-notes.md +16 -0
- package/bundled-skills/stakeholder-investor-reports/SKILL.md +303 -0
- package/bundled-skills/suno-lyrics-to-song/SKILL.md +259 -0
- package/bundled-skills/talking-avatar-video/SKILL.md +260 -0
- package/bundled-skills/tax-register/SKILL.md +363 -0
- package/bundled-skills/tds-booking-payment/SKILL.md +405 -0
- package/bundled-skills/team-calendar/SKILL.md +312 -0
- package/bundled-skills/telegram/assets/boilerplate/nodejs/package-lock.json +3 -3
- package/bundled-skills/telegram/assets/boilerplate/nodejs/package.json +1 -0
- package/bundled-skills/template-library/SKILL.md +304 -0
- package/bundled-skills/time-tracking/SKILL.md +353 -0
- package/bundled-skills/vendor-contractor-management/SKILL.md +327 -0
- package/bundled-skills/viral-video-teardown-remake/SKILL.md +260 -0
- package/bundled-skills/voice-cloning-studio/SKILL.md +260 -0
- package/bundled-skills/voiceover-narration-studio/SKILL.md +259 -0
- package/bundled-skills/whatsapp-cloud-api/assets/boilerplate/nodejs/package-lock.json +3 -3
- package/bundled-skills/whatsapp-cloud-api/assets/boilerplate/nodejs/package.json +1 -0
- package/dist/skill-pointer/index.d.ts +2 -1
- package/dist/skill-pointer/index.js +2 -1
- package/dist/skill-pointer/pointer-generator.d.ts +4 -2
- package/dist/skill-pointer/pointer-generator.js +4 -2
- package/package.json +1 -1
- package/skills_index.json +4312 -0
|
@@ -0,0 +1,466 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gbp-local-seo-intent
|
|
3
|
+
description: 'Google Business Profile register: element, primary and supporting keywords, search intent, landing page, post dates, review rating and reply status, visibility and status. Use for local SEO.'
|
|
4
|
+
category: business
|
|
5
|
+
risk: safe
|
|
6
|
+
source: self
|
|
7
|
+
source_type: self
|
|
8
|
+
date_added: "2026-09-27"
|
|
9
|
+
author: WHOISABHISHEKADHIKARI
|
|
10
|
+
tags: [sme, gbp, google-business-profile, local-seo, local-pack, map-pack, intent, categories, services, reviews, posts, photos, attributes, csv, sql, notion]
|
|
11
|
+
tools: []
|
|
12
|
+
source_repo: WHOISABHISHEKADHIKARI/sme-ops-system-builder
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# GBP & Local SEO Intent
|
|
16
|
+
|
|
17
|
+
**What it is:** the Google Business Profile taken from claimed to complete, with the search-intent map behind it - which query means what, which one the profile should answer, and what proves the answer is right.
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
Works out the smallest useful profile for the business in front of it, then builds it only
|
|
22
|
+
when asked. The default output is a short recommendation, not a profile. The GBP register -
|
|
23
|
+
CSV, SQL DDL, JSON Schema, Notion mapping - is produced on request, from one field list so
|
|
24
|
+
the four cannot drift apart.
|
|
25
|
+
|
|
26
|
+
Layer: Layer 3: Acquire. Fits: Starter stage. Table code: n/a.
|
|
27
|
+
|
|
28
|
+
**The rule this table exists to enforce:** five different things are recorded in one place
|
|
29
|
+
and must not be confused - the profile itself, the services, the posts, the reviews, and
|
|
30
|
+
the questions. A `Row Type` discriminator keeps them apart, because a profile update and a
|
|
31
|
+
review reply are different actions with different owners, and merging them turns the
|
|
32
|
+
register into a log nothing can be filtered out of.
|
|
33
|
+
|
|
34
|
+
**The second rule:** local rank is relevance, distance and prominence. A profile controls
|
|
35
|
+
relevance directly and prominence partly. Nobody can buy a better local rank, and this skill
|
|
36
|
+
never suggests otherwise.
|
|
37
|
+
|
|
38
|
+
## When to Use This Skill
|
|
39
|
+
|
|
40
|
+
- Google Business Profile, Google My Business, GMB, GBP
|
|
41
|
+
- map pack, local pack, local SEO, "near me" searches
|
|
42
|
+
- "we do not appear on Google Maps"
|
|
43
|
+
- categories, services, products, attributes, business description
|
|
44
|
+
- GBP posts, updates, offers, events
|
|
45
|
+
- reviews, review replies, review strategy
|
|
46
|
+
- Bing Places, Apple Business Connect, and the other map surfaces
|
|
47
|
+
- local keyword and intent research
|
|
48
|
+
|
|
49
|
+
Do not use it for: the website's own page structure (`business-website-setup`), off-site
|
|
50
|
+
directory citations (`seo-directory-backlinks`), or paid advertising - which buys clicks,
|
|
51
|
+
not rank.
|
|
52
|
+
|
|
53
|
+
## How It Works
|
|
54
|
+
|
|
55
|
+
Follow the shared execution contract. The module-specific rules below define only domain fields, decisions, calculations, and safety constraints.
|
|
56
|
+
|
|
57
|
+
### Step 1 - Identify intent
|
|
58
|
+
|
|
59
|
+
Read the request and pick the intent before asking anything.
|
|
60
|
+
|
|
61
|
+
- "set up" / "claim" / "we do not have one" -> artifacts wanted; go to Step 2.
|
|
62
|
+
- "we have one, it is not showing" -> something exists; capture the current state, then
|
|
63
|
+
Step 2.
|
|
64
|
+
- "review" / "audit" / "what is wrong with it" -> a check, not a build.
|
|
65
|
+
- "which keywords" / "why do we not rank" -> an intent question, not a build.
|
|
66
|
+
|
|
67
|
+
Ask only if this is the highest-value missing fact; otherwise proceed without an opener:
|
|
68
|
+
|
|
69
|
+
> **Q:** What is the business called, and what does one line of it actually do?
|
|
70
|
+
|
|
71
|
+
### Step 2 - Ask only what is missing
|
|
72
|
+
|
|
73
|
+
Treat ambiguous replies as unanswered and ask which explicit option the user means. Record unknown values as `Unknown`; `Unknown` is not zero. A record must not be `Done` when a required check fails.
|
|
74
|
+
|
|
75
|
+
Skip anything already answered. Ask the rest one at a time, and stop as soon as the
|
|
76
|
+
remaining answers would not change the profile spec.
|
|
77
|
+
|
|
78
|
+
- **Location** - Can customers visit a physical address, or is it a service-area business?
|
|
79
|
+
/ One location or several? / City, country, and the exact address as it should print?
|
|
80
|
+
- **What it does** - The full service list, in the words customers would use? / What does
|
|
81
|
+
a new customer ask for first? / Is there a second, different kind of work?
|
|
82
|
+
- **Current state** - Is a profile already claimed and verified? / Who owns the login, and
|
|
83
|
+
is it a personal account or a shared one? / What is the review count and average now?
|
|
84
|
+
- **Proof** - Can the premises be photographed, inside and out? / Is there a team, a
|
|
85
|
+
process, stock or equipment worth showing? / Any seasonal or by-appointment behaviour?
|
|
86
|
+
- **Engagement** - Who reviews replies, and how fast? / Is anyone being asked for a
|
|
87
|
+
review, and by what method? / Is there time to post weekly?
|
|
88
|
+
|
|
89
|
+
Never invent an answer. Address, phone, categories, services, review counts, ratings,
|
|
90
|
+
keywords, opening hours and metrics the user has not supplied are `Unknown`. A review count
|
|
91
|
+
is a measurement, never an estimate.
|
|
92
|
+
|
|
93
|
+
### Step 3 - Hold the internal context
|
|
94
|
+
|
|
95
|
+
```yaml
|
|
96
|
+
module: gbp-local-seo-intent
|
|
97
|
+
intent: null # set up | fix | review | report | import
|
|
98
|
+
scale: null # Starter | Growth | Scale, only if the answer changes it
|
|
99
|
+
areas:
|
|
100
|
+
"Location": null
|
|
101
|
+
"What It Does": null
|
|
102
|
+
"Current State": null
|
|
103
|
+
"Proof": null
|
|
104
|
+
"Engagement": null
|
|
105
|
+
requested_outputs: []
|
|
106
|
+
confirmed_facts: []
|
|
107
|
+
open_questions: []
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Step 4 - Recommend the smallest workflow
|
|
111
|
+
|
|
112
|
+
Build an already requested artifact without asking again. For advice-only requests, give a short recommendation and offer the relevant artifact.
|
|
113
|
+
|
|
114
|
+
**Recommended approach:** One verified profile with the most specific accurate primary
|
|
115
|
+
category, up to secondary categories that are genuinely true, a service list in the words
|
|
116
|
+
customers use, the business description written plainly with the service area named, and
|
|
117
|
+
opening hours including special hours. Then the two things that actually move it: a weekly
|
|
118
|
+
post, and one new review a week, replied to. Photographs of the real premises, added
|
|
119
|
+
monthly. Every field mirrored onto Bing Places and Apple Business Connect, and the intent
|
|
120
|
+
map written down so the same terms are used on the website.
|
|
121
|
+
|
|
122
|
+
**Why this one:** The profile is the strongest asset a local business owns, and completeness
|
|
123
|
+
beats cleverness. A completely filled profile with a weekly post and steady reviews
|
|
124
|
+
outperforms a clever one that is left alone for a year. And the intent map is what stops the
|
|
125
|
+
website, the profile and the directories using three different words for the same service.
|
|
126
|
+
|
|
127
|
+
**Workflow:** Address type confirmed → Primary category chosen as the most specific true
|
|
128
|
+
one → Secondary categories added → Services listed in customer words → Description written
|
|
129
|
+
and services named → Photos added of the real premises → Bing and Apple mirrored → Weekly
|
|
130
|
+
post scheduled → Review request process running → Replies written within the week →
|
|
131
|
+
Intent map shared with the website and the directories
|
|
132
|
+
|
|
133
|
+
### Step 5 - Build only on request
|
|
134
|
+
|
|
135
|
+
Once the user asks for it, derive the fields from the confirmed context and emit the
|
|
136
|
+
requested artifacts. For machine-readable text, keep prose outside the data; for files,
|
|
137
|
+
provide a usable link. Report material validation failures or limitations separately.
|
|
138
|
+
|
|
139
|
+
**A selected Notion output is rendered by `notion-manual-import`, so route the
|
|
140
|
+
Notion step there.** When the user selects Notion, hand that step to
|
|
141
|
+
@notion-manual-import: it holds the CSV, the property
|
|
142
|
+
mapping, the import steps and the verification checklist, and it renders the Field
|
|
143
|
+
Reference below instead of defining a table of its own. Do not restate the mapping
|
|
144
|
+
here and do not improvise the import steps. Manual CSV and mapping outputs need no
|
|
145
|
+
connection. For requested workspace changes, follow the shared contract: verify actual
|
|
146
|
+
tool access and the target before writing. A user saying "connected" is not tool evidence.
|
|
147
|
+
Never ask for a Notion password or token.
|
|
148
|
+
|
|
149
|
+
```csv
|
|
150
|
+
Row ID,Row Type,GBP Element,Value,Primary Keyword,Supporting Keywords,Search Intent,Landing Page URL,Media Attached,Post Type,Call To Action,Publish Date,Expiry Date,Review Rating,Review Date,Review Reply Status,Reviewer Response,Category Role,Visibility,Action Type,Data Quality Status,Verified,Owner,Review Date Check,Status,Notes
|
|
151
|
+
,Profile,Business description,"Example Retail is a home and kitchen goods shop in Example City selling cookware, storage and small appliances, with same-day local delivery across Example City and the surrounding area. Walk in for advice, order online, or call the shop.",example retail example city,"home and kitchen goods shop; small appliance shop",Local intent,https://example.com/,None,None,Visit the shop,2026-09-27,,0.0,2026-09-27,Not applicable,Not applicable,Primary,Public,Set up,Incomplete,false,Unknown,2026-10-27,Draft,"Example row - replace every value before use."
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
```sql
|
|
155
|
+
-- Engine assumption: PostgreSQL. For another engine use the engine's auto-increment
|
|
156
|
+
-- equivalent and keep the rest portable.
|
|
157
|
+
CREATE TABLE gbp_record (
|
|
158
|
+
row_id BIGINT PRIMARY KEY,
|
|
159
|
+
row_type VARCHAR(100) NOT NULL,
|
|
160
|
+
gbp_element VARCHAR(255) NOT NULL,
|
|
161
|
+
value TEXT,
|
|
162
|
+
primary_keyword VARCHAR(255),
|
|
163
|
+
supporting_keywords TEXT,
|
|
164
|
+
search_intent VARCHAR(100) NOT NULL,
|
|
165
|
+
landing_page_url TEXT,
|
|
166
|
+
media_attached VARCHAR(100) NOT NULL,
|
|
167
|
+
post_type VARCHAR(100) NOT NULL,
|
|
168
|
+
call_to_action VARCHAR(100),
|
|
169
|
+
publish_date DATE,
|
|
170
|
+
expiry_date DATE,
|
|
171
|
+
review_rating NUMERIC(2,1),
|
|
172
|
+
review_date DATE,
|
|
173
|
+
review_reply_status VARCHAR(100) NOT NULL,
|
|
174
|
+
reviewer_response TEXT,
|
|
175
|
+
category_role VARCHAR(50) NOT NULL,
|
|
176
|
+
visibility VARCHAR(50) NOT NULL,
|
|
177
|
+
action_type VARCHAR(100) NOT NULL,
|
|
178
|
+
data_quality_status VARCHAR(100) NOT NULL,
|
|
179
|
+
verified BOOLEAN NOT NULL,
|
|
180
|
+
owner VARCHAR(255),
|
|
181
|
+
review_date_check DATE,
|
|
182
|
+
status VARCHAR(50) NOT NULL,
|
|
183
|
+
notes TEXT,
|
|
184
|
+
created_at TIMESTAMP DEFAULT NOW(),
|
|
185
|
+
updated_at TIMESTAMP DEFAULT NOW(),
|
|
186
|
+
CONSTRAINT gbp_row_type CHECK (row_type IN ('Profile','Service','Category','Attribute','Post','Review','Question','Photo','Product')),
|
|
187
|
+
CONSTRAINT gbp_rating_range CHECK (review_rating IS NULL OR (review_rating >= 1 AND review_rating <= 5)),
|
|
188
|
+
CONSTRAINT gbp_data_quality CHECK (data_quality_status IN ('Complete','Incomplete','Needs Review','Blocked')),
|
|
189
|
+
CONSTRAINT gbp_category_role CHECK (category_role IN ('Primary','Secondary','Not applicable')),
|
|
190
|
+
CONSTRAINT gbp_expiry_after_publish CHECK (expiry_date IS NULL OR publish_date IS NULL OR expiry_date >= publish_date)
|
|
191
|
+
);
|
|
192
|
+
|
|
193
|
+
CREATE INDEX idx_gbp_record_row_type ON gbp_record (row_type);
|
|
194
|
+
CREATE INDEX idx_gbp_record_status ON gbp_record (status);
|
|
195
|
+
CREATE INDEX idx_gbp_record_reply ON gbp_record (review_reply_status);
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
```json
|
|
199
|
+
{
|
|
200
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
201
|
+
"title": "GBP & Local SEO Intent",
|
|
202
|
+
"type": "object",
|
|
203
|
+
"additionalProperties": false,
|
|
204
|
+
"properties": {
|
|
205
|
+
"Row ID": { "type": "integer" },
|
|
206
|
+
"Row Type": { "type": "string" },
|
|
207
|
+
"GBP Element": { "type": "string" },
|
|
208
|
+
"Value": { "type": "string" },
|
|
209
|
+
"Primary Keyword": { "type": "string" },
|
|
210
|
+
"Supporting Keywords": { "type": "string" },
|
|
211
|
+
"Search Intent": { "type": "string" },
|
|
212
|
+
"Landing Page URL": { "type": "string", "format": "uri" },
|
|
213
|
+
"Media Attached": { "type": "string" },
|
|
214
|
+
"Post Type": { "type": "string" },
|
|
215
|
+
"Call To Action": { "type": "string" },
|
|
216
|
+
"Publish Date": { "type": "string", "format": "date" },
|
|
217
|
+
"Expiry Date": { "type": "string", "format": "date" },
|
|
218
|
+
"Review Rating": { "type": "number" },
|
|
219
|
+
"Review Date": { "type": "string", "format": "date" },
|
|
220
|
+
"Review Reply Status": { "type": "string" },
|
|
221
|
+
"Reviewer Response": { "type": "string" },
|
|
222
|
+
"Category Role": { "type": "string" },
|
|
223
|
+
"Visibility": { "type": "string" },
|
|
224
|
+
"Action Type": { "type": "string" },
|
|
225
|
+
"Data Quality Status": { "type": "string" },
|
|
226
|
+
"Verified": { "type": "boolean" },
|
|
227
|
+
"Owner": { "type": "string" },
|
|
228
|
+
"Review Date Check": { "type": "string", "format": "date" },
|
|
229
|
+
"Status": { "type": "string" },
|
|
230
|
+
"Notes": { "type": "string" }
|
|
231
|
+
},
|
|
232
|
+
"required": [
|
|
233
|
+
"Row Type",
|
|
234
|
+
"GBP Element",
|
|
235
|
+
"Search Intent",
|
|
236
|
+
"Media Attached",
|
|
237
|
+
"Post Type",
|
|
238
|
+
"Review Reply Status",
|
|
239
|
+
"Category Role",
|
|
240
|
+
"Visibility",
|
|
241
|
+
"Action Type",
|
|
242
|
+
"Data Quality Status",
|
|
243
|
+
"Verified",
|
|
244
|
+
"Status"
|
|
245
|
+
]
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
```markdown
|
|
250
|
+
| CSV column | Notion property | Set after import |
|
|
251
|
+
|---|---|---|
|
|
252
|
+
| Row ID | Text (preserve source ID) | Keep imported IDs as Text; optionally add a separate Unique ID property |
|
|
253
|
+
| Row Type | Select (add options after import) | Convert to Select, add options: "Profile", "Service", "Category", "Attribute", "Post", "Review", "Question", "Photo", "Product" |
|
|
254
|
+
| GBP Element | Text | Leave as Text. The field being set, e.g. "Business description", "Opening hours" |
|
|
255
|
+
| Value | Text | Leave as Text. The actual text or value. The longest cell on this table |
|
|
256
|
+
| Primary Keyword | Text | Leave as Text. The term this row is meant to answer |
|
|
257
|
+
| Supporting Keywords | Title | Use as the database title |
|
|
258
|
+
| Search Intent | Select (add options after import) | Convert to Select, add options: "Informational", "Commercial investigation", "Transactional", "Navigational", "Local intent" |
|
|
259
|
+
| Landing Page URL | URL | Convert to URL. Every post and service points at a real page on the site |
|
|
260
|
+
| Media Attached | Select (add options after import) | Convert to Select, add options: "None", "Photo", "Photo set", "Video" |
|
|
261
|
+
| Post Type | Select (add options after import) | Convert to Select, add options: "None", "Update", "Offer", "Event", "Product" |
|
|
262
|
+
| Call To Action | Select (add options after import) | Convert to Select, add options: "None", "Learn more", "Call now", "Book", "Get offer", "Sign up", "Shop", "Order" |
|
|
263
|
+
| Publish Date | Date | Convert to Date. Blank for a profile field that is not scheduled |
|
|
264
|
+
| Expiry Date | Date | Convert to Date. An offer post must have one or it stays up for ever |
|
|
265
|
+
| Review Rating | Number | Convert to Number, one decimal place, digits only. Never entered by hand for someone else's review - copied from the profile |
|
|
266
|
+
| Review Date | Date | Convert to Date |
|
|
267
|
+
| Review Reply Status | Select (add options after import) | Convert to Select, add options: "Not applicable", "Replied", "Reply pending", "Reply overdue" |
|
|
268
|
+
| Reviewer Response | Text | Leave as Text. What was actually said, in full |
|
|
269
|
+
| Category Role | Select (add options after import) | Convert to Select, add options: "Primary", "Secondary", "Not applicable" |
|
|
270
|
+
| Visibility | Select (add options after import) | Convert to Select, add options: "Public", "Public and managed", "Hidden - see Notes" |
|
|
271
|
+
| Action Type | Select (add options after import) | Convert to Select, add options: "None", "Set up", "Edit", "Reply", "Request", "Verify", "Mirror", "Suspend", "Escalate" |
|
|
272
|
+
| Data Quality Status | Select (add options after import) | Convert to Select, add options: "Complete", "Incomplete", "Needs Review", "Blocked" |
|
|
273
|
+
| Verified | Checkbox | Convert to Checkbox. False until verification has actually completed |
|
|
274
|
+
| Owner | Text | Leave as Text |
|
|
275
|
+
| Review Date Check | Date | Convert to Date. Named "Check" so it cannot be confused with a review's own date |
|
|
276
|
+
| Status | Select (add options after import) | Convert to Select, add options: "Planned", "In progress", "Live", "Needs update", "Retired" |
|
|
277
|
+
| Notes | Text | Leave as Text |
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
The rows above are documentation examples only. Emit empty templates unless the user explicitly requests examples. `Verified` is false until verification completes
|
|
281
|
+
and `Review Rating` is 0 only because a review row was never entered - a real rating is
|
|
282
|
+
always a measurement the business supplied.
|
|
283
|
+
|
|
284
|
+
## Field Reference
|
|
285
|
+
|
|
286
|
+
| # | Field | Type | SQL | JSON Schema | Notion | CSV example |
|
|
287
|
+
|---:|---|---|---|---|---|---|
|
|
288
|
+
| 1 | Row ID | `id` | `BIGINT PRIMARY KEY` | `integer` | Text or Notion auto-ID | `(blank)` |
|
|
289
|
+
| 2 | Row Type | `select` | `VARCHAR(100)` | `string` | Select | `Profile` |
|
|
290
|
+
| 3 | GBP Element | `text` | `VARCHAR(255)` | `string` | Text | *(blank)* |
|
|
291
|
+
| 4 | Value | `long_text` | `TEXT` | `string` | Text | *(blank)* |
|
|
292
|
+
| 5 | Primary Keyword | `text` | `VARCHAR(255)` | `string` | Text | *(blank)* |
|
|
293
|
+
| 6 | Supporting Keywords | `long_text` | `TEXT` | `string` | Text | *(blank)* |
|
|
294
|
+
| 7 | Search Intent | `select` | `VARCHAR(100)` | `string` | Select | `Local intent` |
|
|
295
|
+
| 8 | Landing Page URL | `url` | `TEXT` | `string, format: uri` | URL | *(blank)* |
|
|
296
|
+
| 9 | Media Attached | `select` | `VARCHAR(100)` | `string` | Select | `None` |
|
|
297
|
+
| 10 | Post Type | `select` | `VARCHAR(100)` | `string` | Select | `None` |
|
|
298
|
+
| 11 | Call To Action | `select` | `VARCHAR(100)` | `string` | Select | `Visit the shop` |
|
|
299
|
+
| 12 | Publish Date | `date` | `DATE` | `string, format: date` | Date | *(blank)* |
|
|
300
|
+
| 13 | Expiry Date | `date` | `DATE` | `string, format: date` | Date | *(blank)* |
|
|
301
|
+
| 14 | Review Rating | `number` | `NUMERIC(2,1)` | `number` | Number | `0.0` |
|
|
302
|
+
| 15 | Review Date | `date` | `DATE` | `string, format: date` | Date | *(blank)* |
|
|
303
|
+
| 16 | Review Reply Status | `select` | `VARCHAR(100)` | `string` | Select | `Not applicable` |
|
|
304
|
+
| 17 | Reviewer Response | `long_text` | `TEXT` | `string` | Text | *(blank)* |
|
|
305
|
+
| 18 | Category Role | `select` | `VARCHAR(50)` | `string` | Select | `Primary` |
|
|
306
|
+
| 19 | Visibility | `select` | `VARCHAR(50)` | `string` | Select | `Public` |
|
|
307
|
+
| 20 | Action Type | `select` | `VARCHAR(100)` | `string` | Select | `Set up` |
|
|
308
|
+
| 21 | Data Quality Status | `select` | `VARCHAR(100)` | `string` | Select | `Incomplete` |
|
|
309
|
+
| 22 | Verified | `boolean` | `BOOLEAN` | `boolean` | Checkbox | `false` |
|
|
310
|
+
| 23 | Owner | `text` | `VARCHAR(255)` | `string` | Text | `Unknown` |
|
|
311
|
+
| 24 | Review Date Check | `date` | `DATE` | `string, format: date` | Date | *(blank)* |
|
|
312
|
+
| 25 | Status | `select` | `VARCHAR(50)` | `string` | Select | `Draft` |
|
|
313
|
+
| 26 | Notes | `long_text` | `TEXT` | `string` | Text | *(blank)* |
|
|
314
|
+
|
|
315
|
+
## Select Options
|
|
316
|
+
|
|
317
|
+
**Row Type** - the discriminator. Nine kinds of thing live in this table and they are
|
|
318
|
+
filtered on this column constantly. A review is not a post, and a service is not a profile
|
|
319
|
+
field.
|
|
320
|
+
|
|
321
|
+
```
|
|
322
|
+
Profile | Service | Category | Attribute | Post | Review | Question | Photo | Product
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
**Search Intent** - the same four intents as the website, plus local. A local pack
|
|
326
|
+
appearance is a `Local intent` result; everything else on the profile supports it.
|
|
327
|
+
|
|
328
|
+
```
|
|
329
|
+
Informational | Commercial investigation | Transactional | Navigational | Local intent
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
**Media Attached** - posts with an image outperform text-only posts consistently.
|
|
333
|
+
|
|
334
|
+
```
|
|
335
|
+
None | Photo | Photo set | Video
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
**Post Type** - `Offer` is the only one that can expire, and an offer without an expiry
|
|
339
|
+
stays on the profile for ever.
|
|
340
|
+
|
|
341
|
+
```
|
|
342
|
+
None | Update | Offer | Event | Product
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
**Call To Action** - Google supplies a fixed list. Use one of these, not a custom phrase, so
|
|
346
|
+
the button renders.
|
|
347
|
+
|
|
348
|
+
```
|
|
349
|
+
None | Learn more | Call now | Book | Get offer | Sign up | Shop | Order
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
**Review Reply Status** - the field that turns a review into a task. `Reply overdue` is
|
|
353
|
+
what makes the cadence visible.
|
|
354
|
+
|
|
355
|
+
```
|
|
356
|
+
Not applicable | Replied | Reply pending | Reply overdue
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
**Category Role** - primary is the single most important setting on the whole profile.
|
|
360
|
+
|
|
361
|
+
```
|
|
362
|
+
Primary | Secondary | Not applicable
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
**Action Type** - what the row exists to make happen.
|
|
366
|
+
|
|
367
|
+
```
|
|
368
|
+
None | Set up | Edit | Reply | Request | Verify | Mirror | Suspend | Escalate
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
**Data Quality Status**
|
|
372
|
+
|
|
373
|
+
```
|
|
374
|
+
Complete | Incomplete | Needs Review | Blocked
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
**Status**
|
|
378
|
+
|
|
379
|
+
```
|
|
380
|
+
Planned | In progress | Live | Needs update | Retired
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
## Relations
|
|
384
|
+
|
|
385
|
+
None standalone. Worth confirming with the business:
|
|
386
|
+
|
|
387
|
+
- `Landing Page URL` points at a page in `business-website-setup`. Confirm whether the
|
|
388
|
+
business wants the two joined before it is made live; the URL text is the reliable key
|
|
389
|
+
until they are.
|
|
390
|
+
- `Owner` points at the people register in the operational pack, which is not in this
|
|
391
|
+
artifact set. It stays Text with a note naming the intended target.
|
|
392
|
+
|
|
393
|
+
## Examples
|
|
394
|
+
|
|
395
|
+
**Prompt**
|
|
396
|
+
|
|
397
|
+
```
|
|
398
|
+
We are not showing up on Google Maps at all. Our competitors in the same street show up
|
|
399
|
+
for everything. I made a profile a year ago and gave up when verification asked for a
|
|
400
|
+
video of the shopfront.
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
**Context first** - one question per message, nothing already answered:
|
|
404
|
+
|
|
405
|
+
> **Q:** What is the business called, and what does one line of it actually do?
|
|
406
|
+
> **A:** Example Retail, home and kitchen goods.
|
|
407
|
+
>
|
|
408
|
+
> **Q:** Do customers visit the shop, and what is the exact address as it should print?
|
|
409
|
+
> **A:** Yes, one shop. It is in the shopfront.
|
|
410
|
+
>
|
|
411
|
+
> **Q:** What is the full service list, in the words customers use?
|
|
412
|
+
> **A:** Cookware, storage, small appliances, and same-day delivery.
|
|
413
|
+
>
|
|
414
|
+
> **Q:** Did the verification video ever go in, or is the profile still unverified?
|
|
415
|
+
> **A:** Still unverified. That is why we gave up.
|
|
416
|
+
>
|
|
417
|
+
> **Q:** Is anyone asking customers for reviews at the moment?
|
|
418
|
+
> **A:** We put a card on the counter. Nothing has come of it.
|
|
419
|
+
|
|
420
|
+
**Recommended next step** - offered, not built:
|
|
421
|
+
|
|
422
|
+
> Finish the verification first - an unverified profile ranks for nothing, so everything
|
|
423
|
+
> else is wasted until it is done. Then the most specific true primary category, the
|
|
424
|
+
> services in the words customers use, a plain description that names the delivery area,
|
|
425
|
+
> and the same data mirrored to Bing Places and Apple Business Connect. Then the two things
|
|
426
|
+
> that actually move it: a weekly post, and one new review a week, replied to. The counter
|
|
427
|
+
> card needs a URL with a prefilled review shortlink, not a QR code to your homepage.
|
|
428
|
+
>
|
|
429
|
+
> Workflow: Address type confirmed → Verification completed → Primary category chosen →
|
|
430
|
+
> Services listed in customer words → Description written → Photos of the real premises
|
|
431
|
+
> added → Bing and Apple mirrored → Weekly post scheduled → Review request process running
|
|
432
|
+
> → Replies written within the week → Intent map shared with the website
|
|
433
|
+
>
|
|
434
|
+
> Want the CSV, SQL DDL, JSON Schema and Notion mapping for this?
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
See the [Best Practices](references/best-practices.md) reference for the full guidance.
|
|
438
|
+
|
|
439
|
+
## Limitations
|
|
440
|
+
|
|
441
|
+
- This is a plan and a register. It does not create, claim, verify or edit a profile, and it
|
|
442
|
+
calls no Google APIs.
|
|
443
|
+
- It cannot see the current profile, its categories, its ranking, its review count or its
|
|
444
|
+
competitors. Every current-state value must come from the business.
|
|
445
|
+
- `Review Rating` and `Review Count` are measurements the business supplies. This skill
|
|
446
|
+
never estimates them and never fills a plausible number.
|
|
447
|
+
- Google states the three local ranking factors - relevance, distance and prominence -
|
|
448
|
+
and states that no one can pay for a better local rank. Any weight given to a factor by
|
|
449
|
+
a third party is that third party's estimate, not Google's, and this skill does not
|
|
450
|
+
present one as fact.
|
|
451
|
+
- Category lists, attributes and service options change without notice. A category that
|
|
452
|
+
exists today may not next quarter.
|
|
453
|
+
- Search volumes, keyword difficulty and competitor positions are not measured here. Those
|
|
454
|
+
need a keyword tool the business has access to.
|
|
455
|
+
- Post reach, click-through and conversion data live in the profile's own analytics, and
|
|
456
|
+
the thresholds are Google's own.
|
|
457
|
+
- Suspension and reinstatement are decisions Google makes. This skill can identify the
|
|
458
|
+
policy risk in a plan; it cannot decide an outcome.
|
|
459
|
+
- Multi-location businesses need a location group, unique profiles, unique descriptions and
|
|
460
|
+
a naming convention. That is a larger build than this table and needs confirming first.
|
|
461
|
+
- "Competitors show up for everything" usually means a more complete profile, more reviews
|
|
462
|
+
and closer proximity - not that they did something the business cannot do.
|
|
463
|
+
|
|
464
|
+
|
|
465
|
+
See the [Security & Safety Notes](references/security-safety-notes.md) reference for the full guidance.
|
|
466
|
+
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Best Practices
|
|
2
|
+
|
|
3
|
+
- Build when requested; recommend and offer a build for advice-only requests.
|
|
4
|
+
- One question per message. A batched intake reads as a form and gets guessed at.
|
|
5
|
+
- Complete the profile before optimising it. An unverified profile is invisible, so nothing
|
|
6
|
+
else matters until verification finishes.
|
|
7
|
+
- Pick the most specific true primary category. A generic category is a fight against
|
|
8
|
+
businesses with a more specific one, and a category that is not accurate is a suspension
|
|
9
|
+
risk.
|
|
10
|
+
- Only add secondary categories that are genuinely true. A category is a statement about
|
|
11
|
+
the business, not a keyword slot.
|
|
12
|
+
- Write the description in plain words, name the services and the service area inside it,
|
|
13
|
+
and do not put a URL or a promotional phrase in it. Google strips both.
|
|
14
|
+
- Never add a keyword to the business name. It is a policy violation and the fastest route
|
|
15
|
+
to suspension. If a keyword is needed in the name, the route is a permitted registered or
|
|
16
|
+
trading name, obtained properly - not a string typed into a free field.
|
|
17
|
+
- For a service-area business with no walk-in premises, hide the address and set the
|
|
18
|
+
service area. Do not use a virtual address, a co-working space or a friend's home -
|
|
19
|
+
suspension and a manual action are the likely outcomes.
|
|
20
|
+
- One post a week with a real photo and one call to action. A post with no image is a
|
|
21
|
+
text-only post, and it underperforms.
|
|
22
|
+
- Give every offer post an expiry date. An offer left up for ever looks abandoned.
|
|
23
|
+
- One new review a week, forever. Google weighs review count, recency and rating together,
|
|
24
|
+
so steady new reviews beat a burst of thirty in one week.
|
|
25
|
+
- Reply to every review, including the good ones. A substantial share of customers read the
|
|
26
|
+
responses before deciding, which makes the reply a conversion factor rather than damage
|
|
27
|
+
control. Reply to a bad review by acknowledging the specific complaint, saying what will
|
|
28
|
+
change, and moving it off-platform - never by arguing, and never by revealing anything
|
|
29
|
+
about the reviewer.
|
|
30
|
+
- Ask for reviews at the moment of satisfaction, with a short link generated from the
|
|
31
|
+
profile, not a QR code to the homepage.
|
|
32
|
+
- Photograph the real premises, the real team and the real work. Stock is the clearest
|
|
33
|
+
possible signal that nobody has been there.
|
|
34
|
+
- Keep the hours correct, including special hours for holidays. Wrong hours generate both
|
|
35
|
+
one-star reviews and lost customers.
|
|
36
|
+
- Use the same words on the website, the profile and the directories. Write the intent map
|
|
37
|
+
down once and share it; the profile, the page and the citation all read from it.
|
|
38
|
+
- Never buy reviews, and never buy a better rank. Neither is possible, both are policy
|
|
39
|
+
violations, and both are detected.
|
|
40
|
+
- Derive all four artifacts from the field list in this file, never by hand.
|
|
41
|
+
- If the user requests an example row, keep it obviously fake so nobody imports it as a real profile.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Common Pitfalls
|
|
2
|
+
|
|
3
|
+
- **Problem:** a static mapping is described as a completed workspace build.
|
|
4
|
+
**Solution:** deliver manual mappings without a connection; claim a live change only
|
|
5
|
+
after the authorized tool operation succeeds.
|
|
6
|
+
- **Problem:** asked all five questions in one message.
|
|
7
|
+
**Solution:** ask one, wait, and drop any the first answer already covered.
|
|
8
|
+
- **Problem:** the profile is unverified and everything else is being optimised.
|
|
9
|
+
**Solution:** finish verification first. Nothing ranks on an unverified profile, so the
|
|
10
|
+
rest is wasted effort.
|
|
11
|
+
- **Problem:** the business name is now "Example Retail - Best Cookware Shop in Example
|
|
12
|
+
City".
|
|
13
|
+
**Solution:** that is a policy violation. Revert to the real name and put the keyword in
|
|
14
|
+
the description and the services.
|
|
15
|
+
- **Problem:** a virtual office address was used for a service-area business.
|
|
16
|
+
**Solution:** hide the address, set the service area properly, and expect either a
|
|
17
|
+
suspension or a wasted profile.
|
|
18
|
+
- **Problem:** one post was published eighteen months ago.
|
|
19
|
+
**Solution:** dormant profiles lose visibility. A weekly post with a real photo is the
|
|
20
|
+
cheapest ongoing work on this list.
|
|
21
|
+
- **Problem:** fifty reviews arrived in one week from the same device.
|
|
22
|
+
**Solution:** that pattern is a policy violation risk, and the volume is worth less than
|
|
23
|
+
the appearance. Steady, one a week, is what the signal actually rewards.
|
|
24
|
+
- **Problem:** the profile, the website and three directories all describe the service
|
|
25
|
+
differently.
|
|
26
|
+
**Solution:** write the intent map once and use it everywhere. Inconsistency dilutes all
|
|
27
|
+
of them.
|
|
28
|
+
- **Problem:** a category was added because a competitor had it.
|
|
29
|
+
**Solution:** categories are a statement of fact. An inaccurate category is a suspension
|
|
30
|
+
risk and gains nothing.
|
|
31
|
+
- **Problem:** the review replies all say "Thank you for your feedback."
|
|
32
|
+
**Solution:** a reply that could apply to any business is not a reply. Say something
|
|
33
|
+
specific to what the customer actually said.
|
|
34
|
+
- **Problem:** all four artifacts drift apart.
|
|
35
|
+
**Solution:** derive all four from the field list in this file, never by hand.
|
|
36
|
+
- **Problem:** Notion import shows every column as Text.
|
|
37
|
+
**Solution:** that is expected. Apply the property mapping table once, after import.
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
See the [Related Skills](references/related-skills.md) reference for the full guidance.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Related Skills
|
|
2
|
+
|
|
3
|
+
- @brand-growth-system-builder - routes to this skill and the other 12 brand and growth modules.
|
|
4
|
+
- @business-website-setup - the pages every post and service points at, sharing the same
|
|
5
|
+
keywords and the same NAP.
|
|
6
|
+
- @seo-directory-backlinks - the citations that must agree with this profile exactly.
|
|
7
|
+
- @logo-image-design - the logo, the shopfront photography and the product images that go
|
|
8
|
+
on the profile.
|
|
9
|
+
- @business-email-template - the review request, and any offer announcement.
|
|
10
|
+
- @linktree-link-hub - where the booking and call actions land.
|
|
11
|
+
- @social-media-setup - cross-posting the weekly post, with the platform's own constraints.
|
|
12
|
+
- @code-of-conduct - how reviews and complaints are handled when they are about staff.
|
|
13
|
+
- ](https://github.com/sickn33/agentic-awesome-skills/blob/main/skills/free-design-resources/SKILL.md) - Search Console, PageSpeed Insights, the schema validators and
|
|
14
|
+
the free stock sources for photos.
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
See the [Reusable Prompt](references/reusable-prompt.md) reference for the full guidance.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Reusable Prompt
|
|
2
|
+
|
|
3
|
+
```
|
|
4
|
+
I want my Google Business Profile set up properly and ranked - categories, services,
|
|
5
|
+
description, posts, photos and a review process, plus the search-intent map behind it.
|
|
6
|
+
Ask me one short question at a time, and only about what I have not already told you.
|
|
7
|
+
Never invent an address, a category, a review count, a rating or a keyword. Confirm
|
|
8
|
+
verification first, and never suggest anything that violates Google's business name or
|
|
9
|
+
address policy. Wait for me to ask before you build anything.
|
|
10
|
+
When I ask, output CSV, SQL DDL, JSON Schema and a Notion property mapping. Data only.
|
|
11
|
+
```
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Security & Safety Notes
|
|
2
|
+
|
|
3
|
+
- Never invent an address, a phone number, a category, a service, a review count, a rating,
|
|
4
|
+
a keyword or a metric. `Unknown` and blank are correct when nothing has been measured; zero means a measured zero.
|
|
5
|
+
- Never paste a real customer list, a review export containing customer names, or a
|
|
6
|
+
verified-address document into this table. A review with a name and photo is personal
|
|
7
|
+
data, and the address of the premises is sensitive in some jurisdictions.
|
|
8
|
+
- The profile login must not be a personal account that one person controls and nobody
|
|
9
|
+
else can reach. A shared account with named managers and named access is the
|
|
10
|
+
recommendation; losing the owner account is how businesses lose their profile.
|
|
11
|
+
- Two-factor authentication on the profile account, and a record of who has manager access.
|
|
12
|
+
- Never fabricate or incentivise a review. A review gate - asking only happy customers -
|
|
13
|
+
breaches Google's policy and is detectable.
|
|
14
|
+
- Never advise a virtual address, a coworking membership or a friend's premises to appear
|
|
15
|
+
in the map pack. It is a guideline violation and the suspension is usually permanent for
|
|
16
|
+
that profile.
|
|
17
|
+
- Reply content to a negative review is a public statement. It must never include a
|
|
18
|
+
customer's personal details, a transaction reference or a service detail that identifies
|
|
19
|
+
them. Move it to a private channel.
|
|
20
|
+
- Verification documents - a video of the shopfront, a utility bill, a lease - are
|
|
21
|
+
sensitive. They should go to Google directly and never into this table or a chat.
|
|
22
|
+
- Local reads, generation commands, and validation are part of a requested artifact build.
|
|
23
|
+
External writes, messages, provisioning, and publication require authorization for that
|
|
24
|
+
action and target; existing explicit authorization does not need to be repeated.
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
See the [Common Pitfalls](references/common-pitfalls.md) reference for the full guidance.
|