Sanity.io: синхронизация через вебхуки
Настройка Sanity.io для синхронизации контента с AACsearch. Использует встроенные вебхуки Sanity.
Sanity.io синхронизируется с AACsearch через вебхуки. Когда вы публикуете контент в Sanity, он автоматически попадает в поиск за несколько секунд.
Как это работает
- Вы публикуете документ в Sanity
- Sanity отправляет уведомление на AACsearch
- Документ добавляется в поиск (за 1–2 секунды)
Требования
- Аккаунт Sanity.io с проектом
- Определённые схемы документов (Schema)
- Аккаунт на AACsearch и созданный индекс
- Ключ интеграции для Sanity (
ss_connector_*)
Шаг 1: Получите ключ интеграции
В панели AACsearch:
- Перейдите в Поиск → Подключения
- Нажмите Новое подключение
- Выберите тип: Sanity.io
- Скопируйте ключ (начинается с
ss_connector_)
Также скопируйте ID организации из Настройки → API.
Шаг 2: Создайте вебхук в Sanity
- Откройте manage.sanity.io
- Откройте ваш проект
- Перейдите в Settings → Webhooks
- Нажмите Create Webhook
Шаг 3: Заполните параметры вебхука
На странице создания вебхука:
| Поле | Значение |
|---|---|
| Name | AACsearch Sync |
| URL | https://app.aacsearch.com/api/projects/YOUR_ORG_ID/sync/sanity |
| Dataset | Выберите ваш датасет (обычно production) |
Шаг 4: Добавьте аутентификацию
В разделе Custom HTTP headers добавьте:
| Header Name | Value |
|---|---|
Authorization | Bearer ss_connector_YOUR_KEY |
X-Project-ID | YOUR_ORG_ID |
Замените YOUR_KEY и YOUR_ORG_ID на ваши значения из AACsearch.
Шаг 5: Выберите события
В разделе Trigger on выберите события, которые должны синхронизировать документы:
Основные события
- ✓ Create — когда создан новый документ
- ✓ Update — когда обновлён документ
- ✓ Delete — когда удалён документ
Для большинства случаев этих трёх событий достаточно.
Шаг 6: Фильтруйте по типам документов (рекомендуется)
Если вы хотите синхронизировать только определённые типы (например, только "product" и "blogPost", но не "author"):
В разделе Filter by document type добавьте нужные типы.
Пример: если у вас схемы "product", "blogPost", "author", и вы хотите индексировать только товары и статьи:
- Выберите product
- Выберите blogPost
- Исключите author
Шаг 7: Сохраните вебхук
Нажмите Create. Sanity создаст вебхук и покажет его в списке.
Шаг 8: Проверьте синхронизацию
Способ 1: История вебхука
- В списке вебхуков нажимайте на ваш вебхук
- Откроется Invocations (история запросов)
- Вы должны увидеть успешные запросы (Status:
200)
Способ 2: Опубликуйте документ
- Откройте документ в Sanity
- Нажмите Publish (опубликовать)
- В панели AACsearch → Поиск → Синхронизация проверьте, что документ появился
Если появился — синхронизация работает!
Синхронизация контента
Какие поля передаются?
Sanity отправляет в поиск:
- Идентификатор — уникальный ID документа
- Название — из поля title/name
- Описание — из полей description/content
- Категория / Теги — если есть в схеме
- Изображение — URL из поля image/featured_image
- Дата — дата публикации или создания
- Ссылка — URL на страницу документа
Сопоставление полей
Если у вас есть пользовательские поля в схеме, они также синхронизируются. Sanity автоматически определяет типы полей.
Если нужно специальное сопоставление, напишите на support@aacsearch.com с примером вашей схемы.
Черновики и версионирование
Синхронизировать только опубликованные документы?
Используйте фильтр Filter by document type, исключив документы в статусе "draft".
Или настройте события вебхука только на Update (обновление опубликованных документов), исключив Create (создание черновиков).
Синхронизировать черновики?
Включите все события (Create, Update, Delete), и вебхук будет отправлять даже черновики.
Встраивание виджета поиска
После синхронизации встройте виджет на ваш фронтенд (Next.js, React, Vue и т.д.):
<div id="aac-search"></div>
<script
src="https://app.aacsearch.com/api/widget/widget.js"
data-base-url="https://app.aacsearch.com"
data-api-key="ss_search_***"
data-index-slug="products"
data-container="#aac-search">
</script>Или используйте NPM пакет:
npm install @aacsearch/reactimport { AacsearchWidget } from '@aacsearch/react';
export default function SearchPage() {
return (
<AacsearchWidget
baseUrl="https://app.aacsearch.com"
apiKey="ss_search_***"
indexSlug="products"
/>
);
}Часто задаваемые вопросы
Q: Вебхук создан, но документы не синхронизируются
A: Проверьте:
- История вебхука в Sanity (Settings → Webhooks → ваш вебхук → Invocations)
- ✅ 200 — вебхук работает
- ❌ 401/403 — проблема с заголовками авторизации
- ❌ 404 — неправильный URL
- В панели AACsearch → Поиск → Синхронизация видны попытки?
Q: Я опубликовал документ, но его нет в поиске
A: Проверьте:
- Событие Update включено в вебхуке?
- Тип документа не исключён фильтром?
- Подождите 1–2 минуты на индексирование
Q: Как синхронизировать только часть документов?
A: Используйте фильтр Filter by document type в вебхуке. Выберите только те типы, которые нужны.
Q: Документ удалён в Sanity, но всё ещё в поиске
A: Убедитесь, что событие Delete включено в вебхуке.
Q: Можно ли синхронизировать несколько датасетов (production, staging)?
A: Да, создайте отдельный вебхук для каждого датасета и укажите разные индексы AACsearch.
Помощь и поддержка
- Обзор коннекторов
- Документация по виджету
- Email: support@aacsearch.com
- Документация Sanity: https://www.sanity.io/docs/webhooks
Contentful: синхронизация через вебхуки
Настройка вебхуков Contentful для автоматической синхронизации контента с AACsearch. Не требует установки плагина.
Синхронизация Supabase
Синхронизируйте таблицы Supabase с поисковым движком AACsearch в реальном времени с помощью подписок Realtime или вебхуков базы данных.