amocrm-api-control
Безопасная OAuth-авторизация amoCRM, чтение схемы аккаунта и сверка заявок по источнику, времени, статусу, ответственному и внешней ссылке.
- License 许可
- Apache-2.0
- 最近更新
- 2026-11-11
- Stars
- ★ 1.6k
- Forks
- 468
01 前言 Front Matter
- name
- amocrm-api-control
- description
- Безопасная OAuth-авторизация amoCRM, чтение схемы аккаунта и сверка заявок по источнику, времени, статусу, ответственному и внешней ссылке.
02 资源文件 6
- 参考文档agents/openai.yaml299 B
- 参考文档references/official-notes.md940 B
- 脚本scripts/amocrm_local_callback_server.py3.8 KB
- 脚本scripts/exchange_amocrm_token.py5.4 KB
- 脚本scripts/fetch_amocrm_schema.py6.6 KB
- 脚本tests/test_reconciliation.py5.2 KB
03 SKILL.md 正文
Управление amoCRM через программный интерфейс
Если amoCRM не подключена
amoCRM необязательна. Для сверки продаж достаточно любой CRM-выгрузки (CSV, Excel, JSON) с источником, временем события, статусом, ответственным и внешней ссылкой: к файлу применяются те же правила сверки. Интеграцию и OAuth создавайте только по явной просьбе пользователя о доступе по API.
Граница задачи
Навык предназначен для получения и обновления OAuth-токенов, чтения воронок, статусов и полей, а также сверки заявок. Любые изменения бизнес-данных требуют отдельного плана, точной области, подтверждения и чтения после записи.
Перед созданием интеграции
- Если для аккаунта уже есть закрытая интеграция, восстановить и использовать её, а не создавать вторую: лишняя интеграция повышает риск отказа в технической поддержке и разрастания учётных данных. Новая допустима только с записанной причиной, почему существующая непригодна, и подтверждением риска пользователем.
- Создание закрытой интеграции в нетехническом аккаунте может иметь последствия для технической поддержки; покажи владельцу актуальное предупреждение из интерфейса amoCRM.
redirect_uriдолжен точно совпадать с адресом интеграции. Местный приёмник слушает только127.0.0.1и проверяет точные путь иstate.- Доступ привязывается к ожидаемому аккаунту: запросами на чтение сверить вместе читаемое имя аккаунта, поддомен и идентификатор аккаунта. Одного названия мало: одинаковые названия, скопированные сеансы браузера и чужие закрытые интеграции тоже успешно авторизуются.
- Откат и отзыв описываются на уровне токена: отозвать выданный токен, заменить локальную учётную запись или убрать текущую авторизацию приложения. Отключение всей интеграции — отдельное действие высокого влияния: от неё могут зависеть другие токены и процессы.
Закрытые файлы
Все файлы интеграции, state, кода авторизации и токенов должны иметь права 0600, а их папки — 0700. Секрет, код и токен не передавай аргументом и не печатай.
Ожидаемая схема файла интеграции:
{
"subdomain": "ACCOUNT_SUBDOMAIN",
"client_id": "PUBLIC_INTEGRATION_ID",
"client_secret": "PRIVATE_INTEGRATION_SECRET",
"redirect_uri": "EXACT_REGISTERED_REDIRECT_URI"
}
Порядок OAuth
- Создай случайное состояние и сохрани его в закрытом файле.
- Запусти
scripts/amocrm_local_callback_server.pyс явными--state-fileи--output. - Открой адрес согласия, содержащий тот же
state. - Приёмник сохранит только код, а не полный адрес.
- Запусти
scripts/exchange_amocrm_token.pyс--integration-file,--authorization-code-fileи--token-file. Для обновления используй--refreshбез файла кода. - После успешного первого обмена удали одноразовый файл кода.
Чтение схемы и сверка
scripts/fetch_amocrm_schema.py проходит постраничную выдачу и сохраняет схему аккаунта в закрытой папке. Повтор той же страницы считается ошибкой.
Для сверки каждая строка обязана иметь поля:
source— источник;occurred_at— время события;status— статус;responsible— ответственный;external_link— внешняя ссылка, используемая как ключ сопоставления.
Результат разделяет совпадение, расхождение и строку, присутствующую только во втором источнике.
Сверка заявок: доказательства
При сверке внешних форм, выгрузок конструктора сайтов, меток UTM и CSV с amoCRM сначала сохраняются доказательства только на чтение:
- Снимок схемы и счётчиков: аккаунт, воронка, статусы, поля заявки и контакта, «Неразобранное».
- Точное окно времени, форма исходного файла, способ извлечения адреса и UTM, правило категорий.
- Различие контактов, сделок, неразобранных заявок, дублей и пропавших заявок: карточка контакта сама по себе не доказывает, что заявка попала в нужную воронку.
- Перед решением «новый или повторный клиент» — поиск дублей контактов по нормализованным телефону и почте и оценка всех связанных сделок, заметок и истории статусов.
Единица анализа для отчётов по менеджеру, первому менеджеру, новизне, источнику, выручке и статусу продажи — набор идентичности: дубли контактов, все связанные сделки, история смены статусов и ответственных, заметки, пометки удалённых и недоступных сделок.
Структурированные доказательства источника отделяются от подстрок и свободного текста. Название источника, фрагмент UTM или метка канала внутри комментария — кандидат, а не доказательство, пока не записаны поле, воронка, окно и порядок приоритета. Источники классифицируются явным порядком (UTM, referrer, поле источника, пометка интеграции, ручные заметки); записи без доказательства остаются unknown. В конце — контрольный подсчёт без фильтров по аккаунту или воронке: отбор, фильтр дублей и удалённых и граница дат не потеряли целевые заявки. Для перенесённой или переименованной воронки читаются и старая, и новая воронки за точный период.
Удалённые и недоступные сделки не превращаются в ноль: deleted_inaccessible, unknown_missing_amount, confirmed_zero, not_sale или out_of_scope. Агрегат выручки, повторности или менеджера, зависящий от неразрешённых удалённых сделок, остаётся заблокированным или помечается неразрешённым.
Пустые тела, пробелы пагинации, сбои авторизации и неожиданные ответы не в JSON записываются как отдельные состояния ответа. В сводках для пользователя — человекочитаемые названия воронок, статусов и источников; служебные номера — только для технического аудита.
Для анализа воронки или статусов учитывается история смены статусов, а не только текущее членство: сделки, вошедшие в воронку, покинувшие её или проигранные в окне, входят в аудит, даже если их уже не видно в воронке. Раздельно хранятся прямые свидетельства ответа клиента, внутренние заметки, текущее и историческое состояние потери, критерий суммы продажи и пустые причины; пустая причина не превращается в названную.
Массовые чтения и блокировки
Перед тысячами чтений по контактам или сделкам проверить, нет ли в официальном API массового или связывающего метода с пагинацией, и применять его после сверки с небольшой выборкой отдельных чтений. Долгие чтения устойчивы к обрыву: после каждой идемпотентной партии сохраняются последняя подтверждённая страница или курсор, контрольная сумма партии, путь результата и состояние ответа. Медленный живой запрос не повторяется вслепую, второй исполнитель на ту же страницу не запускается; после остановки работа продолжается с последней подтверждённой партии.
Ответы amoCRM — сигналы безопасности: 429 требует паузы и сохранения прогресса; первый 403 или блокировка аккаунта останавливает очередь исполнителей без повторов и без смены сетевой идентичности. Сохраняются последняя успешная единица, класс заблокированного метода, прогресс и одно безопасное чтение состояния аккаунта.
Корпус коммуникаций и идентичность события
До скачивания или расшифровки проверить поверхности источников: заметки, комментарии к задачам, метаданные звонков, записи, письма, мессенджеры и телефония — отдельные источники. Наличие ссылок и коротких заметок не доказывает покрытия чатов и записей: доказать скачиваемый источник, способ доступа, период и что отсутствует. Заранее оценить число звонков, длительность и объём диска; докачка с манифестами, контрольными суммами и прогрессом по источнику. Получение источника и локальная расшифровка — разные слои сбоев; после докачки производные журналы, таблицы, манифесты и кэши сверяются с итоговым исходом по каждому звонку.
Предполагаемому created_at не доверять, пока не доказано поведение фильтра на конкретном методе: сохранить проверенный серверный фильтр и локально исключить записи вне окна. Если пользователь сузил корпус, широкая выгрузка останавливается, а свои артефакты вне области убираются. Событие звонка, скачанный файл, задание расшифровки и связь со сделкой — разные идентичности: несколько событий могут ссылаться на один файл; контакт не определяет единственную сделку; при нескольких возможных сделках хранятся кандидаты и явная неоднозначность. Для постоянного сборщика снимок истории отделяется от изменяющегося потока: вместо фиксированных дат — явный контракт синхронизации (поле изменения, курсор, часовой пояс и точность, перекрытие); отсутствие записи на одной странице не доказывает её удаления.
Аудитории и ретаргетинг
Перед выбором аудитории по профессии проверить поля контакта и сделки в схеме аккаунта и записать, где хранится профессия и как разрешаются конфликты. Пустое поле не доказывает отсутствия профессиональной связи; профессия сделки не распространяется на всех связанных людей без доказательств. Назначение каждого телефонного поля сохраняется при нормализации и дедупликации; если частные номера исключены, нормализованный номер исключается по всей выгрузке. Подходящая аудитория не даёт права на её выгрузку в рекламную систему — это отдельное разрешение.
Для ретаргетинга источник истины — воронка, статус и идентификаторы сделки и контакта; передаются хешированные почты и телефоны партиями или используется встроенная синхронизация платформы. Для связки «воронка и статус → аудитория» сначала проверить встроенную интеграцию amoCRM с нужной площадкой. Для ВКонтакте поведение описано в справке amoCRM: контакт «Активен», пока сделка в заданном этапе, и становится «Неактивным», когда сделка уходит из этапа или пользователь скрывает рекламу; повторным входом в этап из «Неактивного» не возвращается. Для Яндекс Аудиторий и других площадок правила переходов проверяются по их собственной документации и на тестовой сделке, а не переносятся с ВКонтакте. Логика добавления и удаления описывается по каждому переходу статуса, с дедупликацией и повторным входом.
Отчёты по этапам и полям
Использовать уже подтверждённый API amoCRM; не требовать входа у поставщика форм, если API покрывает нужные доказательства. Сохранённые исходные журналы форм — для независимой проверки дублей и доставки; недоступное свежее покрытие форм помечается отдельно. Перед признанием отчёта готовым построитель выполняется целиком на сохранённой полной выборке: проверка синтаксиса не ловит конфликтов имён и несоответствий схемы. Служебные и трекинговые поля скрываются без учёта регистра и написания (referer и referrer); сырые адреса и параметры запросов остаются только в закрытых доказательствах.
Граница публикации
Не публикуй поддомены аккаунтов, учётные данные, токены, контакты, заявки, домены и местные пути. Для испытаний используй только синтетические данные.
04 同仓库更多 Skills
deja-search
deja-vu memory — search the user's past AI coding sessions with the deja CLI. Holds what they already settled and never wrote into the repo (naming rules, banned or already-tried tools, required checks before merge, preferred values, who owns what). Use before your first edit in a task, before you call a change done or ready to merge, before you recommend a tool, library, design or reviewer, before re-debugging an error that may already be solved, when they say 'didn't we fix this before', 'what did we decide about X' or 'I already have that', and before telling them something on this machine does not exist.
deja-reflect
End-of-session reflection and memory curation with deja-vu. Review what was decided, what commands broke and what repaired them, and record durable project rules or decisions with deja remember so the next session starts with them.
revid
Make, edit, export and post AI videos with Revid (revid.ai) through the Revid MCP server. Use whenever the user wants a short-form or long-form video made (from an idea, a script, a URL, an article, a PDF, a tweet, a product page, their own clips, or a song), wants to find what is going viral on TikTok, YouTube, Instagram or X before making something, wants to edit or re-export an existing Revid project, generate a standalone AI image or clip, make a series episode, or publish and schedule a finished video to connected social accounts. Covers setup (hosted MCP with OAuth, or an API key), the 36 tools, credits, polling and the rules for publishing. Routes to the more specific revid-* skills when one fits.
review-study
Review a QuestionPunk survey before launch for wording, answer choices, branching, and missing settings. Use for check my survey or review this draft before publishing.
manage-study
Find QuestionPunk studies, check status, publish an explicitly requested draft, or retrieve its participant link. Use for find my survey, publish this study, or how many people responded.
create-study
Create a saved QuestionPunk survey draft from a research brief or edit specified questions. Use for requests such as make a customer feedback survey or shorten my onboarding study.