|
| 1 | +<!-- no-registry: discoverability/marketing strategy research; action items are repo/ops tasks, not code-scope items --> |
| 2 | +# Research: SEO, Discoverability & Becoming the Best Govee × Home Assistant Integration |
| 3 | + |
| 4 | +_Date: 2026-06-04 · Repo: `lasswellt/govee-homeassistant` · 57★ · HACS custom · domain `govee` · quality_scale silver_ |
| 5 | + |
| 6 | +## Summary |
| 7 | + |
| 8 | +The single biggest lever is **HACS default-store inclusion** — most users never leave the HACS in-app search, and the repo is currently invisible there. The one hard blocker is a missing `custom_components/govee/brand/icon.png`; CI (HACS Action + Hassfest), releases, `hacs.json`, and `manifest.json` already satisfy every other default-store requirement. Discoverability (Google + community) is a secondary, parallel track: add ~9 more GitHub topics, submit to `frenck/awesome-home-assistant`, and post in the 228K-view legacy `LaggAt` forum thread as the maintained successor. Being "the best option" technically is largely already true for cloud multi-device control (AWS IoT MQTT push, 2FA, capability-based, broadest device-type coverage) — but the field leader `wez/govee2mqtt` (1,400★) wins on **LAN/offline control**, which this repo lacks. Closing the LAN gap + winning discoverability is the path to #1. |
| 9 | + |
| 10 | +## Research Questions |
| 11 | + |
| 12 | +1. **What makes this rank on Google for "govee home assistant"?** Repo name (already optimal), About description (already leads with "Govee Integration for Home Assistant"), topics (underfilled — 6 of 20), README first-160-chars + question-format headings, star count (CTR signal). GitHub's domain authority (~DA 95) does the heavy lifting; the repo page README is the indexed body copy. |
| 13 | +2. **How do users actually discover HA integrations?** HACS in-app search (largest, default-store only) > Google (github.com + `community.home-assistant.io` threads) > Reddit r/homeassistant > YouTube > `awesome-ha.com`. The repo is absent from the #1 channel (not in default store). |
| 14 | +3. **What backlinks matter?** Ranked: HACS default store (hacs.xyz) → `awesome-home-assistant` (DR~60, `awesome-ha.com`) → HA Community forum thread (DA~75) → Reddit/YouTube (nofollow but traffic+stars). |
| 15 | +4. **Does a docs site / custom domain help?** Not near-term. README-on-github already inherits GitHub's DA. GitHub Pages subdomain is weaker unless attached to a custom domain (3-6 mo to mature). Defer until after default-store + backlinks. |
| 16 | +5. **Who are the competitors and where does this lose?** `wez/govee2mqtt` (1,400★, LAN-first, community #1), `disforw/goveelife` (185★, cloud v2, direct competitor, 3× the stars), `LaggAt/hacs-govee` (353★, abandoned, still the HACS search result for "govee"), core `govee_light_local` / `govee_ble` (built-in, LAN/BLE, lights/sensors only). This repo loses on LAN control, star count, and community visibility — not on technical merit for cloud. |
| 17 | + |
| 18 | +## Findings |
| 19 | + |
| 20 | +### F1 — HACS default store is the highest-leverage action (and nearly unblocked) |
| 21 | +Requirements per https://www.hacs.xyz/docs/publish/include/ and `/integration/`: |
| 22 | +- [x] Public repo w/ description + topics + README |
| 23 | +- [x] `hacs.json` with `name` (`render_readme: true` present) |
| 24 | +- [x] `manifest.json` with `domain`, `documentation`, `issue_tracker`, `codeowners`, `name`, `version` — all present |
| 25 | +- [x] ≥1 GitHub Release — `v2026.6.3` latest |
| 26 | +- [x] HACS Action CI — present in `.github/workflows/hacs-hass.yaml` |
| 27 | +- [x] Hassfest CI — present in same workflow |
| 28 | +- [ ] **`brand/icon.png` in `custom_components/govee/` — MISSING (the one blocker)** |
| 29 | +- Submission: PR to https://github.com/hacs/default adding repo URL alphabetically to `./integration`, from a personal fork branch, by repo owner. |
| 30 | +- Timeline: **months** (volunteer backlog: https://github.com/hacs/default/pulls). |
| 31 | +- Status today: neither `LaggAt/hacs-govee` nor this repo is in the default store. |
| 32 | + |
| 33 | +### F2 — Brand image: ship locally, no brands-repo PR needed (CONTRADICTION resolved) |
| 34 | +Two agents disagreed. Resolution: as of **HA 2026.3**, custom integrations ship brand images **locally** — no PR to `home-assistant/brands` required (source: https://developers.home-assistant.io/blog/2026/02/24/brands-proxy-api/). Place `icon.png` (+ optional `logo.png`, `dark_*`, `@2x` variants) in `custom_components/govee/brand/`. Local images take priority over the brands CDN. The older "submit to home-assistant/brands first" guidance applies only to HA **core** inclusion (`core_integrations/govee/`). |
| 35 | + |
| 36 | +### F3 — On-page SEO: already strong, three cheap wins remain |
| 37 | +- Repo name `govee-homeassistant` — optimal, slug-matches query. |
| 38 | +- About description (97 chars) already leads with "Govee Integration for Home Assistant" — **already optimal**, no change needed (web-seo agent's flagged gap is a false positive). |
| 39 | +- Topics: only 6 set (`govee, hacs, home-assistant, home-automation, led-lights, smart-home`). Add up to ~14 more: `govee-api, home-assistant-component, hacs-integration, custom-component, smart-lights, iot, cloud-api, mqtt, python, rgbic, led-control`. Topic pages (https://github.com/topics/govee) rank on Google and sort by stars. |
| 40 | +- README: question-format H2s match search intent better than flat nouns — `## How to install Govee in Home Assistant`, `## HACS installation`, `## Supported Govee devices`. First 160 chars feed the Google snippet + AI Overview. |
| 41 | + |
| 42 | +### F4 — Backlinks: 2 quick PRs + 1 forum post |
| 43 | +- `frenck/awesome-home-assistant` — repo qualifies NOW (≥6 mo old, OSI license, README mentions Home Assistant, 57★ > 10 soft threshold). PR to Custom Integrations section. Contributing: https://github.com/frenck/awesome-home-assistant/blob/main/.github/CONTRIBUTING.md |
| 44 | +- Legacy forum thread https://community.home-assistant.io/t/govee-integration/228516 (228K views) — post as the maintained successor to the abandoned `LaggAt` integration. No queue, highest short-term ROI for human discovery. |
| 45 | +- Optionally start a dedicated thread in https://community.home-assistant.io/c/custom-integrations and link it from the README. |
| 46 | + |
| 47 | +### F5 — Competitive position: best cloud option, loses on LAN |
| 48 | +- **Wins vs. field:** AWS IoT MQTT push (real-time, not polling — beats `goveelife` and `LaggAt`), 2FA flow, capability-based (no SKU hardcoding), broadest device-type coverage (lights/plugs/fans/humidifiers/heaters/thermometers/leak sensors), RGBIC segments, no extra infra (unlike `govee2mqtt`'s MQTT broker), clean architecture, active maintenance. |
| 49 | +- **Loses on:** LAN/offline control (the #1 community-valued trait — `govee2mqtt` and core `govee_light_local` have it), star count (57 vs 1,400), zero community-recommendation presence, not built into core (core integrations need no HACS install). |
| 50 | +- **Nuance:** Many Govee SKUs (humidifiers, fans, heaters, sensors) have **no LAN API** at all → cloud-only is the only option for them, narrowing the LAN gap for multi-device-type users. LAN matters mainly for the lights subset (~200 models, UDP 4001-4003). |
| 51 | + |
| 52 | +### F6 — Dissent / contradictory evidence |
| 53 | +- Brand-image requirement (F2): web-seo agent said brands-repo PR required; hacs-ecosystem agent said local `brand/` dir since HA 2026.3. Resolved in favor of the latter (dated, cited source). |
| 54 | +- `goveelife` default-store status: web-seo implied it's "~HACS default"; hacs-ecosystem confirmed neither `LaggAt` nor this repo is in default and did not verify `goveelife`. Treat `goveelife`'s default-store status as **unconfirmed**. |
| 55 | +- `govee2mqtt` star count: web-seo cited ~224★ (likely confused with `govee-lan-hass`); competitors agent cited ~1,400★ for `govee2mqtt`. Use **1,400** (the dedicated competitor agent is authoritative here). |
| 56 | + |
| 57 | +## Compatibility Analysis |
| 58 | + |
| 59 | +All recommendations are repo-config / ops actions — no code-architecture impact except the optional LAN feature. |
| 60 | +- **HACS default + brand:** Adding `custom_components/govee/brand/icon.png` is additive; HACS spec + HA 2026.3 brand-proxy both support it. No manifest change needed (already has all 6 required keys). |
| 61 | +- **Topics / description / README:** Pure metadata + docs; zero code risk. |
| 62 | +- **LAN support (strategic, larger):** Would integrate at the API-layer (new `api/lan.py` UDP client alongside `api/client.py`/`api/mqtt.py`), surfaced through the existing coordinator transport-selection logic. Govee LAN API: UDP multicast `239.255.255.250:4001`, device listens `4003`, status `4002`. Fits the existing multi-transport pattern (cloud + MQTT already coexist). Scoped to ~200 light models; cloud remains fallback for non-LAN SKUs. This is a roadmap-sized epic, not a quick win. |
| 63 | + |
| 64 | +## Recommendation |
| 65 | + |
| 66 | +Run two parallel tracks. |
| 67 | + |
| 68 | +**Track A — Discoverability (do this week, hours of effort):** |
| 69 | +| # | Action | Effort | Impact | |
| 70 | +|---|---|---|---| |
| 71 | +| A1 | Add `custom_components/govee/brand/icon.png` (+ `logo.png`) | 30 min | Unblocks A2 | |
| 72 | +| A2 | Submit PR to `hacs/default` `./integration` | 30 min | **Highest** — in-app discovery for ~1M+ HACS users | |
| 73 | +| A3 | Expand topics 6 → ~15 | 5 min | GitHub search + topics-page Google ranking | |
| 74 | +| A4 | PR to `frenck/awesome-home-assistant` | 20 min | High-DR backlink + curated traffic | |
| 75 | +| A5 | Post in `LaggAt` forum thread (228K views) as maintained successor | 30 min | Human discovery, no queue | |
| 76 | +| A6 | README: question-format H2s + tighten first 160 chars | 30 min | Google snippet / AI Overview | |
| 77 | + |
| 78 | +**Track B — Be the best option (roadmap):** |
| 79 | +| # | Action | Effort | Impact | |
| 80 | +|---|---|---|---| |
| 81 | +| B1 | Optional LAN API transport (lights) | Epic | Neutralizes `govee2mqtt`'s main edge | |
| 82 | +| B2 | Pursue HA core inclusion (push quality_scale → gold) | Large | Built-in = zero HACS friction, ranks above all | |
| 83 | +| B3 | Market device-breadth (fans/heaters/humidifiers/leak) — competitors don't surface this | Low | Differentiates from `goveelife`/`govee_light_local` | |
| 84 | +| B4 | One YouTube setup guide + DEV.to article | Hours | Long-tail backlinks, non-dev reach | |
| 85 | + |
| 86 | +Do not build a docs site / custom domain yet (defer until A1-A6 land). |
| 87 | + |
| 88 | +## Implementation Sketch |
| 89 | + |
| 90 | +### A1 — brand image |
| 91 | +``` |
| 92 | +custom_components/govee/brand/ |
| 93 | + icon.png # 256x256 or 512x512, square, transparent |
| 94 | + icon@2x.png # optional hi-dpi |
| 95 | + logo.png # optional, horizontal |
| 96 | +``` |
| 97 | +Source the Govee logo/icon (respect trademark — use for identification). Local images auto-prioritized over brands CDN per HA 2026.3. |
| 98 | + |
| 99 | +### A2 — HACS default PR |
| 100 | +```bash |
| 101 | +# fork hacs/default, then on a new branch: |
| 102 | +# edit ./integration — add alphabetically: |
| 103 | +# lasswellt/govee-homeassistant |
| 104 | +gh pr create --repo hacs/default --title "Add lasswellt/govee-homeassistant" \ |
| 105 | + --body "Govee Cloud integration; HACS Action + Hassfest passing; release v2026.6.3" |
| 106 | +``` |
| 107 | +Pre-flight: confirm latest `hacs-hass.yaml` run is green on `master`. |
| 108 | + |
| 109 | +### A3 — topics |
| 110 | +```bash |
| 111 | +gh repo edit lasswellt/govee-homeassistant \ |
| 112 | + --add-topic govee-api --add-topic hacs-integration \ |
| 113 | + --add-topic home-assistant-component --add-topic custom-component \ |
| 114 | + --add-topic smart-lights --add-topic iot --add-topic cloud-api \ |
| 115 | + --add-topic mqtt --add-topic python --add-topic rgbic --add-topic led-control |
| 116 | +``` |
| 117 | + |
| 118 | +### A6 — README headings (`README.md`) |
| 119 | +Rename for search intent: `## How to install Govee in Home Assistant`, `## HACS installation`, `## Supported Govee devices`. Keep the existing rich content beneath. |
| 120 | + |
| 121 | +## Risks |
| 122 | + |
| 123 | +- **HACS default review is slow (months) and can reject "override of a core integration."** Today there is no `govee` (cloud) domain in HA core, so this is safe. Risk materializes only if HA later merges a cloud `govee` to core — at which point this repo would be barred from the default store and could remain only as a manual custom repo. Mitigation: pursue HA-core inclusion (B2) proactively so this repo *becomes* that core integration rather than being displaced by it. |
| 124 | +- **Domain shadowing with legacy `LaggAt`.** Both use domain `govee`; if a user installs this after `LaggAt`, last-installed wins and `custom_components` shadows core. Mitigation: README must instruct users to fully remove `LaggAt/hacs-govee` before/while migrating. Install-count analytics aggregate correctly by domain. |
| 125 | +- **AWS IoT MQTT is undocumented/unsupported by Govee** (same risk `govee2mqtt` discloses) — Govee can break push silently. The existing polling fallback contains the blast radius; LAN support (B1) would add a second non-cloud resilience path. |
| 126 | +- **Trademark.** Using the Govee name/logo for an unofficial integration is identification/nominative use; keep "unofficial / not affiliated with Govee" language in the README to avoid takedown risk. |
| 127 | +- **Star count is a slow-moving signal.** Discoverability actions raise traffic, but topic-page position and GitHub-search rank are stars-weighted, so ranking improves with a lag after installs grow. Set expectations: weeks-to-months, not immediate. |
| 128 | + |
| 129 | +## Open Questions |
| 130 | + |
| 131 | +- Is `disforw/goveelife` in the HACS default store? Unconfirmed — affects how contested the "default-store Govee cloud integration" slot is. Verify before/after submitting A2. |
| 132 | +- Which exact Govee SKUs in this repo's supported set expose the LAN API? Determines B1's real device coverage and whether LAN is worth the epic. |
| 133 | +- Would the HA core team accept a cloud `govee` domain given `govee_ble` + `govee_light_local` already exist? Worth an early, low-cost architecture-discussion issue on the HA forum before investing in B2. |
| 134 | + |
| 135 | +## References |
| 136 | + |
| 137 | +- HACS publish/include: https://www.hacs.xyz/docs/publish/include/ |
| 138 | +- HACS publish/integration: https://www.hacs.xyz/docs/publish/integration/ |
| 139 | +- HACS default repo: https://github.com/hacs/default |
| 140 | +- HA brands-proxy API (local brand images, 2026.3): https://developers.home-assistant.io/blog/2026/02/24/brands-proxy-api/ |
| 141 | +- HA integration quality scale: https://developers.home-assistant.io/docs/core/integration-quality-scale/ |
| 142 | +- awesome-home-assistant: https://github.com/frenck/awesome-home-assistant |
| 143 | +- Legacy Govee forum thread (228K views): https://community.home-assistant.io/t/govee-integration/228516 |
| 144 | +- HA custom-integrations forum category: https://community.home-assistant.io/c/custom-integrations |
| 145 | +- Competitor — wez/govee2mqtt (1,400★, LAN-first): https://github.com/wez/govee2mqtt |
| 146 | +- Competitor — disforw/goveelife (185★, cloud v2): https://github.com/disforw/goveelife |
| 147 | +- Competitor — LaggAt/hacs-govee (353★, abandoned): https://github.com/LaggAt/hacs-govee |
| 148 | +- Core — govee_light_local: https://www.home-assistant.io/integrations/govee_light_local/ |
| 149 | +- Core — govee_ble: https://www.home-assistant.io/integrations/govee_ble/ |
| 150 | +- GitHub topics (govee): https://github.com/topics/govee |
| 151 | +- GitHub SEO: https://www.markepear.dev/blog/github-search-engine-optimization |
0 commit comments