[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"content-post-odin-dvizhok-vmesto-zooparka":3},{"post":4,"related":197,"status":160},{"id":5,"title":6,"slug":7,"excerpt":8,"content":9,"cover_alt":159,"cover_position":160,"reading_time":161,"seo":162,"robots_index":171,"seo_title":163,"seo_description":164,"date_published":172,"date_modified":160,"source_lead":160,"rubrics":173,"blocks":181,"cover":194},"ef54871a-190a-4474-9da1-f849b461ae3c","Один движок вместо зоопарка подписок","odin-dvizhok-vmesto-zooparka","CRM, рассылки, конструктор ботов, платформа автоматизации, аналитика - пять подписок и пять расходящихся копий базы клиентов. Рассказываю, как я собрал всё это внутри одной системы, что действительно стало проще, и честно - в каких случаях так делать не надо.",{"type":10,"content":11},"doc",[12,18,22,29,33,37,42,46,55,59,63,67,75,79,84,97,101,106,110,118,126,130,135,141,145,149],{"type":13,"content":14},"paragraph",[15],{"type":16,"text":17},"text","Раньше сайт работал в связке с отдельной платформой автоматизации: она принимала заявки, считала оценку задачи, вела бота. Платформа хорошая, но это отдельная система со своей логикой, своими секретами и своим кабинетом, а данные при этом жили в другом месте.",{"type":13,"content":19},[20],{"type":16,"text":21},"Типичный набор небольшой компании: CRM, сервис рассылок, конструктор чат-ботов, платформа автоматизации, где-то отдельно аналитика. Пять подписок, пять личных кабинетов, пять счетов - и, что хуже, пять копий базы клиентов, которые расходятся между собой.",{"type":23,"attrs":24,"content":26},"heading",{"level":25},2,[27],{"type":16,"text":28},"Что стало",{"type":13,"content":30},[31],{"type":16,"text":32},"Сейчас движок один - административная система, в которой и так лежат статьи, услуги и заявки. В ней же: очереди отправки, задания по расписанию, обращения к языковым моделям, боты, рассылки, журнал сбоев и генерация обложек для статей.",{"type":13,"content":34},[35],{"type":16,"text":36},"Главный выигрыш не в экономии на подписках, хотя она есть. Он в том, что у клиента одна карточка, к которой привязано всё. Раньше один и тот же человек был контактом в CRM, подписчиком в рассылке и пользователем в боте, и эти три записи приходилось как-то сопоставлять между собой.",{"type":23,"attrs":38,"content":39},{"level":25},[40],{"type":16,"text":41},"Как это устроено внутри",{"type":13,"content":43},[44],{"type":16,"text":45},"Несколько решений, которые оказались важнее остальных.",{"type":13,"content":47},[48,53],{"type":16,"marks":49,"text":52},[50],{"type":51},"bold","Очередь - это таблица.",{"type":16,"text":54}," Одна строка - одно сообщение одному человеку. Не \"рассылка на 500 адресов\", а 500 строк с собственным статусом. Отправкой занимается процесс по расписанию, который берёт готовые к отправке и обрабатывает их.",{"type":13,"content":56},[57],{"type":16,"text":58},"Звучит избыточно, пока не случается первый сбой. Тогда выясняется, что вы точно знаете, кому дошло, кому нет и почему, можете повторить только неудавшиеся и не рискуете отправить всё заново. Ещё это защищает от классической аварии, когда одно битое сообщение встаёт в голову очереди и намертво блокирует остальные.",{"type":13,"content":60},[61],{"type":16,"text":62},"В системе нигде не записано, сколько писем уже ушло. Это каждый раз пересчитывается по фактическим доставкам. Так же и с шагом воронки: отдельной галочки нет, шаг виден из истории человека.",{"type":13,"content":64},[65],{"type":16,"text":66},"Соблазн записать число огромный - так быстрее. Но вторая копия одних и тех же данных рано или поздно расходится с первой. И вы получаете отчёт, где рассылка завершена, а на самом деле - нет.",{"type":13,"content":68},[69,73],{"type":16,"marks":70,"text":72},[71],{"type":51},"Секреты разложены по границе \"кто это правит\".",{"type":16,"text":74}," В админке живёт только то, что я меняю сам: ключ и адрес поставщика моделей, токены ботов, стиль генерации обложек. Технические связки - вроде общего пароля между сайтом и системой - лежат в переменных окружения. Логика простая: если это можно поправить в админке между делом, значит, однажды я это и сломаю между делом.",{"type":13,"content":76},[77],{"type":16,"text":78},"Каждый процесс называется по шаблону \"область: что делает\" и лежит в папке своей области. Через полгода это единственное, что позволяет найти нужное среди нескольких десятков процессов.",{"type":23,"attrs":80,"content":81},{"level":25},[82],{"type":16,"text":83},"Что это дало на практике",{"type":13,"content":85},[86,88,95],{"type":16,"text":87},"Самый показательный пример - ",{"type":16,"marks":89,"text":94},[90],{"type":91,"attrs":92},"link",{"href":93},"https:\u002F\u002Fagmazin.ru\u002Fblog\u002Fkontent-bez-kontent-menedzhera","публикация статьи",{"type":16,"text":96},". Я перевожу статью в статус \"опубликована\". Дальше без моего участия: встроенный ИИ-помощник формулирует сюжет обложки, задание уходит в очередь картинок, генератор рисует, файл прикрепляется к статье, статья расходится по внешним площадкам, я получаю уведомление о результате.",{"type":13,"content":98},[99],{"type":16,"text":100},"Раньше это была ручная работа, разложенная по четырём интерфейсам. Сейчас одно действие. И, что важнее, вся эта логика лежит в одном месте - если завтра понадобится добавить площадку, я добавлю её там же, а не в пятом сервисе.",{"type":23,"attrs":102,"content":103},{"level":25},[104],{"type":16,"text":105},"Когда так делать не надо",{"type":13,"content":107},[108],{"type":16,"text":109},"Команда - первый стоп-сигнал. Разделение по инструментам - это ещё и разделение ответственности: маркетолог в своём сервисе рассылок никого не сломает, а в общем движке может сломать многое.",{"type":13,"content":111},[112,116],{"type":16,"marks":113,"text":115},[114],{"type":51},"Если процессы сложные и их много.",{"type":16,"text":117}," Специализированные платформы автоматизации существуют не зря: у них лучше визуальный редактор, история запусков, отладка. Я отказался от такой платформы для маленького личного сайта - но на большом проекте продолжаю её использовать и не собираюсь переносить полторы сотни сценариев в админку.",{"type":13,"content":119},[120,124],{"type":16,"marks":121,"text":123},[122],{"type":51},"Если у вас нет инженера.",{"type":16,"text":125}," Собрать такую очередь и присмотр за ней - несколько дней работы, а дальше поддерживать её придётся вам. Это конструктор, который обслуживаете вы. Пять подписок стоят денег, но не забирают ваше время.",{"type":13,"content":127},[128],{"type":16,"text":129},"Мой случай - предельный: один человек, много автоматизации, полный контроль и желание не платить за пять кабинетов. Для компании из десяти человек ответ будет другим.",{"type":23,"attrs":131,"content":132},{"level":25},[133],{"type":16,"text":134},"Что это даёт вам в месяц",{"type":136,"attrs":137},"relation-block",{"id":138,"junction":139,"collection":140},"9315b11c-43ca-4513-9f18-20473fe6b093","posts_blocks","block_stats",{"type":13,"content":142},[143],{"type":16,"text":144},"Посчитайте на своих числах. Часы, которые уходят на сверку одного клиента между CRM, рассылкой и ботом, при ставке 500 рублей в час превращаются в прямые деньги. Добавьте свои дни на выяснение, какая копия базы верная: день собственника стоит 7 000 - 10 000 рублей. Если сумма выходит больше пяти подписок, зоопарк уже не экономит, а стоит вам денег.",{"type":13,"content":146},[147],{"type":16,"text":148},"Единый движок собирает всё в одном месте, включая точки отказа. Разбираю, как узнать о сбое раньше клиента и почему тихий отказ обходится дороже громкого.",{"type":13,"content":150},[151,153],{"type":16,"text":152},"Читать дальше: ",{"type":16,"marks":154,"text":158},[155],{"type":91,"attrs":156},{"href":157},"https:\u002F\u002Fagmazin.ru\u002Fblog\u002Favtomatizaciya-kotoraya-padaet","Автоматизация всегда падает: вопрос лишь в том, узнаете ли вы об этом","Спутанные кабели к пяти блокам слева и один монолитный блок справа",null,3,{"title":163,"meta_description":164,"focus_keyphrase":165,"og_image":160,"no_index":166,"no_follow":166,"sitemap":167,"additional_fields":170},"CMS как единый движок: очереди, рассылки, боты и ИИ в одной админке","Как я собрал маркетинг, рассылки, ботов и ИИ-обработку внутри одной системы вместо пяти подписок - и в каких случаях так делать не надо.","",false,{"change_frequency":168,"priority":169},"monthly","0.6",{},true,"2026-08-27T17:07:48.000Z",[174,178],{"sort":175,"tags_id":176},1,{"name":177},"Инструменты",{"sort":25,"tags_id":179},{"name":180},"CRM и интеграции",[182],{"id":138,"sort":160,"collection":140,"item":183},{"items":184,"columns":161},[185,188,191],{"lead":186,"text":187},"500 рублей","Час ручной сверки одного клиента между CRM, рассылкой и ботом - при ставке менеджера.",{"lead":189,"text":190},"40 000 - 50 000 рублей","Месяц контент-менеджера, который вручную разносит статьи и картинки по площадкам.",{"lead":192,"text":193},"7 000 - 10 000 рублей","Ваш день, потраченный на выяснение, какая из пяти копий базы клиентов верная.",{"id":195,"modified_on":196},"5babb401-3bb1-4fbd-9b85-aac3a77ccf2d","2026-08-27T18:13:24.243Z",[198,430,580],{"id":199,"title":200,"slug":201,"excerpt":202,"content":203,"cover_alt":396,"cover_position":160,"reading_time":161,"seo":397,"robots_index":171,"seo_title":398,"seo_description":399,"date_published":402,"date_modified":160,"source_lead":160,"rubrics":403,"blocks":409,"cover":427},"a3bdafa1-370e-4669-a460-69d658ee9330","Локально или в облаке: когда своё железо дешевле облачного счёта","lokalno-ili-v-oblake","Одна и та же задача на одном и том же сервере: сначала 25 секунд речи обрабатывались две минуты, потом сорок секунд речи укладывались в десять. Показываю на замерах и на деньгах, когда своё железо окупается на вашем потоке, а когда за него платят зря.",{"type":10,"content":204},[205,209,221,226,230,234,239,243,247,251,256,260,264,268,273,277,281,297,302,306,312,338,344,364,368,373,381,385,388,392],{"type":13,"content":206},[207],{"type":16,"text":208},"Голосовой ввод, который я собирал для сайта и для себя, сначала не заработал вообще: распознавание отставало от реального времени в пять раз. Развилку \"локальная модель или облачный API\" после этого я прохожу замерами - у неё есть числовой ответ, и он разный для разных задач.",{"type":13,"content":210},[211,213,219],{"type":16,"text":212},"Задача, на которой я прошёл оба пути до конца, - ",{"type":16,"marks":214,"text":218},[215],{"type":91,"attrs":216},{"href":217},"https:\u002F\u002Fagmazin.ru\u002Fblog\u002Fwhisperkey-diktovka-dlya-maka","распознавание речи",{"type":16,"text":220},". Расскажу, что получилось, и заодно сформулирую фильтр, по которому эту развилку стоит проходить в любом другом проекте.",{"type":23,"attrs":222,"content":223},{"level":25},[224],{"type":16,"text":225},"Задача",{"type":13,"content":227},[228],{"type":16,"text":229},"Голосовой ввод на сайте и в личных инструментах: человек говорит, получает готовый текст. К этому же классу относится расшифровка звонков и встреч - обычно самый первый реальный ИИ-проект в компании, потому что польза очевидна и данные уже есть.",{"type":13,"content":231},[232],{"type":16,"text":233},"Требования были такие: русский язык, приемлемая задержка, и аудио не должно уезжать в чужие руки без необходимости. Последнее - не паранойя: в звонках клиентов лежат персональные данные, и отправка их наружу превращает техническую задачу в юридическую.",{"type":23,"attrs":235,"content":236},{"level":25},[237],{"type":16,"text":238},"Первый заход: сделать красиво",{"type":13,"content":240},[241],{"type":16,"text":242},"Первым делом я взял готовую потоковую обёртку - из тех, что показывают текст прямо во время речи, слово за словом. Выглядит эффектно, и на демо-роликах всё летает.",{"type":13,"content":244},[245],{"type":16,"text":246},"На сервере без видеокарты она отставала от речи впятеро: 25 секунд речи обрабатывались две минуты. Пользоваться этим нельзя.",{"type":13,"content":248},[249],{"type":16,"text":250},"Сервер тут ни при чём: отдельная машина с быстрыми ядрами, взятая специально под задачу. Дело в подходе: потоковое распознавание постоянно пересчитывает уже сказанное, чтобы уточнить гипотезу, и на процессоре эта переработка съедает всё.",{"type":23,"attrs":252,"content":253},{"level":25},[254],{"type":16,"text":255},"Второй заход: сделать просто",{"type":13,"content":257},[258],{"type":16,"text":259},"Я выбросил потоковость и сделал скучно: человек говорит целиком, запись уходит на сервер одним куском, модель распознаёт её за один проход.",{"type":13,"content":261},[262],{"type":16,"text":263},"Сорок секунд речи обрабатываются за десять. После настройки - в восемь раз быстрее речи: час записи с планёрки превращается в текст за семь минут. Всё на том же сервере без видеокарты.",{"type":13,"content":265},[266],{"type":16,"text":267},"Заодно ушла вторая проблема, о которой я не думал заранее: потоковая выдача даёт рваный текст. Пока модель уточняет гипотезу, фраза на экране дёргается и переписывается. На записи целиком результат сразу чистый.",{"type":23,"attrs":269,"content":270},{"level":25},[271],{"type":16,"text":272},"Третий заход: посчитать на своём железе",{"type":13,"content":274},[275],{"type":16,"text":276},"Отдельная история - обработка на ноутбуке. В современных Маках есть отдельный ускоритель для нейросетей, и собранная под него модель разбирает час разговора за 17 секунд. Разделение на говорящих - примерно столько же. Ноутбук уже куплен, и счёт за минуту распознавания никто не выставляет.",{"type":13,"content":278},[279],{"type":16,"text":280},"Здесь же я собрал грабли, которые стоит знать заранее:",{"type":282,"content":283},"bulletList",[284,291],{"type":285,"content":286},"listItem",[287],{"type":13,"content":288},[289],{"type":16,"text":290},"Безвентиляторный ноутбук перегревается, если гнать распознавание и разделение говорящих одновременно. Последовательно - те же секунды, но без троттлинга. Параллелить на одном ускорителе бессмысленно.",{"type":285,"content":292},[293],{"type":13,"content":294},[295],{"type":16,"text":296},"Затравка модели (список терминов, чтобы правильно писала специальные слова) должна быть обычной фразой, а не списком. Список, начинающийся со слова \"Термины:\", модель вставляла прямо в расшифровку, а на плохом звуке зацикливалась и повторяла его. Затравку она воспринимает как начало текста и продолжает его. После переписывания живым предложением мусор исчез, и скорость выросла втрое.",{"type":23,"attrs":298,"content":299},{"level":25},[300],{"type":16,"text":301},"Фильтр: когда локально выигрывает",{"type":13,"content":303},[304],{"type":16,"text":305},"Из этой и соседних задач сложилось правило, по которому я развилку прохожу.",{"type":13,"content":307},[308],{"type":16,"marks":309,"text":311},[310],{"type":51},"Локально выигрывает, когда:",{"type":282,"content":313},[314,320,326,332],{"type":285,"content":315},[316],{"type":13,"content":317},[318],{"type":16,"text":319},"нагрузка постоянная и предсказуемая - расшифровка всех звонков, обработка всех документов;",{"type":285,"content":321},[322],{"type":13,"content":323},[324],{"type":16,"text":325},"данные чувствительные и их отправка наружу создаёт отдельную юридическую задачу;",{"type":285,"content":327},[328],{"type":13,"content":329},[330],{"type":16,"text":331},"задача узкая, и под неё есть небольшая специализированная модель;",{"type":285,"content":333},[334],{"type":13,"content":335},[336],{"type":16,"text":337},"нужна независимость от чужой доступности, тарифов и геополитики.",{"type":13,"content":339},[340],{"type":16,"marks":341,"text":343},[342],{"type":51},"Облако выигрывает, когда:",{"type":282,"content":345},[346,352,358],{"type":285,"content":347},[348],{"type":13,"content":349},[350],{"type":16,"text":351},"нагрузка редкая или рваная - железо будет простаивать;",{"type":285,"content":353},[354],{"type":13,"content":355},[356],{"type":16,"text":357},"задача требует рассуждений: разбор смысла, написание текста, принятие решений;",{"type":285,"content":359},[360],{"type":13,"content":361},[362],{"type":16,"text":363},"вы ещё проверяете гипотезу и не знаете, взлетит ли вообще.",{"type":13,"content":365},[366],{"type":16,"text":367},"Практически это чаще всего означает гибрид, и у меня он именно такой: распознавание речи - локально, на своём железе, а причёсывание расшифровки в читаемый текст - облачной моделью. Аудио наружу не уходит, а за интеллект платится там, где он действительно нужен.",{"type":23,"attrs":369,"content":370},{"level":25},[371],{"type":16,"text":372},"Про деньги",{"type":282,"content":374},[375],{"type":285,"content":376},[377],{"type":13,"content":378},[379],{"type":16,"text":380},"Считайте не стоимость запроса, а стоимость месяца при вашей нагрузке. Облачный счёт растёт вместе с потоком, своё железо покупается один раз. И это ещё не всё: главная строка - часы, которые сейчас тратит на это живой человек, умноженные на его ставку. При постоянном потоке железо окупается быстро, при редких обращениях не окупается никогда.",{"type":23,"attrs":382,"content":383},{"level":25},[384],{"type":16,"text":134},{"type":136,"attrs":386},{"id":387,"junction":139,"collection":140},"1f3bb2ac-0689-4d3d-a55f-393549604720",{"type":13,"content":389},[390],{"type":16,"text":391},"Посчитайте на своих цифрах. При ставке 500 рублей в час двадцать часовых созвонов в месяц - это 10 000 рублей чужого времени только на прослушивание, и столько же в следующем месяце. Своё железо проходит те же двадцать часов за пару часов и счёт за минуту не выставляет. Плюс риск: если запись с персональными данными ушла наружу, разбор считается днями руководителя по 7 000 - 10 000 рублей.",{"type":136,"attrs":393},{"id":394,"junction":139,"collection":395},"e89df558-4c1d-4ad8-ad47-e2771b55b20e","block_cta","Весы: монолитный блок против лёгкой формы из тонких линий",{"title":398,"meta_description":399,"focus_keyphrase":165,"og_image":160,"no_index":166,"no_follow":166,"sitemap":400,"additional_fields":401},"Локально или в облаке: когда локальная модель дешевле API","Когда своё железо окупается, а когда дешевле облачный API. Реальные замеры на распознавании речи и расчёт в рублях на вашем потоке звонков.",{"change_frequency":168,"priority":169},{},"2026-08-27T17:42:48.000Z",[404,406],{"sort":175,"tags_id":405},{"name":177},{"sort":25,"tags_id":407},{"name":408},"ИИ и модели",[410,416],{"id":394,"sort":160,"collection":395,"item":411},{"cta_variant":412,"heading":413,"body":414,"button_label":415,"url":160,"glow":171},"estimator","Похожая задача?","У вас копятся записи звонков и встреч, и вы выбираете между своим железом и облаком. Опишите задачу - посчитаю, что дешевле на вашем потоке и что при этом останется внутри компании.","Оценить задачу",{"id":387,"sort":160,"collection":140,"item":417},{"items":418,"columns":161},[419,422,425],{"lead":420,"text":421},"10 000 рублей в месяц","двадцать часов созвонов в месяц, которые сейчас кто-то слушает по ставке 500 рублей в час",{"lead":423,"text":424},"7 минут на час записи","столько занимает расшифровка на сервере без видеокарты вместо часа прослушивания",{"lead":192,"text":426},"день руководителя, съеденный разбором, если запись с персональными данными ушла наружу",{"id":428,"modified_on":429},"64bd6f0e-23d1-44b4-9f73-ecf6098c1280","2026-08-27T18:12:51.408Z",{"id":431,"title":432,"slug":433,"excerpt":434,"content":435,"cover_alt":552,"cover_position":160,"reading_time":161,"seo":553,"robots_index":171,"seo_title":554,"seo_description":555,"date_published":558,"date_modified":160,"source_lead":160,"rubrics":559,"blocks":564,"cover":577},"b4b00a32-20a6-4557-b217-16867693b50b","Работает, но врёт: как геоблокировки ломают ИИ-систему незаметно","geobloki-i-tihie-otkazy","Поиск в системе не работал минимум три недели, а мониторинг был зелёный: ИИ-агент съедал ошибку инструмента и спокойно отвечал по памяти. Разбираю класс поломок, при которых всё \"работает\", - блокировки по географии, тихие отказы и то, как их вообще заметить.",{"type":10,"content":436},[437,448,453,457,461,465,470,474,478,482,486,491,495,499,504,512,520,524,528,532,535,539,543],{"type":13,"content":438},[439,441,446],{"type":16,"text":440},"Расскажу про класс поломок, с которым в России теперь сталкивается любой, кто строит ИИ-системы: отказ внешнего сервиса по географическому признаку. ",{"type":16,"marks":442,"text":445},[443],{"type":91,"attrs":444},{"href":157},"Падение видно сразу",{"type":16,"text":447},", его чинят за час. Здесь другое: система продолжает отвечать, отчётность зелёная, а результат тихо стал хуже. Сервисы дальше без названий - разговор про класс поломок, названия к нему ничего не добавят.",{"type":23,"attrs":449,"content":450},{"level":25},[451],{"type":16,"text":452},"Что случилось",{"type":13,"content":454},[455],{"type":16,"text":456},"В одной системе ИИ-ассистент умеет искать в интернете - это отдельный инструмент, который он вызывает, когда своих знаний не хватает. Я полез в журналы по другому поводу и от нечего делать посмотрел статистику вызовов поиска.",{"type":13,"content":458},[459],{"type":16,"text":460},"За всё окно хранения журналов - две недели, 335 вызовов - успешных не было ни одного. Ноль. Поиск был мёртв как минимум с начала месяца.",{"type":13,"content":462},[463],{"type":16,"text":464},"При этом в системе не горело ничего. Запуски числились успешными, пользователи не жаловались, поддержка была спокойна. Причина проста и от этого неприятна: ИИ-агент устроен так, что ошибку инструмента он обрабатывает сам. Инструмент не ответил - агент пожал плечами и ответил по памяти. Формально диалог завершён успешно. Фактически человек получил ответ без свежих данных и не узнал об этом.",{"type":23,"attrs":466,"content":467},{"level":25},[468],{"type":16,"text":469},"Как отличить гео от сломанного ключа",{"type":13,"content":471},[472],{"type":16,"text":473},"Дальше началась диагностика, которая заняла бы дни, если бы не одна привычка: при странном отказе внешнего сервиса первым делом сравнить его поведение из разных точек.",{"type":13,"content":475},[476],{"type":16,"text":477},"Сервис отвечал ошибкой 403 и страницей-заглушкой вместо данных. С зарубежного адреса тот же самый ключ работал. С двух независимых российских адресов - отказ. А запрос вообще без ключа с тех же российских адресов получал внятную ошибку 401 в json. Значит, сеть проходит, адрес не в бане, отвечает само приложение. Режут именно вызов с ключом.",{"type":13,"content":479},[480],{"type":16,"text":481},"Это важное различение. Битый ключ даёт 401 и внятное сообщение. Гео даёт 403 и страницу-заглушку. Разница в одну цифру, а выводы противоположные: в первом случае перевыпускаете ключ, во втором перевыпуск не поможет никогда.",{"type":13,"content":483},[484],{"type":16,"text":485},"Отдельная ловушка того же семейства: один известный шлюз к языковым моделям отвечает на запросы из дата-центров кодом 403 с формулировкой про политику безопасности, а в другом сценарии - кодом 401. То есть 401 от него с сервера - это не протухший ключ, а тот же самый блок. Я потратил на эту догадку время дважды и теперь держу её записанной.",{"type":23,"attrs":487,"content":488},{"level":25},[489],{"type":16,"text":490},"Масштаб проблемы шире, чем кажется",{"type":13,"content":492},[493],{"type":16,"text":494},"Проверка соседних сервисов с тех же адресов дала пёструю картину: часть поисковых API режет российские адреса наглухо, часть работает без вопросов. Отдельная история - мессенджеры: исходящие в один популярный мессенджер из российского облака стабильно упираются в таймаут. У этого есть красивое следствие: если алерты о сбоях настроены туда же, то оповещатель падает на отправке оповещения. Про аварии не узнаёт никто, и мониторинг снова зелёный.",{"type":13,"content":496},[497],{"type":16,"text":498},"Общий вывод простой: в 2026 году доступность внешнего сервиса - это не константа, а переменная, зависящая от того, откуда вы вышли в интернет. Причём меняется она без предупреждения и без письма на почту.",{"type":23,"attrs":500,"content":501},{"level":25},[502],{"type":16,"text":503},"Что с этим делать",{"type":13,"content":505},[506,510],{"type":16,"marks":507,"text":509},[508],{"type":51},"Считать внешний сервис ненадёжным по умолчанию:",{"type":16,"text":511}," канал до него вам не принадлежит. И не гасить его ошибки внутри агента молча - если инструмент не ответил, это должно попадать в журнал сбоев и в оповещения, даже когда агент справился без него.",{"type":13,"content":513},[514,518],{"type":16,"marks":515,"text":517},[516],{"type":51},"Ловить тихие отказы отдельно.",{"type":16,"text":519}," Мониторинг \"процесс завершился успешно\" здесь бесполезен. Нужны метрики результата: сколько вызовов инструмента вернули данные, а не ошибку; какая доля ответов агента опиралась на поиск. Хорошая проверка на здравый смысл - раз в месяц открыть журналы и посмотреть, что вообще происходит внутри успешных запусков.",{"type":13,"content":521},[522],{"type":16,"text":523},"Весь мой трафик к зарубежным сервисам выходит наружу через одну точку, которой я управляю.",{"type":13,"content":525},[526],{"type":16,"text":527},"Держать запасного поставщика: второй сервис того же назначения, заранее проверенный и настроенный, на который переключаются одной настройкой. И не строить алерты на канале, который может отвалиться, - оповещения о сбоях должны идти по маршруту, независимому от того, что они охраняют.",{"type":23,"attrs":529,"content":530},{"level":25},[531],{"type":16,"text":134},{"type":136,"attrs":533},{"id":534,"junction":139,"collection":140},"2c691b05-9b0c-4b2d-906b-c6dc1369d67e",{"type":13,"content":536},[537],{"type":16,"text":538},"Считайте на своих числах. Три недели бот отвечал по памяти - прикиньте, сколько таких ответов пришлось переделывать руками. Например, двадцать штук по часу работы при ставке 500 рублей - это 10 000 рублей. Дороже другое: заявка, потерянная на устаревшем ответе, в B2B стоит от 3 000 до 15 000 рублей. И даже полчаса в журналах раз в месяц - это 250 рублей при той же ставке.",{"type":13,"content":540},[541],{"type":16,"text":542},"Если ваша система висит на зарубежном API, следующий вопрос - что перенести к себе. В соседней статье считаю, где своё железо реально выигрывает, а где это лишние деньги.",{"type":13,"content":544},[545,546],{"type":16,"text":152},{"type":16,"marks":547,"text":551},[548],{"type":91,"attrs":549},{"href":550},"https:\u002F\u002Fagmazin.ru\u002Fblog\u002Flokalno-ili-v-oblake","Локально или в облаке: где своё железо реально выигрывает у API","Ровный ряд горящих индикаторов и оборванный кабель за панелью",{"title":554,"meta_description":555,"focus_keyphrase":165,"og_image":160,"no_index":166,"no_follow":166,"sitemap":556,"additional_fields":557},"Геоблокировки и ИИ-сервисы: тихие отказы, которые не видно в мониторинге","Поиск не работал три недели, а система считала запуски успешными: ИИ-агент съедал ошибку инструмента и отвечал по памяти. Как ловить тихие отказы и что делать с блокировками по IP.",{"change_frequency":168,"priority":169},{},"2026-08-27T17:35:48.000Z",[560,562],{"sort":175,"tags_id":561},{"name":177},{"sort":25,"tags_id":563},{"name":408},[565],{"id":534,"sort":160,"collection":140,"item":566},{"items":567,"columns":161},[568,571,574],{"lead":569,"text":570},"0 из 335","вызовов поиска сработали за две недели, а система считала запуски успешными",{"lead":572,"text":573},"от 3 000 рублей","цена одной заявки в B2B, потерянной на ответе без свежих данных",{"lead":575,"text":576},"1 точка вместо 15","столько мест правите при смене выхода наружу, если канал один",{"id":578,"modified_on":579},"9f4b69c4-2c6f-438a-abc2-5de5ab33ab96","2026-08-27T18:12:56.230Z",{"id":581,"title":582,"slug":583,"excerpt":584,"content":585,"cover_alt":735,"cover_position":160,"reading_time":161,"seo":736,"robots_index":171,"seo_title":737,"seo_description":738,"date_published":741,"date_modified":160,"source_lead":160,"rubrics":742,"blocks":748,"cover":761},"e72b3463-3c8c-4645-84c6-09dfee440a20","Почему письма уходят в спам: SPF, DKIM и DMARC простыми словами","pochemu-pisma-uhodyat-v-spam","У моего домена почта работала, письма отправлялись, всё выглядело нормально - а двух из трёх записей, отвечающих за доверие к отправителю, не было вовсе. Объясняю SPF, DKIM и DMARC человеческим языком: что каждая делает, в каком порядке ставить и как проверить результат за две минуты.",{"type":10,"content":586},[587,591,595,600,604,608,612,617,621,625,629,634,638,642,646,650,655,659,663,675,680,684,688,708,712,717,720,724,728],{"type":13,"content":588},[589],{"type":16,"text":590},"Я собирался включить на сайте почтовую рассылку и по привычке начал с проверки домена. SPF на месте - его поставил хостинг сам, когда подключал почту. DKIM нет. DMARC нет.",{"type":13,"content":592},[593],{"type":16,"text":594},"Почта \"просто работает\" ровно до того момента, когда вы начинаете отправлять что-то массовое или важное. Тогда и выясняется, что часть писем не доходит, а вы об этом не знаете: уведомлений о попадании в спам не бывает. Со стороны это выглядит как молчание клиента: вы думаете, что человек не ответил, а он просто не увидел ваше письмо. И это заявки, за которые вы уже заплатили.",{"type":23,"attrs":596,"content":597},{"level":25},[598],{"type":16,"text":599},"SPF: кому разрешено писать от вашего имени",{"type":13,"content":601},[602],{"type":16,"text":603},"Представьте, что кто угодно может отправить бумажное письмо на бланке вашей компании. Примерно так устроена почта по умолчанию: адрес отправителя в письме - это просто текст, его можно написать любой.",{"type":13,"content":605},[606],{"type":16,"text":607},"SPF - это список: с каких серверов разрешено отправлять письма от вашего домена. Он лежит в настройках домена, и почтовые системы его проверяют. Пришло письмо от вас с сервера, которого нет в списке, - повод для подозрений.",{"type":13,"content":609},[610],{"type":16,"text":611},"Эта запись есть почти у всех, потому что хостинг обычно ставит её сам при подключении почты. Остальные две он за вас не поставит.",{"type":23,"attrs":613,"content":614},{"level":25},[615],{"type":16,"text":616},"DKIM: подпись, которую нельзя подделать",{"type":13,"content":618},[619],{"type":16,"text":620},"SPF отвечает только за то, что письмо пришло с разрешённого сервера. DKIM - про само письмо: ваш сервер подписывает каждое исходящее письмо, а получатель сверяет подпись с образцом, который лежит в настройках домена. Сходится - письмо ваше, и по дороге его не правили.",{"type":13,"content":622},[623],{"type":16,"text":624},"Разница практическая. SPF ломается при пересылке письма: адрес отправителя остался ваш, а сервер уже чужой. DKIM пересылку переживает, потому что подпись живёт в самом письме.",{"type":13,"content":626},[627],{"type":16,"text":628},"Именно этой записи у меня не было. И тут выяснилась деталь, из-за которой её и не бывает у многих: на Beget DKIM не включается кнопкой в панели - его включает поддержка по обращению. Пишете тикет, просите подписывать исходящую почту, и запись появляется в настройках домена сама. Работы на несколько минут и ноль рублей, но об этом надо знать.",{"type":23,"attrs":630,"content":631},{"level":25},[632],{"type":16,"text":633},"DMARC: что делать с письмами, которые не прошли проверку",{"type":13,"content":635},[636],{"type":16,"text":637},"Первые две записи описывают, как проверить письмо. DMARC отвечает на следующий вопрос: а что делать, если проверка не прошла?",{"type":13,"content":639},[640],{"type":16,"text":641},"Вариантов три: ничего не делать и просто наблюдать, отправить в спам или отклонить совсем. Плюс адрес, на который почтовые системы будут присылать отчёты - кто и откуда шлёт письма от вашего имени.",{"type":13,"content":643},[644],{"type":16,"text":645},"Порядок здесь важен, и его нарушение - главная ошибка самостоятельной настройки. Нельзя начинать со строгого режима: если DKIM не настроен или какой-то ваш сервис шлёт письма мимо списка, вы своими руками отправите в спам собственную почту.",{"type":13,"content":647},[648],{"type":16,"text":649},"Правильная последовательность: сначала мягкий режим наблюдения с отчётами, потом настройка DKIM, потом проверка боем, и только потом ужесточение. Я именно так и делал: поставил DMARC, добился DKIM, убедился, что обе проверки проходят, и после этого поднял режим до отправки подозрительного в спам.",{"type":23,"attrs":651,"content":652},{"level":25},[653],{"type":16,"text":654},"Как проверить за две минуты",{"type":13,"content":656},[657],{"type":16,"text":658},"Не надо ставить инструменты и разбираться в заголовках. Есть бесплатные сервисы-автоответчики: вы отправляете письмо со своего рабочего адреса на специальный адрес и получаете в ответ полный разбор - прошёл ли SPF, прошёл ли DKIM, что видит принимающая сторона.",{"type":13,"content":660},[661],{"type":16,"text":662},"Я пользуюсь таким после каждого изменения. Ответ приходит за минуту, и в нём прямым текстом написано pass или fail по каждому пункту. Это единственный способ убедиться, что вы настроили не то, что хотели, а то, что получилось.",{"type":13,"content":664},[665,667,673],{"type":16,"text":666},"Отдельная грабля для тех, кто правит настройки домена через программный интерфейс хостинга: у Beget операция изменения записей перезаписывает всю группу целиком и ",{"type":16,"marks":668,"text":672},[669],{"type":91,"attrs":670},{"href":671},"https:\u002F\u002Fagmazin.ru\u002Fblog\u002Fgeobloki-i-tihie-otkazy","молча удаляет то, что вы не передали",{"type":16,"text":674},". После любой такой правки проверяйте, на месте ли записи почты и адреса сайта.",{"type":23,"attrs":676,"content":677},{"level":25},[678],{"type":16,"text":679},"Бонус: аватар отправителя",{"type":13,"content":681},[682],{"type":16,"text":683},"Раз уж речь о доверии к письму - вопрос, который мне задают чаще, чем про DKIM: как сделать, чтобы рядом с письмом показывалась картинка компании, а не серый кружок с буквой.",{"type":13,"content":685},[686],{"type":16,"text":687},"Ответ неприятный и разный для разных почт:",{"type":282,"content":689},[690,696,702],{"type":285,"content":691},[692],{"type":13,"content":693},[694],{"type":16,"text":695},"В Gmail единственный официальный путь - технология BIMI, а она требует сертификата, подтверждающего права на товарный знак. Это от 1000 долларов в год и обязательный зарегистрированный знак. Для индивидуального предпринимателя без товарного знака - недоступно в принципе.",{"type":285,"content":697},[698],{"type":13,"content":699},[700],{"type":16,"text":701},"В Mail.ru делается бесплатно через кабинет почтмейстера: подтверждаете домен записью в его настройках и загружаете картинку. Требования простые - квадрат, непрозрачный фон, читаемость в мелком размере.",{"type":285,"content":703},[704],{"type":13,"content":705},[706],{"type":16,"text":707},"В Яндексе встроенного способа нет, работает сервис глобальных аватаров, привязанный к адресу отправителя.",{"type":13,"content":709},[710],{"type":16,"text":711},"Но заниматься этим стоит только после того, как настроены DKIM и DMARC. Без них красивое письмо просто не увидят.",{"type":23,"attrs":713,"content":714},{"level":25},[715],{"type":16,"text":716},"Что это даёт вам в деньгах",{"type":136,"attrs":718},{"id":719,"junction":139,"collection":140},"90ad1d09-37c4-4b49-8161-0659e3a1202c",{"type":13,"content":721},[722],{"type":16,"text":723},"Считайте на своих числах. Заявка в B2B стоит от 3 000 до 15 000 рублей, и при среднем чеке 50 000 рублей и конверсии 30 процентов она возвращает около 15 000 рублей. Каждое письмо, ушедшее в спам, - это заявка, за которую вы уже заплатили, и она не сработала. С другой стороны весов - тикет в поддержку хостинга на несколько минут, ноль рублей и две минуты на проверку.",{"type":13,"content":725},[726],{"type":16,"text":727},"Письмо в спаме никто не отбивает уведомлением - вы просто не знаете, что клиент его не увидел. Так же тихо ломаются интеграции и выгрузки: разбираю, какие уведомления ставить, чтобы не отключить их на второй день.",{"type":13,"content":729},[730,731],{"type":16,"text":152},{"type":16,"marks":732,"text":158},[733],{"type":91,"attrs":734},{"href":157},"Три конверта проходят через арки-штампы, четвёртый отложен в тень",{"title":737,"meta_description":738,"focus_keyphrase":165,"og_image":160,"no_index":166,"no_follow":166,"sitemap":739,"additional_fields":740},"SPF, DKIM, DMARC: как настроить, чтобы письма доходили","Три записи в DNS, без которых рассылка и даже обычные письма уезжают в спам. Что каждая означает, в каком порядке их ставить и как проверить результат за две минуты.",{"change_frequency":168,"priority":169},{},"2026-08-27T17:21:48.000Z",[743,745],{"sort":175,"tags_id":744},{"name":177},{"sort":25,"tags_id":746},{"name":747},"Безопасность",[749],{"id":719,"sort":160,"collection":140,"item":750},{"items":751,"columns":161},[752,755,758],{"lead":753,"text":754},"0 рублей","Столько стоит DKIM: у Beget его включает поддержка по вашему тикету",{"lead":756,"text":757},"15 000 рублей","Столько в среднем приносит одна заявка при чеке 50 000 рублей и конверсии 30 процентов",{"lead":759,"text":760},"2 минуты","Проверка после каждой правки: письмо автоответчику и разбор pass или fail",{"id":762,"modified_on":763},"2191cc54-9d87-49bc-bd39-b656d1a2a18f","2026-08-27T18:13:09.511Z"]