Туры и онбординг в приложении, сделанном с ИИ
Собрали приложение в Lovable, Cursor или Claude Code, и теперь новым пользователям нужно помочь разобраться? Отправьте один промпт, проверьте, что изменился один файл, опубликуйте — а туры, чеклисты и окна апгрейда делайте в Clew, а не новыми промптами.
- Время
- ● 5 минут
- Кто делает
- Вы и ваш ИИ-ассистент
- Шагов
- 6
Пошагово
- Шаг 01
Скопируйте код из Clew
Зарегистрируйтесь или войдите в Clew и откройте Админка → Обзор. В карточке «Виджет пока не подаёт сигналов.» — строка с ключом сайта; нажмите на неё, чтобы скопировать. Ключ понадобится на шаге 3.

Шаг 1 · схема интерфейса - Шаг 02
Откройте проект в режиме, который правит файлы
- Claude Code: запустите
claudeв папке проекта. - Cursor: чат в режиме Agent.
- Lovable, Bolt.new, v0: чат проекта.
- Replit: Agent или Assistant.
В GigaCode и SourceCraft Code Assistant промпт тоже сработает, но если ассистент только предложит правку, примените её в редакторе сами.

Шаг 2 · схема интерфейса - Claude Code: запустите
- Шаг 03
Вставьте промпт со своим ключом
Скопируйте промпт, замените
ВСТАВЬТЕ_КЛЮЧ_САЙТАна свой ключ и отправьте. В промпте указан правильный файл для каждого стека, поэтому ассистент не разбросает тег по компонентам.Добавь в это приложение виджет онбординга Clew. Вставь этот тег без изменений, чтобы он загружался один раз на каждой странице, в том числе после переходов без перезагрузки: <script src="https://tryclew.ru/widget/ВСТАВЬТЕ_КЛЮЧ_САЙТА.js" async></script> Куда вставлять (выбери подходящее для этого проекта): - Обычный HTML, React + Vite, Vue + Vite: index.html, прямо перед </head> - Next.js App Router: app/layout.tsx, через next/script: <Script src="(тот же URL)" strategy="afterInteractive" /> внутри <body> - Next.js Pages Router: pages/_app.tsx, тот же компонент next/script - Nuxt 3: nuxt.config.ts, app.head.script: [{ src: "(тот же URL)", async: true }] - SvelteKit: src/app.html, прямо перед %sveltekit.head% - Astro: <head> общего layout - Иначе: корневой HTML-шаблон или layout, который рендерится на всех страницах Правила: - Используй URL ровно как указан. Не скачивай скрипт, не встраивай его в сборку и не ставь npm-пакеты. - Добавь его в одном месте, не внутри компонента, который перерисовывается. - Если в проекте задан Content-Security-Policy, разреши https://tryclew.ru в script-src и connect-src. - Больше ничего не меняй и покажи diff.
Шаг 3 · схема интерфейса - Шаг 04
Проверьте, что изменился один файл
Посмотрите diff, прежде чем принять. Ожидаемо: один файл и одна добавленная строка (или небольшой блок
<Script>в Next.js) с вашим ключом. Если ассистент поправил компоненты, поставил пакеты или скопировал скрипт в проект, попросите откатить это и оставить только тег.
Шаг 4 · схема интерфейса - Шаг 05
Опубликуйте или задеплойте
Тег работает только в опубликованном приложении. Нажмите Publish или Deploy в Lovable, Bolt.new, v0 или Replit. В Claude Code и Cursor сделайте коммит и пуш, если хостинг деплоит из git.

Шаг 5 · схема интерфейса - Шаг 06
Убедитесь, что всё работает
Откройте опубликованное приложение в обычном окне браузера и вернитесь в Clew, в раздел Обзор. В течение минуты карточка станет зелёной: «Виджет активен.»

Шаг 6 · схема интерфейса
Куда ставится тег в разных стеках
По этой таблице удобно проверить работу ассистента. Вместо заглушки — ваш ключ.
| Стек | Файл | Что добавляется |
|---|---|---|
| Обычный HTML | index.html (на каждой странице) | Строка перед </head> |
| React + Vite, Vue + Vite | index.html в корне проекта | Строка перед </head> |
| Next.js App Router | app/layout.tsx | <Script src="https://tryclew.ru/widget/ВСТАВЬТЕ_КЛЮЧ_САЙТА.js" strategy="afterInteractive" /> внутри <body> |
| Next.js Pages Router | pages/_app.tsx | Тот же компонент <Script> |
| Nuxt 3 | nuxt.config.ts | Элемент app.head.script с src и async: true |
| SvelteKit | src/app.html | Строка перед %sveltekit.head% |
| Astro | общий layout | Строка внутри <head> |
Что обычно генерируют инструменты
Проекты Lovable и Bolt.new чаще всего на React + Vite — тег идёт в index.html. v0 создаёт Next.js с App Router: app/layout.tsx. В Replit всё зависит от шаблона. Claude Code и Cursor читают ваш репозиторий и выбирают файл по списку из промпта.
Дальше: пусть ассистент собирает и туры
Тот же ассистент может продолжить после установки. Через MCP-сервер Clew (тариф Pro и выше) Claude Code, Cursor или Codex смотрят ваши туры, собирают новый по одной фразе, публикуют по вашей команде, читают статистику и чинят шаги, у которых сдвинулся элемент. Нужны личный токен из раздела Админка → Доступ для ИИ (MCP) и одна команда.
Что можно добавить через ИИ-ассистенты без программиста
После установки строки каждый формат ниже собирается в редакторе Clew. В этих инструкциях установка разобрана вместе с конкретным примером.
Если что-то не работает
Безопасно ли отправлять ключ сайта в чат ИИ?
Да. Ключ сайта — не пароль: он публичный и всё равно попадает в HTML страницы. С ним нельзя редактировать туры или читать ваши данные.
Ассистент поставил npm-пакет или скопировал скрипт
Попросите откатить. Clew загружается по своему адресу, чтобы исправления и новые возможности доходили до приложения без пересборки.
Тег не пропадёт после следующих правок ИИ?
Обычно нет: он в корневом файле. Если после крупной перегенерации в «Обзоре» пропал статус «Виджет активен», отправьте промпт ещё раз.
В админке всё ещё «Виджет пока не подаёт сигналов»
Откройте страницу сайта в обычном окне браузера и через минуту обновите админку. Если не помогло: проверьте, что изменения опубликованы, а не только сохранены; что вместо заглушки стоит ваш ключ; в инструментах разработчика браузера на вкладке Network найдите widget/…js — ответ должен быть 200. Ответ 404 означает ошибку в ключе.
На сайте настроен Content Security Policy
Нужны две директивы и больше ничего: script-src https://tryclew.ru и connect-src https://tryclew.ru. Виджет не использует eval, blob: и воркеры, а свои стили подключает через CSSOM, а не разметкой, — поэтому style-src 'unsafe-inline' не нужен в Chrome, Edge, Firefox 101+ и Safari 16.4+. Более старые браузеры получают запасной элемент <style>: если они вам важны, а в style-src нет 'unsafe-inline', там подсказки покажутся без оформления. Готовая строка: Content-Security-Policy: script-src 'self' https://tryclew.ru; connect-src 'self' https://tryclew.ru;
Можно ли зафиксировать версию виджета и указать <code>integrity=</code>?
Да. Строка из инструкций — /widget/ВСТАВЬТЕ_КЛЮЧ_САЙТА.js — «скользящая»: она всегда отдаёт текущий виджет, поэтому хэш Subresource Integrity к ней не приложить (байты меняются). Рядом каждая версия отдаётся ещё и по неизменяемому адресу с хэшем содержимого. Запросите https://tryclew.ru/api/v1/widget-version?site=ВАШ_КЛЮЧ — в ответе будут version, path и integrity; подставьте их в тег: <script src="https://tryclew.ru/widget/v/<версия>/ВАШ_КЛЮЧ.js" integrity="sha384-…" crossorigin="anonymous" async></script>. Закреплённый адрес не меняется, поэтому браузер откажется выполнить файл, если отличается хотя бы один байт. Версию вы обновляете тогда, когда сами решите, — тот же запрос можно делать из скрипта деплоя. Больше ничего не меняется: туры по-прежнему публикуются в редакторе Clew без правок сайта.
Не съест ли виджет блокировщик рекламы?
Нет. Нашего домена нет ни в одном из больших списков — EasyList, EasyPrivacy, AdGuard, uBlock Origin, — поэтому туры, подсказки и чеклисты видят и те посетители, у кого блокировщик включён. Тоньше со статистикой: EasyPrivacy блокирует любые сторонние запросы типа ping, поэтому виджет отправляет события обычным запросом — его эти списки пропускают. Чтобы выйти из-под любых пользовательских списков совсем, отдавайте виджет со своего домена: направьте https://ваш-сайт/clew/* на https://tryclew.ru/* в CDN или nginx и замените строку на <script src="/clew/widget/ВАШ_КЛЮЧ.js" async></script>. Виджет сам будет обращаться к API по тому же префиксу — всё станет first-party.
Работает ли в SPA (React, Vue, Next.js)?
Да. Подключите строку один раз — в корневом HTML или корневом шаблоне. Смену страниц без перезагрузки виджет отслеживает сам (History API и изменения hash), поэтому не добавляйте его на каждый маршрут. Повторная загрузка игнорируется, но это лишняя работа для браузера.
А что с баннером согласия на cookie?
Clew хранит собственную cookie и записи в localStorage, чтобы помнить, какие туры посетитель уже прошёл, и считать прохождения. В рекламные системы данные не передаются. Можно ли запускать виджет до согласия, решает ваша политика обработки данных; если баннер блокирует его до согласия, туры просто начнутся после него.
Стоит плагин кеширования или оптимизации
После установки очистите кеш, иначе посетители будут получать старые страницы без строки. Если плагин откладывает, объединяет или минифицирует JavaScript (WP Rocket, LiteSpeed Cache, композитный режим Битрикса), исключите tryclew.ru/widget из этих оптимизаций.
Сайт станет медленнее?
Нет. У строки есть атрибут async: браузер загружает виджет параллельно и не блокирует страницу. Зависимостей у виджета нет.
Может ли приложение само сообщить Clew, что шаг онбординга пройден?
Да, это одна строка. У пункта чеклиста может быть правило, которое отмечает его без клика посетителя: страница, на которую он зашёл, клик по элементу с указанным CSS-селектором или событие из вашего кода — Clew.complete('invited'), где invited — ключ, который вы вписали рядом с пунктом в редакторе. Вызывайте в момент, когда дело действительно сделано, например после ответа вашего API. Вызывать безопасно в любой момент: если чеклиста с таким ключом на странице нет, вернётся false. Старое имя TutorKit по-прежнему работает.
Другие способы установки
Google Tag Manager
Тег «Пользовательский HTML» на всех страницах, проверка в предварительном просмотре, публикация.
Открыть инструкцию →МетрикаЯндекс Тег Менеджер
Тег «Пользовательский HTML» с триггером на просмотр страницы — прямо в Метрике, без кода Google Tag Manager на сайте.
Открыть инструкцию →Без кодаТильда, Битрикс, WordPress
Где в Тильде, 1С-Битрикс, WordPress, Webflow и на обычном HTML-сайте поле для кода в head и что нажать.
Открыть инструкцию →