К основному содержанию
скилл CX Codex

backfill-geo-data — скилл для Claude Code: что делает и как установить

Заполняет пропущенные город, регион и страну в контактах и компаниях HubSpot. Пригодится для распределения территорий и региональной отчётности.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add TomGranot/hubspot-admin-skills --skill backfill-geo-data -a claude-code
Открыть на GitHub

Что делает backfill-geo-data

Скилл координирует обогащение географических полей через встроенные инструменты HubSpot, перенос данных из привязанных компаний или вызов внешних провайдеров. Скрипты ищут записи без заполненных свойств country, state или city пачками по 100 штук, чтобы укладываться в лимиты API, и переносят значения из ip_country, ip_state и ip_city или карточки компании.

Перед запуском скриптов требуется настроить HUBSPOT_ACCESS_TOKEN в файле .env с правами на чтение и запись контактов и компаний, а также установить Python 3.10+ с утилитой uv. Ручные данные скрипт не перезаписывает: изменения вносятся строго в пустые поля, а перед правками формируется базовый CSV-экспорт для отката.

Какие задачи решает

  • найти контакты и компании с пустыми полями страны и города
  • скопировать геоданные из связанной компании в контакт через HubSpot API
  • перенести геолокацию из IP-полей форм в стандартные свойства CRM
  • подготовить откат изменений через фильтрацию по диапазону hs_lastmodifieddate

Примеры запросов агенту

  • Найди контакты без страны, у которых есть привязанная компания, и скопируй оттуда геоданные
  • Проверь пустые поля города и заполни их значениями из ip_city через батчи HubSpot API
  • Посчитай пропуски в свойствах региона и сформируй CSV с исходным состоянием записей

Как установить backfill-geo-data

1Через Skills CLI (Vercel)

npx skills add TomGranot/hubspot-admin-skills --skill backfill-geo-data -a claude-code

2Вручную: положить файлы

~/.claude/skills/backfill-geo-data/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/backfill-geo-data/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о backfill-geo-data

Как установить backfill-geo-data в Claude Code?

Выполните команду npx skills add TomGranot/hubspot-admin-skills --skill backfill-geo-data -a claude-code. Файл инструкции запишется в ~/.claude/skills/backfill-geo-data/SKILL.md.

Что делает этот скилл?

Он направляет процесс выявления и заполнения отсутствующих географических атрибутов в базе HubSpot. Логика опирается на пошаговый аудит, встроенные сценарии CRM и пакетные вызовы API.

Что нужно подготовить перед запуском обогащения?

Потребуется окружение Python 3.10+ с менеджером uv и токен HUBSPOT_ACCESS_TOKEN в .env с разрешениями на чтение и запись контактов. Также рекомендуется предварительно выполнить стандартизацию значений.

Исходный текст

SKILL.md · MIT
---
name: backfill-geo-data
description: "Enrich missing geographic data (country, state, city) on contacts and companies using HubSpot workflows, external data providers, or IP-based geolocation."
license: MIT
metadata:
  author: tomgranot
  version: "1.1"
  category: ongoing-maintenance
---

# Backfill Geographic Data

Fill in missing country, state, and city values on contacts and companies. Geographic data enables territory assignment, regional reporting, and compliance (GDPR, state privacy laws).

## Prerequisites

- A HubSpot service key (`HUBSPOT_ACCESS_TOKEN` in `.env`; an existing legacy private app token also works) with contact and company read/write scopes
- Python 3.10+ with [`uv`](https://github.com/astral-sh/uv)
- Standardized geo values already in place (run `/standardize-geo-values` first)

## Enrichment Methods

### Method 1: HubSpot Workflow Enrichment (Simplest)

Use HubSpot's built-in Operations Hub data quality tools or Breeze Intelligence (if available on your plan) to auto-fill geographic fields.

1. Create a workflow triggered by: country is unknown AND email is known
2. Use the "Enrich contact" action (Operations Hub Professional+) or Breeze Intelligence enrichment
3. If enrichment fills country/state, the workflow completes
4. If enrichment fails, branch to flag for manual review

### Method 2: Company Domain Lookup (API-based)

For contacts with a company domain but no geo data, look up the company's geographic information:

```python
import os, requests
from dotenv import load_dotenv

load_dotenv()
TOKEN = os.environ["HUBSPOT_ACCESS_TOKEN"]
BASE = "https://api.hubapi.com"
HEADERS = {"Authorization": f"Bearer {TOKEN}", "Content-Type": "application/json"}

# Find contacts missing country but with company association
resp = requests.post(f"{BASE}/crm/v3/objects/contacts/search", headers=HEADERS, json={
    "filterGroups": [{"filters": [
        {"propertyName": "country", "operator": "NOT_HAS_PROPERTY"},
        {"propertyName": "associatedcompanyid", "operator": "HAS_PROPERTY"},
    ]}],
    "properties": ["email", "associatedcompanyid"],
    "limit": 100,
})
resp.raise_for_status()
```

Copy country/state/city from the associated company to the contact (same pattern as `/enrich-company-name`).

### Method 3: External Data Provider

Use `/waterfall-enrich-contacts` — it provides pluggable provider adapters (FullEnrich by default; Apollo, Hunter, Dropcontact included, or bring your own), per-run cost caps, no-overwrite safety, and a CSV audit trail. Exhaust Methods 1-2 first: external lookups cost credits per contact, internal data is free.

## Step-by-Step Instructions

### Stage 1: Plan

1. Choose the enrichment method (see above) based on volume, plan tier, and budget — confirm with the user.
2. Confirm the no-overwrite rule: enrichment must only fill empty fields.

### Stage 2: Before — Assess the Gap

1. Count contacts missing country, state, and city.
2. Segment by source — which lead sources tend to have missing geo data?
3. Export a CSV baseline of the affected records before changing anything.

### Stage 3: Execute — Run Enrichment

1. Apply the chosen method (or combine methods for maximum coverage).
2. Process in batches of 100 to respect rate limits.
3. Validate enriched values against the standardized geo format from `/standardize-geo-values`.

### Stage 4: After — Verify

1. Re-count contacts missing geographic fields. Calculate improvement percentage.
2. Spot-check 20-30 enriched contacts for accuracy.
3. Set up the new-contact hygiene workflow to prevent future gaps.

## Rollback

- If enrichment data is inaccurate, filter contacts updated by the enrichment process (use `hs_lastmodifieddate` range) and clear the geo fields.
- Keep a backup export of the original data before running enrichment.

## Tips

- IP-based geolocation (from form submissions) is already captured by HubSpot in `ip_city`, `ip_state`, `ip_country`. Copy these to the standard fields if the standard fields are empty.
- Do not overwrite manually-entered geo data with enrichment data — always check "if empty" before writing.

© tomgranot · MIT · TomGranot/hubspot-admin-skills

Похожие скиллы

Все скиллы по теме «Данные и базы» →
xlsx официальный anthropics Работает с табличными файлами: создаёт, читает, правит и преобразует книги. Подходит, когда итогом должен стать файл Excel или другой табличный формат. 187 223установок google-agents-cli-observability официальный Google Помогает настроить трассировку и сбор данных о работе ИИ-агентов, включая агентов на ADK. Пригодится, когда нужно разбирать выполнение запросов или наблюдать за агентом после развёртывания. CX Codex +1 511 300установок caveman-evidence-review JuliusBrussee Скилл читает данные Caveman Cloud о расходах LLM, трассах и маршрутизации. Подходит для проверки того, куда уходит бюджет проекта. CX Codex +1 104 500установок migration JuliusBrussee Скилл задаёт правила безопасных миграций схем, данных и API с обязательным откатом. Пригодится при изменениях, где нельзя терять данные или ломать совместимость. CX Codex +1 103 900установок performance-optimization addyosmani Скилл для агентов ИИ-кодинга: сначала замеряет, потом чинит узкое место — от Core Web Vitals до N+1 запросов и индексов в базе. CX Codex +1 65 200установок supabase официальный supabase Скилл помогает настраивать базу данных, аутентификацию и RLS в Supabase без скрытых дыр в безопасности. CX Codex GP ChatGPT 8установок

Из того же набора37

cleanup-forms Находит и удаляет неиспользуемые, тестовые и устаревшие формы в HubSpot через Forms API. Помогает навести порядок в панели маркетинга и отчётах. CX Codex +1 ★ 78звёзд репо cleanup-deals Находит проблемные сделки HubSpot и передаёт их владельцам на проверку. Удаление тестовых сделок возможно только после отметки человека в CSV. CX Codex +1 ★ 78звёзд репо cleanup-dashboards Наводит порядок в дашбордах HubSpot: находит заброшенные, дубли и тестовые, помогает свести отчёты к нескольким рабочим экранам. CX Codex +1 ★ 78звёзд репо build-smart-lists Скилл создаёт базовые динамические списки в HubSpot через Lists API v3 и даёт шаблоны для ручной сегментации в интерфейсе. Пригодится для наведения порядка перед запуском рассылок и приоритизации лидов. CX Codex +1 ★ 78звёзд репо build-lead-scoring Скилл помогает настроить в HubSpot отдельные оценки соответствия компании и активности контакта. Нужен, чтобы приоритизировать лиды для продаж и маркетинга. CX Codex +1 ★ 78звёзд репо bounce-monitoring-workflow Скилл собирает в HubSpot три воркфлоу для контроля отскоков: подавляет контакты после нескольких bounce, шлёт алерты и помечает адреса на ручную проверку. CX Codex +1 ★ 78звёзд репо audit-api-usage Скилл находит интеграции и внутренний код, обращающиеся к HubSpot API, отмечает устаревшие версии и частные приложения, а затем собирает план миграции. CX Codex +1 ★ 78звёзд репо assign-unowned-contacts Проставляет владельца маркетинговым контактам HubSpot, у которых его нет. Пригодится, когда отчёты по владельцам не сходятся с реальной базой. CX Codex +1 ★ 78звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой