# ============================================================================ # SEO / GEO / B&M Business Wiki — Operator Intake + Environment Template # ============================================================================ # # This file is your one-stop intake form. Copy it to `.env` and fill in # whatever you have. Anything you don't have yet, leave blank — we'll # gather it across the first few sessions. # # cp .env.example .env # # then open .env and edit # # `.env` is gitignored — it never leaves your laptop. Only `.env.example` # is committed. Never commit a filled-in `.env`. # # Two kinds of values live here: # # (A) API KEYS — actual environment variables consumed by MCP servers and # lint scripts. These NEED to be in `.env` for the tools to work. # # (B) BUSINESS PROFILE DATA — a checklist of operator-supplied facts the # wiki needs (business name, addresses, GBP URLs, social handles, # etc.). The canonical home for this data is the relevant wiki page # (`wiki/entities/companies/shop-1.md`, `wiki/entities/markets/.md`, etc.) — but listing it here too gives you ONE document # you can scan when prepping for a session, and one place to store # intermediate values before promoting them into the wiki pages. # # Convention: lines that start `#` are comments. Lines like `KEY=` are # fields to fill. Lines like `# KEY=` are optional / future fields. # # ============================================================================ # (A) API KEYS — required for MCP servers + scripts # ============================================================================ # Brave Search API — for the brave-search MCP server. # Used for: SEO research, "near me" SERP samples, competitor lookups, news # on Google algorithm updates and platform policy changes. # Get a key at https://api.search.brave.com/ (free tier: 2,000 queries/mo). BRAVE_API_KEY= # Exa API — for the exa MCP server. # Used for: higher-signal SEO + GEO/AEO best-practice content, deep # research, GitHub repo crawling for Phase-0 tool audits. # Get a key at https://exa.ai/ (paid; pay-per-search). EXA_API_KEY= # Substack Publisher API — for the global `substack` MCP # (dkships/substack-publisher-mcp via ~/.local/bin/mcp-substack). # Used for: Outlier Weekly post stats + subscriber counts (read-only). # Do not put the key in this file, mcp.json, chat, or git. # Generate in the Outlier dashboard (page exists; may still be enrollment-gated): # https://outlierweekly.substack.com/publish/settings/api # Then: # umask 077 # cat > ~/.cemini/substack-api-key # paste key, no newline chatter, then Ctrl-D # chmod 600 ~/.cemini/substack-api-key # Flip ~/.cursor/mcp.json mcpServers.substack.disabled to false and reload Cursor. # Official remote MCP (OAuth, mcp:read) is a separate server: substack-official # https://mcp.substack.com/api/v1/mcp # SUBSTACK_API_KEY= # Google APIs (optional, advanced) — for direct GBP / GSC / GA4 access. # Most workflows here paste exported reports/screenshots into the wiki # rather than calling APIs directly, so these are usually NOT needed at # start. Unblock them later if you want programmatic GBP / GSC / GA4 # pulls. See https://console.cloud.google.com/ # GOOGLE_API_KEY= # GOOGLE_CLIENT_ID= # GOOGLE_CLIENT_SECRET= # DataForSEO API (optional) — only if you adopt the seomachine Claude Code # skill (see wiki/entities/tools/seomachine.md, currently CONDITIONAL-GO). # Skip until you're ready for long-form content work. # DATAFORSEO_LOGIN= # DATAFORSEO_PASSWORD= # ============================================================================ # (B) BUSINESS PROFILE DATA — what the operator needs to gather # ============================================================================ # # These values eventually live in the relevant wiki pages (linked under each # section). Fill them in here as you collect them; promote into the wiki # pages as you go. Treat this file as the master checklist. # # Tip: if you have a value, fill it in. If you DON'T have it, leave the # field blank and add a `# TODO: ...` line below explaining what's missing # and how to get it (e.g. "log into GBP and grab the place ID"). # # ---------------------------------------------------------------------------- # B.1 — Business identity # Promote into: wiki/entities/companies/shop-1.md (Raw Concept + Narrative) # ---------------------------------------------------------------------------- # Legal business name (as filed with the state / on the GBP listing) BUSINESS_LEGAL_NAME= # DBA / public-facing name (if different from legal name) BUSINESS_DBA= # Primary GBP category (must exactly match a Google category — e.g. # "Barber Shop", "Hair Salon", "Restaurant", "Dentist", "Auto Repair Shop") BUSINESS_PRIMARY_CATEGORY= # Secondary GBP categories (comma-separated; up to 9 total) BUSINESS_SECONDARY_CATEGORIES= # One-line tagline (used in social bios, meta descriptions) BUSINESS_TAGLINE= # Year founded (for E-E-A-T / "established YYYY" copy) BUSINESS_YEAR_FOUNDED= # Primary languages spoken / supported (English, Spanish, Portuguese, etc.) BUSINESS_LANGUAGES= # Price tier ($, $$, $$$ — for GBP price-range field) BUSINESS_PRICE_TIER= # Top 3-5 services (most-booked or highest-revenue), comma-separated BUSINESS_TOP_SERVICES= # 3-5 phrases that differentiate from local competitors BUSINESS_DIFFERENTIATORS= # Target customer demographic (free-form — e.g. "working professionals, # college students, traditional regulars, families") BUSINESS_TARGET_DEMOGRAPHIC= # ---------------------------------------------------------------------------- # B.2 — Location 1 (for single-location businesses, fill ONLY this section) # Promote into: wiki/entities/companies/shop-1.md # ---------------------------------------------------------------------------- LOCATION_1_NAME= LOCATION_1_STREET= LOCATION_1_CITY= LOCATION_1_STATE= LOCATION_1_ZIP= LOCATION_1_COUNTRY=US LOCATION_1_PHONE= LOCATION_1_EMAIL= # Hours: M-F:9-6,Sat:10-4,Sun:closed (or leave blank, capture in wiki page) LOCATION_1_HOURS= # Google Business Profile listing URL (https://www.google.com/maps/place/...) LOCATION_1_GBP_URL= # GBP Place ID (find via https://developers.google.com/maps/documentation/places/web-service/place-id) LOCATION_1_GBP_PLACE_ID= # GBP review-request short link (the "ask customers for a review" URL) # Format: https://g.page/r//review LOCATION_1_GBP_REVIEW_URL= # Yelp listing URL LOCATION_1_YELP_URL= # Facebook Page URL LOCATION_1_FACEBOOK_URL= # Apple Business Connect listing URL (or "claimed" / "pending" / "unclaimed") LOCATION_1_APPLE_BUSINESS_URL= # Bing Places listing URL (or claim status as above) LOCATION_1_BING_URL= # Latitude / Longitude (decimal — e.g. 40.7128, -74.0060) LOCATION_1_LAT= LOCATION_1_LONG= # ---------------------------------------------------------------------------- # B.3 — Location 2 (if multi-location; otherwise leave blank) # Promote into: wiki/entities/companies/shop-2.md # ---------------------------------------------------------------------------- LOCATION_2_NAME= LOCATION_2_STREET= LOCATION_2_CITY= LOCATION_2_STATE= LOCATION_2_ZIP= LOCATION_2_COUNTRY=US LOCATION_2_PHONE= LOCATION_2_EMAIL= LOCATION_2_HOURS= LOCATION_2_GBP_URL= LOCATION_2_GBP_PLACE_ID= LOCATION_2_GBP_REVIEW_URL= LOCATION_2_YELP_URL= LOCATION_2_FACEBOOK_URL= LOCATION_2_APPLE_BUSINESS_URL= LOCATION_2_BING_URL= LOCATION_2_LAT= LOCATION_2_LONG= # (3+ locations: copy the LOCATION_2_* block as LOCATION_3_*, LOCATION_4_* # etc. and fill in. Promote each into its own wiki/entities/companies/shop-N.md.) # ---------------------------------------------------------------------------- # B.4 — Web presence # Promote into: wiki/entities/companies/shop-1.md (Web Presence section) + # wiki/concepts/website-essentials-local-business.md # ---------------------------------------------------------------------------- # Primary website URL (the one customers visit) WEBSITE_URL= # Website platform (WordPress / Wix / Squarespace / Webflow / Shopify / # Webador / GoDaddy Website Builder / custom / none) WEBSITE_PLATFORM= # Hosting provider (only if separate from platform — e.g. SiteGround, # Bluehost, WP Engine, Kinsta, Vercel, Netlify, self-hosted) WEBSITE_HOSTING= # Domain registrar (GoDaddy / Namecheap / Google Domains / Cloudflare / etc.) DOMAIN_REGISTRAR= # Google Search Console verified for the domain? (yes / no / unsure) GSC_VERIFIED= # Google Analytics 4 property ID (G-XXXXXXXXXX) — if installed GA4_PROPERTY_ID= # Google Tag Manager container ID (GTM-XXXXXXX) — if installed GTM_CONTAINER_ID= # SSL / HTTPS active? (yes / no — should always be yes for any modern site) WEBSITE_HTTPS= # Schema markup currently on the site? (yes / no / unsure — see # wiki/concepts/schema-markup-local.md for what to look for) SCHEMA_MARKUP_PRESENT= # ---------------------------------------------------------------------------- # B.5 — Social handles # Promote into: wiki/entities/companies/shop-1.md (Social section) + # wiki/concepts/social-media-for-barbershops.md (or your # vertical's equivalent hub once forked) # ---------------------------------------------------------------------------- # Instagram handle (with or without leading @) INSTAGRAM_HANDLE= INSTAGRAM_FOLLOWER_COUNT= # TikTok handle TIKTOK_HANDLE= TIKTOK_FOLLOWER_COUNT= # Facebook Page handle (the @username, not the page-id URL) FACEBOOK_HANDLE= # YouTube channel URL or @handle (if any — barbershops increasingly use # YouTube Shorts; restaurants for menu-walkthrough videos; etc.) YOUTUBE_CHANNEL= # X / Twitter handle (low priority for most B&M; capture if active) TWITTER_HANDLE= # LinkedIn page (only relevant for B2B-ish service businesses) LINKEDIN_PAGE= # Pinterest (only relevant for visual-discovery-driven verticals) PINTEREST_HANDLE= # Threads (Meta) — increasingly relevant for IG-anchored businesses THREADS_HANDLE= # ---------------------------------------------------------------------------- # B.6 — Booking + customer systems # Promote into: wiki/entities/companies/shop-1.md (Operations section) # ---------------------------------------------------------------------------- # Booking platform (Booksy / Squire / Acuity / Calendly / Square Appointments # / GBP-native booking / OpenTable / Resy / SimplyBook / none / other) BOOKING_PLATFORM= BOOKING_URL= # Point-of-sale system (Square / Toast / Clover / Lightspeed / Vagaro / # Booker / GlossGenius / SalonBiz / none / other) POS_SYSTEM= # CRM (if any — Mindbody / Vagaro / GlossGenius / Salesforce-Lite / HubSpot # / nothing-yet) CRM_SYSTEM= # Email-marketing tool (Mailchimp / Klaviyo / Constant Contact / Square # Marketing / Mailerlite / none) EMAIL_MARKETING= # SMS-marketing tool (Textedly / SimpleTexting / Heymarket / built-into- # booking-platform / none) SMS_MARKETING= # ---------------------------------------------------------------------------- # B.7 — Local market context # Promote into: wiki/entities/markets/-.md # (fork from wiki/entities/markets/local-market-template.md) # ---------------------------------------------------------------------------- # Primary market city MARKET_CITY= MARKET_STATE= # Market type (urban core / dense suburb / suburb / exurb / small-town / # rural) MARKET_TYPE= # Approximate market population (the city, not the metro) MARKET_POPULATION= # County (used for some county-level citation directories) MARKET_COUNTY= # Adjacent municipalities relevant for service-area expansion # (comma-separated — these are candidate location-page targets) MARKET_ADJACENT_CITIES= # Nearest major metro / DMA (for regional-citation context) MARKET_NEAREST_METRO= # Local Chamber of Commerce URL (high-trust citation source) MARKET_CHAMBER_URL= # Local newspaper / community blog URL (potential PR / mention source) MARKET_LOCAL_NEWS_URL= # ---------------------------------------------------------------------------- # B.8 — Known competitors (for competitor-analysis baseline) # Promote into: wiki/concepts/competitor-analysis-local.md (per-competitor # capture rows) + create per-competitor entity stubs as needed # ---------------------------------------------------------------------------- # Top 3-5 competitors the operator already knows by name. The full list # (5-10 businesses) is derived from the SERP — see competitor-analysis-local. COMPETITOR_1_NAME= COMPETITOR_1_GBP_URL= COMPETITOR_1_WEBSITE= COMPETITOR_2_NAME= COMPETITOR_2_GBP_URL= COMPETITOR_2_WEBSITE= COMPETITOR_3_NAME= COMPETITOR_3_GBP_URL= COMPETITOR_3_WEBSITE= # COMPETITOR_4_*, COMPETITOR_5_* — copy the block above as needed. # ---------------------------------------------------------------------------- # B.9 — Operator goals + constraints (free-form, capture in wiki later) # Promote into: ROADMAP.md (Active workstreams section) # ---------------------------------------------------------------------------- # Top 3 goals for the next 90 days (e.g. "rank top-3 for `barbershop # [city]`", "double IG followers", "get 50 new Google reviews") GOAL_1= GOAL_2= GOAL_3= # Hard constraints (e.g. "no paid ads", "can't change the website CMS", # "no time for Reels production", "must keep current price points") CONSTRAINTS= # Budget tier for paid tools / services (under-$50/mo / $50-$200/mo / # $200-$500/mo / $500+/mo / depends-on-ROI) BUDGET_TIER= # ============================================================================ # End of intake template. # # When this file is fully filled in: # 1. Copy the API keys into your real `.env` # 2. Promote the business profile data into the relevant wiki pages # listed under each section header # 3. Run `python3 scripts/wiki_lint.py` to confirm the wiki is healthy # 4. Start the first ingest cycle — see CLAUDE.md "Ingest" operation # ============================================================================