# Local Seo > Audita un Google Business Profile, lo compara con competidores locales y mapea la visibilidad en Google Maps alrededor de una ubicación para decidir qué arreglar primero. Fuente: https://skillsagentes.com/skills/every-app/open-seo/local-seo Markdown: https://skillsagentes.com/skills/every-app/open-seo/local-seo.md Repositorio: https://github.com/every-app/open-seo Autor: every-app Licencia: MIT Actualizado: hace 13 días Coste de contexto: 27 tok instalada, 1.7k tok al activarse, 1.7k tok con todos los archivos del bundle Bundle: 1 archivo, 7 KB Permisos que pide: ninguno declarado ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add every-app/open-seo --skill local-seo --agent claude-code # Cursor npx -y skills add every-app/open-seo --skill local-seo --agent cursor # Codex npx -y skills add every-app/open-seo --skill local-seo --agent codex # Gemini CLI npx -y skills add every-app/open-seo --skill local-seo --agent gemini # Windsurf npx -y skills add every-app/open-seo --skill local-seo --agent windsurf # Cline npx -y skills add every-app/open-seo --skill local-seo --agent cline ``` ## Qué hace - Averigua por qué un negocio aparece o no en Google Maps y en el local pack cerca de sus clientes, y qué arreglar primero. - Localiza el negocio con `search_local_businesses`, saca competidores cercanos con `get_local_serp_results` y compara categoría, reseñas, horario y estado de reclamación. - Usa `get_local_rank_grid` (3x3, o 5x5 solo si el área es amplia) para separar "rankea solo en el local" de "rankea en toda el área de servicio". - Prioriza: los problemas de categoría y de reclamación pesan más que la cadencia de publicaciones. - Para cadenas construye siempre la tabla resumen de todas las sedes y hace deep-dive de 5 o menos, preguntando al usuario cuáles si son más. ## Cuándo usarla - El ranking depende de una ubicación física o de un área de servicio, y se quiere auditar un Google Business Profile frente a competidores locales y mapear la visibilidad en Maps. ## Cuándo no - Trabajo orgánico nacional: usa competitor-analysis o keyword-research. ## Qué la activa - "¿Por qué no salgo en Maps para "fontanero de urgencia" en mi barrio?" - "Audita mi ficha de Google frente a los dos competidores mejor situados" - "Haz una rejilla de rankings alrededor de mi tienda" ## Antes de instalar - Necesita OpenSEO MCP y un `projectId`; la rejilla de rankings gasta un crédito por punto, así que hay que avisar del coste y confirmar la coordenada de la tienda antes. ## Archivos - SKILL.md — 7 KB ## SKILL.md Reproducido tal cual desde every-app/open-seo bajo MIT. Esta sección es el documento original y está en inglés. # OpenSEO Local SEO ## Goal Work out why a business does or does not show up in Google Maps and the local pack near its customers, and what to fix first. Use this when rankings depend on a physical location or service area. For national organic work, use `competitor-analysis` or `keyword-research`. ## Required inputs - `projectId` - The business: name, or a `cid`/`placeId` (most reliable) - Its coordinate (latitude/longitude) — derive it from a `search_local_businesses` / `get_local_serp_results` row; only ask the user when derivation is ambiguous - One to three keywords customers actually search (e.g. "emergency plumber", not the brand name) ## Project context The project-context tools are free and shared with the app and other agents. 1. Call `get_project_context` first and ground the work in it — what the business does and where it operates decides which keywords and radius matter. 2. This skill needs `business_overview`. If it is empty, run a minimal inline setup: infer what the business does and its location from the site and confirm it with the user in one question, write it back with `update_project_context`, then continue. Never front-load the full interview; suggest `seo-project-setup` at the end for the rest. 3. Before spending credits, check the research log. If the same research ran within the last 30 days, reuse that result and say so instead of re-buying it. 4. On finish, write back what is durable with `update_project_context` — local competitors that have a website via `addCompetitors` (competitor rows are keyed by domain, so skip listings without one), a corrected `business_overview` — and append a research log entry: `{ appendResearchLog: { summary: "Local SEO: near . Verdict: " } }`. ## OpenSEO MCP tools - `search_local_businesses`: nearby listings, filterable by `minRating`, `minReviews`, and `isClaimed` — use `isClaimed: false` to find unclaimed listings when prospecting. One call with the brand name as `query` and a wide radius returns category, rating, review count, claimed status, coordinates, and `cid` for every location of a chain — usually enough that per-location `get_business_profile` calls are unnecessary. - `get_local_serp_results`: the Maps/Local Finder result set near a coordinate. The rows carry `cid` and `place_id` — collect them once and reuse them everywhere below. - `get_business_profile`: the full profile for one business (hours, rating breakdown) when the `search_local_businesses` row isn't enough. - `get_business_reviews`: reviews with ratings, text, and whether the owner replied. Queued: a `processing` response returns a `taskId` — call again with it after 30-60 seconds, at no extra cost. - `get_local_rank_grid`: rank at every point of a grid around a coordinate, with each point's result count and #1 business. 3x3 is nine searches; only go to 5x5 when the service area is genuinely wide. - `get_google_business_questions`: Q&A on the profile (accepts `cid`/`placeId`). - `get_business_updates`: posts published on the profile, with dates. - `list_business_categories`: valid category slugs for `search_local_businesses`. ## Workflow 1. Find the business. Given only a name or website, `search_local_businesses` (name as `query`, wide radius) locates the listing and yields its `cid` and coordinate. If it returns several locations, the business is a chain — see multi-location below. 2. Run `get_local_serp_results` for the main keyword near the business coordinate. Record the top 3-5 competitors' `cid`/`place_id` and the user's own row. 3. Compare the user's listing against the top two competitors: primary category, additional categories, review count, hours completeness, photo count, claimed status. `search_local_businesses` rows usually carry all of this; use `get_business_profile` for what they lack. 4. Sanity-check each listing's website link (`url`/`contact_url` in the rows): it should deep-link to that location's page on the project domain, not a homepage or a stale domain. For broader on-page work, hand off to `run_site_audit`. 5. Call `get_business_reviews` for the user and the strongest competitor. Look at review volume, recency, average rating, and how many reviews got an owner reply. 6. Run `get_local_rank_grid` for the main keyword. Use the grid to separate "ranks at the storefront only" from "ranks across the service area", and each point's `topResult` to name who wins where the target doesn't. 7. Add `get_google_business_questions` and `get_business_updates` when the profile basics are already competitive and the gap is engagement rather than setup. 8. Turn the evidence into a prioritized list. Category and claim problems outrank posting cadence every time. ### Multi-location businesses Always build the profile snapshot table for the whole chain — one `search_local_businesses` call covers it. The per-location deep-dives (reviews, grid, posts, Q&A) are where cost scales: - 5 locations or fewer: deep-dive them all. - More than 5: present the snapshot table, then ask the user (AskUserQuestion) which 1-3 locations to deep-dive. Pick sensible defaults to recommend — e.g. the weakest profile in the densest market. ## Output format Start with: - Profile snapshot (category, rating, reviews, claimed) — one row per location for chains - Where visibility drops off, per the grid - The one fix to do this week Then include: | Signal | This business | Best competitor | Gap | Action | | ------ | ------------- | --------------- | --- | ------ | Cover: categories, reviews (count, recency, owner replies), hours and profile completeness, listing website links, Maps coverage from the grid, Q&A and posting hygiene. ## Guardrails - Do not run a 5x5 grid, or grids for several keywords, without telling the user the cost first — every point is a paid SERP call. - Match businesses by `cid` or `place_id` when you have one. Name matching collides with chains and similarly named businesses. - A missing rank at a grid point means the business wasn't among the results returned there. Read it with that point's `resultsCount`: a full result set means outranked; a near-empty one means a sparse SERP, not proof of invisibility. - Do not infer local-pack strength from national organic metrics. - Never recommend review gating, fake reviews, or keyword-stuffed business names. - A grid centered on the wrong place is worse than no grid — confirm the coordinate matches the storefront before spending grid credits. ## Dónde encaja - Categoría: [SEO y GEO](https://skillsagentes.com/categorias/seo-geo.md) — Keywords, auditorías on-page, datos estructurados y visibilidad en respuestas de IA. - Creador: [every-app](https://skillsagentes.com/creators/every-app.md) — 19 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Seo Coach](https://skillsagentes.com/skills/every-app/open-seo/seo-coach.md): Entra en un modo de coach de OpenSEO cercano que explica los flujos, recomienda los siguientes pasos y ayuda a usar bien agentes, búsqueda web, scraping y datos MCP. - [Seo Audit](https://skillsagentes.com/skills/every-app/open-seo/seo-audit.md): Audita un sitio y entrega un informe SEO de una página, en lenguaje llano, que cualquiera puede accionar, centrado en una única acción para esta semana. - [Create Repo Skill](https://skillsagentes.com/skills/every-app/open-seo/create-repo-skill.md): Crea o actualiza una skill en este repositorio de la forma correcta: hogar canónico en `.agents/skills`, marca interna o pública, symlinks en `.claude/skills` y registro en las docs públicas para las skills de producto. - [Seo Project Setup](https://skillsagentes.com/skills/every-app/open-seo/seo-project-setup.md): Rellena el contexto compartido de OpenSEO de un proyecto (alcance del sitio, objetivos, posicionamiento, competidores, páginas clave y preferencias), más comprobaciones de MCP y entrada de Search Console. - [Keyword Research](https://skillsagentes.com/skills/every-app/open-seo/keyword-research.md): Descubre oportunidades de palabras clave, evalúa métricas y SERPs y guarda o etiqueta los términos prometedores usando los datos MCP de OpenSEO. ## Skills relacionadas - [Keyword Research](https://skillsagentes.com/skills/every-app/open-seo/keyword-research.md): Descubre oportunidades de palabras clave, evalúa métricas y SERPs y guarda o etiqueta los términos prometedores usando los datos MCP de OpenSEO. - [Seo Project Setup](https://skillsagentes.com/skills/every-app/open-seo/seo-project-setup.md): Rellena el contexto compartido de OpenSEO de un proyecto (alcance del sitio, objetivos, posicionamiento, competidores, páginas clave y preferencias), más comprobaciones de MCP y entrada de Search Console. - [Seo Coach](https://skillsagentes.com/skills/every-app/open-seo/seo-coach.md): Entra en un modo de coach de OpenSEO cercano que explica los flujos, recomienda los siguientes pasos y ayuda a usar bien agentes, búsqueda web, scraping y datos MCP. - [Keyword Clustering](https://skillsagentes.com/skills/every-app/open-seo/keyword-clustering.md): Agrupa palabras clave por intención y las mapea a páginas existentes o propuestas, decidiendo qué página debe apuntar a cada clúster e identificando riesgo de canibalización. - [Competitor Analysis](https://skillsagentes.com/skills/every-app/open-seo/competitor-analysis.md): Analiza la huella orgánica de un competidor: palabras clave que rankea, temas de contenido, perfil de backlinks y huecos, para decidir qué aprender, qué evitar y a qué superar. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)