[{"data":1,"prerenderedAt":2990},["ShallowReactive",2],{"blog-posts":3,"projects":1707,"courses":2469},[4,209,364,929,989,1121,1161,1331,1459,1502,1534,1552,1584,1660],{"_path":5,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":9,"description":10,"date":11,"tags":12,"body":17,"_type":203,"_id":204,"_source":205,"_file":206,"_stem":207,"_extension":208},"\u002Fblog\u002F2026-07-09-telegram-invite-reality","blog",false,"","Как я пытаюсь раскачать телеграм-канал: битва с лимитами","История о том, как AI-автоматизация массовых приглашений столкнулась с реальностью телеграм-лимитов","2026-07-09",[13,14,15,16],"telegram","ai","опыт","мысли",{"type":18,"children":19,"toc":195},"root",[20,28,33,40,45,50,55,61,66,71,76,82,87,92,103,113,119,124,149,154,160,170,180,190],{"type":21,"tag":22,"props":23,"children":24},"element","p",{},[25],{"type":26,"value":27},"text","У меня есть канал — «Струны, мысли». Стихи, музыка, мысли. Недавно решил попробовать пригласить туда людей из своих контактов. Тысяча с лишним человек — среди них точно есть те, кому это откликнется.",{"type":21,"tag":22,"props":29,"children":30},{},[31],{"type":26,"value":32},"Плюс у меня есть AI-агент. Он умеет писать скрипты, работать с Telegram API, отслеживать прогресс. Казалось бы — идеальный инструмент для массовой рассылки.",{"type":21,"tag":34,"props":35,"children":37},"h2",{"id":36},"первый-запуск",[38],{"type":26,"value":39},"Первый запуск",{"type":21,"tag":22,"props":41,"children":42},{},[43],{"type":26,"value":44},"8 июля, вечер. Агент отфильтровал контакты — около 600 ботов и мёртвых душ отсеялись, осталось 1158 реальных людей. Запустили скрипт.",{"type":21,"tag":22,"props":46,"children":47},{},[48],{"type":26,"value":49},"24 приглашения — и Telegram разорвал сессию. Просто отключил аккаунт от API. Без предупреждения, без объяснений.",{"type":21,"tag":22,"props":51,"children":52},{},[53],{"type":26,"value":54},"Пришлось заново авторизоваться. Потеряли час.",{"type":21,"tag":34,"props":56,"children":58},{"id":57},"вторая-попытка",[59],{"type":26,"value":60},"Вторая попытка",{"type":21,"tag":22,"props":62,"children":63},{},[64],{"type":26,"value":65},"На следующий день решили действовать иначе. Сначала — тихие инвайты в канал (107 человек добавлены, даже не заметили). Потом — личные сообщения с приглашением. Честные, без маркетингового шлака: «Привет! Это массовая рассылка, но канал мой, стихи тоже мои. Вот ссылка».",{"type":21,"tag":22,"props":67,"children":68},{},[69],{"type":26,"value":70},"67 сообщений за 20 минут. И снова — «Too many requests». Аккаунт забанен.",{"type":21,"tag":22,"props":72,"children":73},{},[74],{"type":26,"value":75},"На этот раз бан подольше. Часы.",{"type":21,"tag":34,"props":77,"children":79},{"id":78},"третья-попытка",[80],{"type":26,"value":81},"Третья попытка",{"type":21,"tag":22,"props":83,"children":84},{},[85],{"type":26,"value":86},"Переписали скрипт. Теперь он работает в двух режимах: invite в канал + личное сообщение, с паузой 31 секунда между приглашениями. При rate limit — ждёт час и пробует снова. Запустили в фоне.",{"type":21,"tag":22,"props":88,"children":89},{},[90],{"type":26,"value":91},"Но выяснилось две вещи, которые усложнили автоматизацию.",{"type":21,"tag":22,"props":93,"children":94},{},[95,101],{"type":21,"tag":96,"props":97,"children":98},"strong",{},[99],{"type":26,"value":100},"Первое:",{"type":26,"value":102}," Telegram не даёт отправлять больше 20–30 личных сообщений в день незнакомым людям. Не в час — в день. Приглашения в канал — около 30 в час. Это не баг, это политика платформы. И она не написана нигде в явном виде — только в FloodWaitError, который приходит после факта.",{"type":21,"tag":22,"props":104,"children":105},{},[106,111],{"type":21,"tag":96,"props":107,"children":108},{},[109],{"type":26,"value":110},"Второе:",{"type":26,"value":112}," мой AI-агент и скрипт рассылки используют одну и ту же сессию Telegram. Они не могут работать одновременно. Каждый запуск скрипта требует остановки агента. Каждый ответ агента — остановки скрипта.",{"type":21,"tag":34,"props":114,"children":116},{"id":115},"где-мы-сейчас",[117],{"type":26,"value":118},"Где мы сейчас",{"type":21,"tag":22,"props":120,"children":121},{},[122],{"type":26,"value":123},"Скрипт работает. Медленно, по одному приглашению в 31 секунду, с часовыми паузами при каждом бане. Из 1158 контактов:",{"type":21,"tag":125,"props":126,"children":127},"ul",{},[128,134,139,144],{"type":21,"tag":129,"props":130,"children":131},"li",{},[132],{"type":26,"value":133},"100 человек добавлены в канал (тихо, без уведомлений)",{"type":21,"tag":129,"props":135,"children":136},{},[137],{"type":26,"value":138},"72 получили личное приглашение",{"type":21,"tag":129,"props":140,"children":141},{},[142],{"type":26,"value":143},"22 пропущены — закрытые настройки приватности",{"type":21,"tag":129,"props":145,"children":146},{},[147],{"type":26,"value":148},"954 ждут своей очереди",{"type":21,"tag":22,"props":150,"children":151},{},[152],{"type":26,"value":153},"Баны снимаются. Скрипт снова стучится в API. Так и ломимся — по часу в час, по одному приглашению за раз.",{"type":21,"tag":34,"props":155,"children":157},{"id":156},"что-понял-на-этом-пути",[158],{"type":26,"value":159},"Что понял на этом пути",{"type":21,"tag":22,"props":161,"children":162},{},[163,168],{"type":21,"tag":96,"props":164,"children":165},{},[166],{"type":26,"value":167},"Telegram защищает пользователей, а не создателей контента.",{"type":26,"value":169}," Лимиты — это философия платформы: рост должен быть органическим. Но «органический» не значит «ждать, пока само придёт». Значит — идти к людям, но медленно, с уважением к правилам.",{"type":21,"tag":22,"props":171,"children":172},{},[173,178],{"type":21,"tag":96,"props":174,"children":175},{},[176],{"type":26,"value":177},"AI — не кнопка «сделать всё».",{"type":26,"value":179}," Агент пишет скрипты, обрабатывает ошибки, адаптируется к лимитам. Но он не может обойти фундаментальное ограничение платформы. Зато он может терпеливо ждать и пробовать снова — в отличие от человека, которому это наскучит через два часа.",{"type":21,"tag":22,"props":181,"children":182},{},[183,188],{"type":21,"tag":96,"props":184,"children":185},{},[186],{"type":26,"value":187},"1158 приглашений — это марафон, не спринт.",{"type":26,"value":189}," При текущем темпе на всё уйдут несколько дней. И это нормально. Каждый, кто примет приглашение, будет тем, кто увидел реальное приглашение от реального человека — а не спам из ниоткуда.",{"type":21,"tag":22,"props":191,"children":192},{},[193],{"type":26,"value":194},"Продолжение следует. Скрипт работает.",{"title":8,"searchDepth":196,"depth":196,"links":197},2,[198,199,200,201,202],{"id":36,"depth":196,"text":39},{"id":57,"depth":196,"text":60},{"id":78,"depth":196,"text":81},{"id":115,"depth":196,"text":118},{"id":156,"depth":196,"text":159},"markdown","content:blog:2026-07-09-telegram-invite-reality.md","content","blog\u002F2026-07-09-telegram-invite-reality.md","blog\u002F2026-07-09-telegram-invite-reality","md",{"_path":210,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":211,"description":212,"date":213,"tags":214,"body":217,"_type":203,"_id":361,"_source":205,"_file":362,"_stem":363,"_extension":208},"\u002Fblog\u002F2026-07-08-o-privychke-i-merakh","О привычке и мерах","Монтень считал, что привычка делает нас рабами. В разработке то же самое — только рабами фреймворков и паттернов","2026-07-08",[16,215,216],"разработка","философия",{"type":18,"children":218,"toc":355},[219,224,229,235,249,254,259,272,277,283,288,293,298,303,308,314,319,324,329,335,340,345,350],{"type":21,"tag":22,"props":220,"children":221},{},[222],{"type":26,"value":223},"Монтень ушёл из суда, заперся в башне своего замка и тридцать лет писал книгу о себе. Не о политике, не о войнах — о том, как он сам устроен. Что его злит, что радует, почему он делает одно и не делает другое. «Опыты» — это толстая тетрадь честных записей. Без претензии на истину.",{"type":21,"tag":22,"props":225,"children":226},{},[227],{"type":26,"value":228},"Я не ушёл в замок. Но я тоже веду записи. Только мои — не про личные нравы, а про код, системы и привычки, которые в них пролезают.",{"type":21,"tag":34,"props":230,"children":232},{"id":231},"привычка",[233],{"type":26,"value":234},"Привычка",{"type":21,"tag":22,"props":236,"children":237},{},[238,240,247],{"type":26,"value":239},"Монтень говорил: «Привычка — тихая и незаметная управительница». Она не приказывает — она просто делает за нас. Открываешь проект — Ctrl+P, открываешь терминал, пишешь ",{"type":21,"tag":241,"props":242,"children":244},"code",{"className":243},[],[245],{"type":26,"value":246},"npm run dev",{"type":26,"value":248},". Новый проект — те же клавиши. Не задумываешься.",{"type":21,"tag":22,"props":250,"children":251},{},[252],{"type":26,"value":253},"И это хорошо. Без привычки невозможно работать. Когда я впервые начал со Strapi 5, каждый шаг требовал усилия: как устроены content types, как работает REST API, где права, как деплоить. Сейчас — автоматизм. Пять минут и новый сервис на ногах.",{"type":21,"tag":22,"props":255,"children":256},{},[257],{"type":26,"value":258},"Но Монтень предупреждал и о другой стороне. Привычка, которая помогает, одновременно слепит. Ты делаешь то же самое, потому что делал раньше, а не потому что это лучший способ.",{"type":21,"tag":22,"props":260,"children":261},{},[262,264,270],{"type":26,"value":263},"Я три года писал на Vue. Потом на проекте потребовался React — и я ловил себя на том, что ищу во фреймворке вещи, которых там нет. Vue-привычки. Реактивность через ",{"type":21,"tag":241,"props":265,"children":267},{"className":266},[],[268],{"type":26,"value":269},"ref",{"type":26,"value":271},", composition API, single-file components. В React это всё устроено иначе, и вместо того чтобы думать на языке нового инструмента, я пытался заставить его работать по-старому.",{"type":21,"tag":22,"props":273,"children":274},{},[275],{"type":26,"value":276},"Монтень так и писал: «Обычай заслоняет нам истинный вид вещей». Фреймворк — это не просто инструмент. Это набор привычек. Сменить стек — значит сменить мышление. А это тяжело.",{"type":21,"tag":34,"props":278,"children":280},{"id":279},"о-мерах",[281],{"type":26,"value":282},"О мерах",{"type":21,"tag":22,"props":284,"children":285},{},[286],{"type":26,"value":287},"В другом эссе Монтень рассуждает об излишествах. Он за умеренность — не потому что крайности плохи сами по себе, а потому что они мешают видеть цель. Ешь слишком много — забудешь вкус еды. Читаешь слишком много — забудешь, зачем читал.",{"type":21,"tag":22,"props":289,"children":290},{},[291],{"type":26,"value":292},"В разработке это проявляется как архитектурный жор.",{"type":21,"tag":22,"props":294,"children":295},{},[296],{"type":26,"value":297},"У меня проект, где 15 PM2-процессов. Frontend, backend, 10 парсеров, анализатор, дайджест, сборщик фото. Когда я рассказываю об этом, люди спрашивает: «Зачем так много?»",{"type":21,"tag":22,"props":299,"children":300},{},[301],{"type":26,"value":302},"И я сам задаю себе тот же вопрос. Потому что когда запускал — каждый сервис казался необходимым. Один парсер на площадку. Один процесс на аналитику. Логично. Но логика каждого отдельного решения не гарантирует логику целого. Можно сделать сто правильных шагов и прийти в тупик.",{"type":21,"tag":22,"props":304,"children":305},{},[306],{"type":26,"value":307},"Монтень бы понял. Он писал: «Наше положение привычно, и вот мы привыкли быть». 15 процессов — это не катастрофа. Но я знаю, что 8 хватило бы. Знаю — потому что уже проходил через это. Сначала всё кажется необходимым. Потом смотришь и видишь дублирование, лишние прослойки, сервис, который делает ровно одну вещь раз в сутки и мог бы быть cron-задачей.",{"type":21,"tag":34,"props":309,"children":311},{"id":310},"опыт-учит-задним-числом",[312],{"type":26,"value":313},"Опыт учит задним числом",{"type":21,"tag":22,"props":315,"children":316},{},[317],{"type":26,"value":318},"Главная мысль Монтеня: опыт приходит после того, как ты уже всё сделал. Нельзя прочитать книгу и стать мудрым. Нужно набить шишки. Но можно — и нужно — честно оглядываться назад и спрашивать: а зачем я это сделал?",{"type":21,"tag":22,"props":320,"children":321},{},[322],{"type":26,"value":323},"Каждую неделю я нахожу в своём коде что-то, что переписал бы иначе. Не потому что было плохо — потому что теперь я знаю больше. Два месяца назад это было правильное решение. Сегодня — нет. И это нормально. Монтень переписывал «Опыты» пятнадцать лет, добавляя и зачёркивая. Книга росла вместе с ним.",{"type":21,"tag":22,"props":325,"children":326},{},[327],{"type":26,"value":328},"Код — тоже. Не бывает финальной архитектуры. Бывает текущая, которая работает, и следующая, которая будет работать лучше. Между ними — опыт. Не книжный, не из документации. Свой, набитый на своих ошибках.",{"type":21,"tag":34,"props":330,"children":332},{"id":331},"привычка-как-мера",[333],{"type":26,"value":334},"Привычка как мера",{"type":21,"tag":22,"props":336,"children":337},{},[338],{"type":26,"value":339},"Вот что я понял, читая Монтеня: привычка и мера — это не два разных предмета. Это одно и то же. Привычка — это внутренняя мера. Ты делаешь ровно столько, сколько делал раньше. Ни больше, ни меньше.",{"type":21,"tag":22,"props":341,"children":342},{},[343],{"type":26,"value":344},"Иногда этого достаточно. Автоматизмы экономят время и силы. Но иногда привычная мера устарела. Проект вырос, задачи изменились, а ты всё ещё делаешь так, как делал полгода назад. Не потому что так лучше — потому что так привычно.",{"type":21,"tag":22,"props":346,"children":347},{},[348],{"type":26,"value":349},"Монтень не давал рецептов. Он говорил: «Я не учу — я рассказываю». Вот и я рассказываю. О том, как привычка помогает строить сервисы. И о том, как та же привычка мешает их упрощать. О мерах — которые приходят только с опытом, а опыт — только с ошибками.",{"type":21,"tag":22,"props":351,"children":352},{},[353],{"type":26,"value":354},"Иногда достаточно остановиться и спросить: я делаю так, потому что это правильно, или потому что я так привык?",{"title":8,"searchDepth":196,"depth":196,"links":356},[357,358,359,360],{"id":231,"depth":196,"text":234},{"id":279,"depth":196,"text":282},{"id":310,"depth":196,"text":313},{"id":331,"depth":196,"text":334},"content:blog:2026-07-08-o-privychke-i-merakh.md","blog\u002F2026-07-08-o-privychke-i-merakh.md","blog\u002F2026-07-08-o-privychke-i-merakh",{"_path":365,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":366,"description":367,"date":368,"tags":369,"body":375,"_type":203,"_id":926,"_source":205,"_file":927,"_stem":928,"_extension":208},"\u002Fblog\u002F2026-07-07-aklab-ai-development","AKLAB: как я строю автоматический мониторинг недвижимости для инвесторов","10 парсеров, 15 сервисов, 578 тестов. Как я строю платформу для инвесторов в недвижимость с помощью AI.","2026-07-07",[370,14,215,371,372,373,374],"aklab","strapi","vue","недвижимость","инвестиции",{"type":18,"children":376,"toc":917},[377,382,387,392,401,407,412,417,423,428,587,592,597,618,624,629,634,644,649,659,664,670,675,685,690,699,704,709,714,720,725,735,745,755,765,771,884,890,913],{"type":21,"tag":22,"props":378,"children":379},{},[380],{"type":26,"value":381},"Я делаю сервис мониторинга инвестиционной недвижимости — AKLAB. Он автоматически находит объекты, которые стоят значительно ниже рыночных эталонов. Парсит 10 федеральных площадок, анализирует отклонения от эталонных цен, присылает утренний дайджест на email.",{"type":21,"tag":22,"props":383,"children":384},{},[385],{"type":26,"value":386},"Основной фокус — коммерческая недвижимость: офисы, склады, торговые помещения. Но мониторим также земельные участки и квартиры.",{"type":21,"tag":22,"props":388,"children":389},{},[390],{"type":26,"value":391},"За полтора месяца довёл проект от идеи до продакшена. Рассказываю, как устроено.",{"type":21,"tag":22,"props":393,"children":394},{},[395],{"type":21,"tag":396,"props":397,"children":400},"img",{"alt":398,"src":399},"Дашборд AKLAB — тёмная тема","\u002Fuploads\u002Faklab-dashboard-dark.png",[],{"type":21,"tag":34,"props":402,"children":404},{"id":403},"зачем",[405],{"type":26,"value":406},"Зачем",{"type":21,"tag":22,"props":408,"children":409},{},[410],{"type":26,"value":411},"Рынок инвестиционной недвижимости — это торги. Сбербанк-АСТ, Алфалот, М-ЕТС, ГИС Торги, ЕТПРФ, Инвест Москва и другие. На каждой площадке — сотни лотов. Просматривать их вручную каждый день — нереально.",{"type":21,"tag":22,"props":413,"children":414},{},[415],{"type":26,"value":416},"AKLAB делает это за меня: парсит площадки ночью, анализирует отклонения от эталонов, утром присылает результат на почту.",{"type":21,"tag":34,"props":418,"children":420},{"id":419},"архитектура",[421],{"type":26,"value":422},"Архитектура",{"type":21,"tag":22,"props":424,"children":425},{},[426],{"type":26,"value":427},"Один репозиторий, 15 PM2-процессов:",{"type":21,"tag":429,"props":430,"children":431},"table",{},[432,456],{"type":21,"tag":433,"props":434,"children":435},"thead",{},[436],{"type":21,"tag":437,"props":438,"children":439},"tr",{},[440,446,451],{"type":21,"tag":441,"props":442,"children":443},"th",{},[444],{"type":26,"value":445},"Компонент",{"type":21,"tag":441,"props":447,"children":448},{},[449],{"type":26,"value":450},"Порт",{"type":21,"tag":441,"props":452,"children":453},{},[454],{"type":26,"value":455},"Описание",{"type":21,"tag":457,"props":458,"children":459},"tbody",{},[460,479,497,515,533,551,569],{"type":21,"tag":437,"props":461,"children":462},{},[463,469,474],{"type":21,"tag":464,"props":465,"children":466},"td",{},[467],{"type":26,"value":468},"Frontend (Vue 3 + Vite + Tailwind)",{"type":21,"tag":464,"props":470,"children":471},{},[472],{"type":26,"value":473},":5174",{"type":21,"tag":464,"props":475,"children":476},{},[477],{"type":26,"value":478},"Dashboard, Настройки, Карточки объектов",{"type":21,"tag":437,"props":480,"children":481},{},[482,487,492],{"type":21,"tag":464,"props":483,"children":484},{},[485],{"type":26,"value":486},"Backend (Strapi 5 + SQLite)",{"type":21,"tag":464,"props":488,"children":489},{},[490],{"type":26,"value":491},":1338",{"type":21,"tag":464,"props":493,"children":494},{},[495],{"type":26,"value":496},"REST API, Admin Panel, Cron scheduler",{"type":21,"tag":437,"props":498,"children":499},{},[500,505,510],{"type":21,"tag":464,"props":501,"children":502},{},[503],{"type":26,"value":504},"10 парсеров (Playwright\u002Ffetch)",{"type":21,"tag":464,"props":506,"children":507},{},[508],{"type":26,"value":509},":1345–1355",{"type":21,"tag":464,"props":511,"children":512},{},[513],{"type":26,"value":514},"alfalot, torgi-gov, sberbank-ast, m-ets …",{"type":21,"tag":437,"props":516,"children":517},{},[518,523,528],{"type":21,"tag":464,"props":519,"children":520},{},[521],{"type":26,"value":522},"Analyzer",{"type":21,"tag":464,"props":524,"children":525},{},[526],{"type":26,"value":527},":1341",{"type":21,"tag":464,"props":529,"children":530},{},[531],{"type":26,"value":532},"Сравнение с эталонами",{"type":21,"tag":437,"props":534,"children":535},{},[536,541,546],{"type":21,"tag":464,"props":537,"children":538},{},[539],{"type":26,"value":540},"Digest",{"type":21,"tag":464,"props":542,"children":543},{},[544],{"type":26,"value":545},":1342",{"type":21,"tag":464,"props":547,"children":548},{},[549],{"type":26,"value":550},"Утренний email-дайджест",{"type":21,"tag":437,"props":552,"children":553},{},[554,559,564],{"type":21,"tag":464,"props":555,"children":556},{},[557],{"type":26,"value":558},"Photo",{"type":21,"tag":464,"props":560,"children":561},{},[562],{"type":26,"value":563},":1356",{"type":21,"tag":464,"props":565,"children":566},{},[567],{"type":26,"value":568},"Фото из карточек",{"type":21,"tag":437,"props":570,"children":571},{},[572,577,582],{"type":21,"tag":464,"props":573,"children":574},{},[575],{"type":26,"value":576},"Очередь",{"type":21,"tag":464,"props":578,"children":579},{},[580],{"type":26,"value":581},"—",{"type":21,"tag":464,"props":583,"children":584},{},[585],{"type":26,"value":586},"@aklab\u002Fsqlite-queue",{"type":21,"tag":22,"props":588,"children":589},{},[590],{"type":26,"value":591},"Backend — Strapi 5.44 + SQLite. Выбрал Strapi, потому что из коробки получаю REST API, админку, систему прав и кастомные контроллеры. Не нужно писать boilerplate.",{"type":21,"tag":22,"props":593,"children":594},{},[595],{"type":26,"value":596},"Frontend — Vue 3 + Vite + Tailwind. Дашборд с фильтрами по городу, цене и типу объекта, карточки с галереей фото.",{"type":21,"tag":22,"props":598,"children":599},{},[600,602,608,610,616],{"type":26,"value":601},"Парсеры — каждый микросервис в отдельной папке, shared-модули в ",{"type":21,"tag":241,"props":603,"children":605},{"className":604},[],[606],{"type":26,"value":607},"_shared\u002F",{"type":26,"value":609},". Один манифест ",{"type":21,"tag":241,"props":611,"children":613},{"className":612},[],[614],{"type":26,"value":615},"services.json",{"type":26,"value":617}," управляет портами, health-checks и PM2-конфигом.",{"type":21,"tag":34,"props":619,"children":621},{"id":620},"парсинг",[622],{"type":26,"value":623},"Парсинг",{"type":21,"tag":22,"props":625,"children":626},{},[627],{"type":26,"value":628},"Ночью запускаются 10 парсеров одновременно. Каждый обходит свою площадку, находит новые лоты и проверяет обновления старых.",{"type":21,"tag":22,"props":630,"children":631},{},[632],{"type":26,"value":633},"Парсинг работает в две фазы — и это не просто «скан, потом загрузка». Это принципиальное решение, которое экономит время и ресурсы.",{"type":21,"tag":22,"props":635,"children":636},{},[637,642],{"type":21,"tag":96,"props":638,"children":639},{},[640],{"type":26,"value":641},"Phase 1 — Scan.",{"type":26,"value":643}," Парсер обходит ленту площадки и собирает только карточные данные: цена, площадь, адрес, тип помещения. Тут же, на лету, применяет фильтры. Не попадает в нужный регион — отбрасывается. Площадь меньше минимума — отбрасывается. Цена выше порога — отбрасывается. Стоп-слова в названии — отбрасывается. Всё это происходит до того, как я потратил хоть одну лишнюю секунду на детальную выгрузку.",{"type":21,"tag":22,"props":645,"children":646},{},[647],{"type":26,"value":648},"Типичный сценарий: площадка выдаёт 200 лотов по всей России. После фильтрации по региону (Москва + МО) остаётся 30. После фильтрации по площади и цене — 12. Именно эти 12 и пойдут во вторую фазу, а не все 200.",{"type":21,"tag":22,"props":650,"children":651},{},[652,657],{"type":21,"tag":96,"props":653,"children":654},{},[655],{"type":26,"value":656},"Phase 2 — Fetch Details.",{"type":26,"value":658}," Для каждого прошедшего фильтр лота парсер заходит в карточку и забирает полное описание, фотографии, документы, условия торгов. Это дорогая операция — каждый запрос это реальный HTTP-запрос к площадке, с ожиданием загрузки, иногда с обходом JavaScript-рендеринга через Playwright.",{"type":21,"tag":22,"props":660,"children":661},{},[662],{"type":26,"value":663},"Две фазы позволяют не грузить детали для объектов, которые заведомо не подходят. На некоторых площадках фильтрация отсекает 80–90% лотов ещё на этапе scan.",{"type":21,"tag":34,"props":665,"children":667},{"id":666},"скоринг",[668],{"type":26,"value":669},"Скоринг",{"type":21,"tag":22,"props":671,"children":672},{},[673],{"type":26,"value":674},"После парсинга analyzer оценивает каждый объект по сравнению с эталонными ценами.",{"type":21,"tag":22,"props":676,"children":677},{},[678,683],{"type":21,"tag":96,"props":679,"children":680},{},[681],{"type":26,"value":682},"Эталоны",{"type":26,"value":684}," — это заранее заданные ориентиры стоимости за квадратный метр для каждого типа помещения в каждом регионе. Не «средняя цена по рынку», а конкретные контрольные точки, которые я веду вручную и корректирую по мере накопления данных.",{"type":21,"tag":22,"props":686,"children":687},{},[688],{"type":26,"value":689},"Для каждого объекта analyzer считает отклонение от эталона:",{"type":21,"tag":691,"props":692,"children":694},"pre",{"code":693},"deviation = (эталонная_цена − фактическая_цена) \u002F эталонная_цена × 100\n",[695],{"type":21,"tag":241,"props":696,"children":697},{"__ignoreMap":8},[698],{"type":26,"value":693},{"type":21,"tag":22,"props":700,"children":701},{},[702],{"type":26,"value":703},"Если отклонение превышает порог (например, 20%) — объект попадает в фокус. Чем больше отклонение, тем выше фокус-скор.",{"type":21,"tag":22,"props":705,"children":706},{},[707],{"type":26,"value":708},"Кроме отклонения, на скор влияют дополнительные факторы: тип торгов (банкротство vs реализация), наличие фото, полнота описания, сроки торгов. Объект с высоким отклонением, но без фотографий и с неполным описанием получит скор ниже, чем объект с аналогичным отклонением, но полной карточкой.",{"type":21,"tag":22,"props":710,"children":711},{},[712],{"type":26,"value":713},"Весь парсинг и анализ происходит ночью. Утром digest формирует email-дайджест по объектам, попавшим в фокус, и отправляет мне на почту.",{"type":21,"tag":34,"props":715,"children":717},{"id":716},"как-ai-помогает",[718],{"type":26,"value":719},"Как AI помогает",{"type":21,"tag":22,"props":721,"children":722},{},[723],{"type":26,"value":724},"Я разрабатываю AKLAB с AI-ассистентом. Вот что это даёт на практике:",{"type":21,"tag":22,"props":726,"children":727},{},[728,733],{"type":21,"tag":96,"props":729,"children":730},{},[731],{"type":26,"value":732},"Параллельная работа.",{"type":26,"value":734}," AI одновременно пишет код для нескольких сервисов — парсера, analyzer, фронтенд-компонента. Я ревьюю результат, а не пишу с нуля.",{"type":21,"tag":22,"props":736,"children":737},{},[738,743],{"type":21,"tag":96,"props":739,"children":740},{},[741],{"type":26,"value":742},"Документация.",{"type":26,"value":744}," После каждого изменения AI обновляет внутреннюю документацию: архитектурные решения, known issues, deployment notes. Всё актуально в каждый момент времени.",{"type":21,"tag":22,"props":746,"children":747},{},[748,753],{"type":21,"tag":96,"props":749,"children":750},{},[751],{"type":26,"value":752},"Тесты.",{"type":26,"value":754}," AI генерирует тесты параллельно с кодом. Не «напиши потом тесты» — а сразу вместе с фичей.",{"type":21,"tag":22,"props":756,"children":757},{},[758,763],{"type":21,"tag":96,"props":759,"children":760},{},[761],{"type":26,"value":762},"Деплой.",{"type":26,"value":764}," Один скрипт: коммит, пуш, npm install, build 10 сервисов, перезапуск PM2, health-check. 3–5 минут от команды до рабочего продакшена.",{"type":21,"tag":34,"props":766,"children":768},{"id":767},"цифры",[769],{"type":26,"value":770},"Цифры",{"type":21,"tag":429,"props":772,"children":773},{},[774,790],{"type":21,"tag":433,"props":775,"children":776},{},[777],{"type":21,"tag":437,"props":778,"children":779},{},[780,785],{"type":21,"tag":441,"props":781,"children":782},{},[783],{"type":26,"value":784},"Метрика",{"type":21,"tag":441,"props":786,"children":787},{},[788],{"type":26,"value":789},"Значение",{"type":21,"tag":457,"props":791,"children":792},{},[793,806,819,832,845,858,871],{"type":21,"tag":437,"props":794,"children":795},{},[796,801],{"type":21,"tag":464,"props":797,"children":798},{},[799],{"type":26,"value":800},"Версия",{"type":21,"tag":464,"props":802,"children":803},{},[804],{"type":26,"value":805},"v1.1.43",{"type":21,"tag":437,"props":807,"children":808},{},[809,814],{"type":21,"tag":464,"props":810,"children":811},{},[812],{"type":26,"value":813},"PM2-процессов",{"type":21,"tag":464,"props":815,"children":816},{},[817],{"type":26,"value":818},"15",{"type":21,"tag":437,"props":820,"children":821},{},[822,827],{"type":21,"tag":464,"props":823,"children":824},{},[825],{"type":26,"value":826},"Активных парсеров",{"type":21,"tag":464,"props":828,"children":829},{},[830],{"type":26,"value":831},"10",{"type":21,"tag":437,"props":833,"children":834},{},[835,840],{"type":21,"tag":464,"props":836,"children":837},{},[838],{"type":26,"value":839},"Площадок",{"type":21,"tag":464,"props":841,"children":842},{},[843],{"type":26,"value":844},"10 федеральных",{"type":21,"tag":437,"props":846,"children":847},{},[848,853],{"type":21,"tag":464,"props":849,"children":850},{},[851],{"type":26,"value":852},"Тестов",{"type":21,"tag":464,"props":854,"children":855},{},[856],{"type":26,"value":857},"578",{"type":21,"tag":437,"props":859,"children":860},{},[861,866],{"type":21,"tag":464,"props":862,"children":863},{},[864],{"type":26,"value":865},"Коммитов",{"type":21,"tag":464,"props":867,"children":868},{},[869],{"type":26,"value":870},"200+",{"type":21,"tag":437,"props":872,"children":873},{},[874,879],{"type":21,"tag":464,"props":875,"children":876},{},[877],{"type":26,"value":878},"Время от идеи до prod",{"type":21,"tag":464,"props":880,"children":881},{},[882],{"type":26,"value":883},"1.5 месяца",{"type":21,"tag":34,"props":885,"children":887},{"id":886},"что-дальше",[888],{"type":26,"value":889},"Что дальше",{"type":21,"tag":125,"props":891,"children":892},{},[893,898,903,908],{"type":21,"tag":129,"props":894,"children":895},{},[896],{"type":26,"value":897},"Email-дайджест с аналитикой по трендам",{"type":21,"tag":129,"props":899,"children":900},{},[901],{"type":26,"value":902},"Расширение на больше площадок и регионов",{"type":21,"tag":129,"props":904,"children":905},{},[906],{"type":26,"value":907},"API для партнёров",{"type":21,"tag":129,"props":909,"children":910},{},[911],{"type":26,"value":912},"Предсказание доходности на основе исторических данных",{"type":21,"tag":914,"props":915,"children":916},"hr",{},[],{"title":8,"searchDepth":196,"depth":196,"links":918},[919,920,921,922,923,924,925],{"id":403,"depth":196,"text":406},{"id":419,"depth":196,"text":422},{"id":620,"depth":196,"text":623},{"id":666,"depth":196,"text":669},{"id":716,"depth":196,"text":719},{"id":767,"depth":196,"text":770},{"id":886,"depth":196,"text":889},"content:blog:2026-07-07-aklab-ai-development.md","blog\u002F2026-07-07-aklab-ai-development.md","blog\u002F2026-07-07-aklab-ai-development",{"_path":930,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":931,"description":932,"date":933,"tags":934,"externalLinks":936,"body":938,"_type":203,"_id":986,"_source":205,"_file":987,"_stem":988,"_extension":208},"\u002Fblog\u002F2026-03-13-help-people","Помочь можно только тому, кто готов","О желании приносить пользу и о том, почему это не всегда получается","2026-03-13",[935,16],"личное",{"telegram":937},"tg:\u002F\u002Fresolve?domain=strunimisli&post=11",{"type":18,"children":939,"toc":984},[940,945,950,955,960,965,970,975],{"type":21,"tag":22,"props":941,"children":942},{},[943],{"type":26,"value":944},"Иногда ловлю себя на мысли, что очень хочу приносить пользу. Не просто быть рядом, а именно — быть полезным. Помогать близким, да и вообще — людям. Делать так, чтобы кому-то стало легче, понятнее, лучше.",{"type":21,"tag":22,"props":946,"children":947},{},[948],{"type":26,"value":949},"Умею, казалось бы, немало. Могу сайт помочь сделать. Могу разобраться с ИИ, внедрить, прокачать процессы. Казалось бы — бери и делай, приноси пользу.",{"type":21,"tag":22,"props":951,"children":952},{},[953],{"type":26,"value":954},"Но что-то не складывается.",{"type":21,"tag":22,"props":956,"children":957},{},[958],{"type":26,"value":959},"И ведь знаю я эту мудрость, которую не первый раз слышу: «Люди сопротивляются новому, даже если понимают, что оно к лучшему». Знаю — и всё равно каждый раз удивляюсь. Вроде человек сам просил помощи. Вроде сам понимает, что надо что-то менять. А потом — тишина. Или отговорки. Или просто игнор.",{"type":21,"tag":22,"props":961,"children":962},{},[963],{"type":26,"value":964},"Может, конечно, это я где-то не так подхожу. Может, не умею правильно донести. Может, навязываюсь там, где не надо.",{"type":21,"tag":22,"props":966,"children":967},{},[968],{"type":26,"value":969},"А может, всё просто — помочь можно только тому, кто сам готов эту помощь принять. Не за руку тянуть, а просто быть рядом, когда спросят.",{"type":21,"tag":22,"props":971,"children":972},{},[973],{"type":26,"value":974},"Но всё равно — хочется. Чтобы получалось. Чтобы не зря.",{"type":21,"tag":976,"props":977,"children":978},"blockquote",{},[979],{"type":21,"tag":22,"props":980,"children":981},{},[982],{"type":26,"value":983},"«...и может быть станем, станем мы друг другу нужней...» — иногда эта строчка из 7Б застревает в голове. Вот бы так. Вот бы получалось.",{"title":8,"searchDepth":196,"depth":196,"links":985},[],"content:blog:2026-03-13-help-people.md","blog\u002F2026-03-13-help-people.md","blog\u002F2026-03-13-help-people",{"_path":990,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":991,"description":992,"date":993,"tags":994,"body":996,"_type":203,"_id":1118,"_source":205,"_file":1119,"_stem":1120,"_extension":208},"\u002Fblog\u002F2026-03-10-ai-changed-rules","AI изменил правила: как один разработчик заменяет команду","30 лет в IT научили меня одному — адаптируйся или проиграешь","2026-03-10",[14,16,995],"продуктивность",{"type":18,"children":997,"toc":1112},[998,1003,1009,1019,1029,1035,1078,1084,1089,1094,1100],{"type":21,"tag":22,"props":999,"children":1000},{},[1001],{"type":26,"value":1002},"За 30 лет в IT я видел много технологических революций. Но ни одна из них не была такой быстрой и глубокой, как AI.",{"type":21,"tag":34,"props":1004,"children":1006},{"id":1005},"было-стало",[1007],{"type":26,"value":1008},"Было \u002F Стало",{"type":21,"tag":22,"props":1010,"children":1011},{},[1012,1017],{"type":21,"tag":96,"props":1013,"children":1014},{},[1015],{"type":26,"value":1016},"Раньше:",{"type":26,"value":1018}," чтобы создать SaaS-продукт, нужна команда из 5-10 человек. Frontend, backend, дизайнер, DevOps, тестировщик.",{"type":21,"tag":22,"props":1020,"children":1021},{},[1022,1027],{"type":21,"tag":96,"props":1023,"children":1024},{},[1025],{"type":26,"value":1026},"Сейчас:",{"type":26,"value":1028}," один разработчик с AI-инструментами делает то же самое. Claude пишет код, GPT генерирует контент, Replicate создаёт изображения, а я собираю всё это в продукт.",{"type":21,"tag":34,"props":1030,"children":1032},{"id":1031},"мой-стек-продуктивности",[1033],{"type":26,"value":1034},"Мой стек продуктивности",{"type":21,"tag":125,"props":1036,"children":1037},{},[1038,1048,1058,1068],{"type":21,"tag":129,"props":1039,"children":1040},{},[1041,1046],{"type":21,"tag":96,"props":1042,"children":1043},{},[1044],{"type":26,"value":1045},"Claude Code",{"type":26,"value":1047}," — написание и рефакторинг кода",{"type":21,"tag":129,"props":1049,"children":1050},{},[1051,1056],{"type":21,"tag":96,"props":1052,"children":1053},{},[1054],{"type":26,"value":1055},"Yandex GPT",{"type":26,"value":1057}," — генерация контента на русском",{"type":21,"tag":129,"props":1059,"children":1060},{},[1061,1066],{"type":21,"tag":96,"props":1062,"children":1063},{},[1064],{"type":26,"value":1065},"GPT-4",{"type":26,"value":1067}," — сложные аналитические задачи",{"type":21,"tag":129,"props":1069,"children":1070},{},[1071,1076],{"type":21,"tag":96,"props":1072,"children":1073},{},[1074],{"type":26,"value":1075},"Replicate",{"type":26,"value":1077}," — генерация изображений",{"type":21,"tag":34,"props":1079,"children":1081},{"id":1080},"что-это-меняет",[1082],{"type":26,"value":1083},"Что это меняет",{"type":21,"tag":22,"props":1085,"children":1086},{},[1087],{"type":26,"value":1088},"Порог входа в создание продуктов снизился радикально. Теперь важна не размер команды, а качество идеи и способность быстро итерировать.",{"type":21,"tag":22,"props":1090,"children":1091},{},[1092],{"type":26,"value":1093},"Один человек с правильными инструментами может конкурировать с командами. Не потому что он лучше — потому что AI убрал bottleneck в исполнении.",{"type":21,"tag":34,"props":1095,"children":1097},{"id":1096},"главный-навык-2026-года",[1098],{"type":26,"value":1099},"Главный навык 2026 года",{"type":21,"tag":22,"props":1101,"children":1102},{},[1103,1105,1110],{"type":26,"value":1104},"Не программирование. Не дизайн. А умение правильно декомпозировать задачу и поставить её AI. Это новый вид инженерии — ",{"type":21,"tag":96,"props":1106,"children":1107},{},[1108],{"type":26,"value":1109},"инженерия промптов и процессов",{"type":26,"value":1111},".",{"title":8,"searchDepth":196,"depth":196,"links":1113},[1114,1115,1116,1117],{"id":1005,"depth":196,"text":1008},{"id":1031,"depth":196,"text":1034},{"id":1080,"depth":196,"text":1083},{"id":1096,"depth":196,"text":1099},"content:blog:2026-03-10-ai-changed-rules.md","blog\u002F2026-03-10-ai-changed-rules.md","blog\u002F2026-03-10-ai-changed-rules",{"_path":1122,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1123,"description":1124,"date":1125,"tags":1126,"externalLinks":1127,"body":1129,"_type":203,"_id":1158,"_source":205,"_file":1159,"_stem":1160,"_extension":208},"\u002Fblog\u002F2026-03-09-struny-myslej","Струны мыслей","Зачем я завёл личный канал — место для мыслей, музыки и честных записей","2026-03-09",[935],{"telegram":1128},"tg:\u002F\u002Fresolve?domain=strunimisli&post=2",{"type":18,"children":1130,"toc":1156},[1131,1136,1141,1146,1151],{"type":21,"tag":22,"props":1132,"children":1133},{},[1134],{"type":26,"value":1135},"Решил завести этот канал для себя. Не для проекта, не для аудитории — просто место, куда можно положить мысли, которые сами просятся наружу.",{"type":21,"tag":22,"props":1137,"children":1138},{},[1139],{"type":26,"value":1140},"Я Александр. Разработчик, предприниматель, музыкант. Странное сочетание, но мне кажется, именно оно делает меня тем, кто я есть. В голове постоянно что-то происходит — то про AI и технологии, то про то, как строить дела, то про то, как всё это не усложнять. А ещё есть музыка. Она занимает огромное место в моей душе, и здесь я буду делиться своими произведениями — не потому что они идеальные, а потому что они мои.",{"type":21,"tag":22,"props":1142,"children":1143},{},[1144],{"type":26,"value":1145},"Это не бизнес-канал. Это дневник. Записи о том, что думаю, пока еду куда-то или сижу ночью с гитарой. Мысли об AI, который меня завораживает. Размышления о стартапах — не как учить, а как самому ошибаться и учиться. Продуктивность — но без токсичного позитива, просто честно о том, что работает и что нет.",{"type":21,"tag":22,"props":1147,"children":1148},{},[1149],{"type":26,"value":1150},"А ещё здесь будет музыка. Не концертные записи и не продакшн уровня студии — живой звук, мысли в нотах, иногда просто настроение, которое вылилось в мелодию.",{"type":21,"tag":22,"props":1152,"children":1153},{},[1154],{"type":26,"value":1155},"Если это кому-то откликнется — хорошо. Если нет — тоже.",{"title":8,"searchDepth":196,"depth":196,"links":1157},[],"content:blog:2026-03-09-struny-myslej.md","blog\u002F2026-03-09-struny-myslej.md","blog\u002F2026-03-09-struny-myslej",{"_path":1162,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1163,"description":1164,"date":1165,"tags":1166,"body":1168,"_type":203,"_id":1328,"_source":205,"_file":1329,"_stem":1330,"_extension":208},"\u002Fblog\u002F2026-03-08-architecture","Архитектура TiROBOTS: как устроена AI-платформа","Vue 3 + Strapi 5 + Yandex GPT — как всё это работает вместе","2026-03-08",[1167,419,372,371],"tirobots",{"type":18,"children":1169,"toc":1322},[1170,1175,1181,1224,1230,1235,1258,1263,1269,1277,1282,1288],{"type":21,"tag":22,"props":1171,"children":1172},{},[1173],{"type":26,"value":1174},"Когда я начинал TiROBOTS, стояла задача: построить платформу, которая будет легко масштабироваться и поддерживаться одним разработчиком.",{"type":21,"tag":34,"props":1176,"children":1178},{"id":1177},"стек",[1179],{"type":26,"value":1180},"Стек",{"type":21,"tag":125,"props":1182,"children":1183},{},[1184,1194,1204,1214],{"type":21,"tag":129,"props":1185,"children":1186},{},[1187,1192],{"type":21,"tag":96,"props":1188,"children":1189},{},[1190],{"type":26,"value":1191},"Frontend:",{"type":26,"value":1193}," Vue 3 + Tailwind CSS",{"type":21,"tag":129,"props":1195,"children":1196},{},[1197,1202],{"type":21,"tag":96,"props":1198,"children":1199},{},[1200],{"type":26,"value":1201},"Backend:",{"type":26,"value":1203}," Strapi 5 (headless CMS)",{"type":21,"tag":129,"props":1205,"children":1206},{},[1207,1212],{"type":21,"tag":96,"props":1208,"children":1209},{},[1210],{"type":26,"value":1211},"AI:",{"type":26,"value":1213}," Yandex GPT для текстов, Replicate для изображений",{"type":21,"tag":129,"props":1215,"children":1216},{},[1217,1222],{"type":21,"tag":96,"props":1218,"children":1219},{},[1220],{"type":26,"value":1221},"Инфраструктура:",{"type":26,"value":1223}," PM2, Nginx, Ubuntu",{"type":21,"tag":34,"props":1225,"children":1227},{"id":1226},"почему-strapi",[1228],{"type":26,"value":1229},"Почему Strapi",{"type":21,"tag":22,"props":1231,"children":1232},{},[1233],{"type":26,"value":1234},"Strapi даёт из коробки:",{"type":21,"tag":125,"props":1236,"children":1237},{},[1238,1243,1248,1253],{"type":21,"tag":129,"props":1239,"children":1240},{},[1241],{"type":26,"value":1242},"REST и GraphQL API",{"type":21,"tag":129,"props":1244,"children":1245},{},[1246],{"type":26,"value":1247},"Админку для контент-менеджмента",{"type":21,"tag":129,"props":1249,"children":1250},{},[1251],{"type":26,"value":1252},"Систему ролей и прав",{"type":21,"tag":129,"props":1254,"children":1255},{},[1256],{"type":26,"value":1257},"Кастомные контроллеры",{"type":21,"tag":22,"props":1259,"children":1260},{},[1261],{"type":26,"value":1262},"Это позволило сосредоточиться на бизнес-логике, а не на бойлерплейте.",{"type":21,"tag":34,"props":1264,"children":1266},{"id":1265},"архитектура-ai-пайплайна",[1267],{"type":26,"value":1268},"Архитектура AI-пайплайна",{"type":21,"tag":691,"props":1270,"children":1272},{"code":1271},"Тема → Генерация текста (GPT) → Ревью (Главный редактор) → Генерация изображения (Replicate) → Публикация\n",[1273],{"type":21,"tag":241,"props":1274,"children":1275},{"__ignoreMap":8},[1276],{"type":26,"value":1271},{"type":21,"tag":22,"props":1278,"children":1279},{},[1280],{"type":26,"value":1281},"Каждый этап — отдельный сервис. Если AI сгенерировал плохой текст, главный редактор отправляет на переработку.",{"type":21,"tag":34,"props":1283,"children":1285},{"id":1284},"уроки",[1286],{"type":26,"value":1287},"Уроки",{"type":21,"tag":1289,"props":1290,"children":1291},"ol",{},[1292,1302,1312],{"type":21,"tag":129,"props":1293,"children":1294},{},[1295,1300],{"type":21,"tag":96,"props":1296,"children":1297},{},[1298],{"type":26,"value":1299},"Не усложняй раньше времени.",{"type":26,"value":1301}," Начал с монолита, разделю когда понадобится",{"type":21,"tag":129,"props":1303,"children":1304},{},[1305,1310],{"type":21,"tag":96,"props":1306,"children":1307},{},[1308],{"type":26,"value":1309},"AI нужен контекст.",{"type":26,"value":1311}," Чем больше контекста даёшь модели, тем лучше результат",{"type":21,"tag":129,"props":1313,"children":1314},{},[1315,1320],{"type":21,"tag":96,"props":1316,"children":1317},{},[1318],{"type":26,"value":1319},"Мониторинг критичен.",{"type":26,"value":1321}," Когда роботы работают 24\u002F7, нужно знать что происходит",{"title":8,"searchDepth":196,"depth":196,"links":1323},[1324,1325,1326,1327],{"id":1177,"depth":196,"text":1180},{"id":1226,"depth":196,"text":1229},{"id":1265,"depth":196,"text":1268},{"id":1284,"depth":196,"text":1287},"content:blog:2026-03-08-architecture.md","blog\u002F2026-03-08-architecture.md","blog\u002F2026-03-08-architecture",{"_path":1332,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1333,"description":1334,"date":1335,"tags":1336,"body":1338,"_type":203,"_id":1456,"_source":205,"_file":1457,"_stem":1458,"_extension":208},"\u002Fblog\u002F2026-03-07-how-it-started","Как я решил автоматизировать контент-маркетинг","От идеи до продакшена — один разработчик и один AI","2026-03-07",[14,1167,1337],"история",{"type":18,"children":1339,"toc":1449},[1340,1345,1351,1356,1362,1367,1373,1378,1401,1406,1412,1417,1440,1444],{"type":21,"tag":22,"props":1341,"children":1342},{},[1343],{"type":26,"value":1344},"Всё началось с простого наблюдения: ведение контент-каналов отнимает безумное количество времени. Придумать тему, написать текст, сделать картинку, опубликовать в нужное время — и так каждый день.",{"type":21,"tag":34,"props":1346,"children":1348},{"id":1347},"проблема",[1349],{"type":26,"value":1350},"Проблема",{"type":21,"tag":22,"props":1352,"children":1353},{},[1354],{"type":26,"value":1355},"Я вёл несколько Telegram-каналов и тратил на это 10-15 часов в неделю. При этом качество контента было нестабильным — когда устаёшь, посты получаются хуже.",{"type":21,"tag":34,"props":1357,"children":1359},{"id":1358},"идея",[1360],{"type":26,"value":1361},"Идея",{"type":21,"tag":22,"props":1363,"children":1364},{},[1365],{"type":26,"value":1366},"А что если AI может не просто помогать с текстом, а полностью вести канал? С определённым tone of voice, стратегией, расписанием?",{"type":21,"tag":34,"props":1368,"children":1370},{"id":1369},"первые-эксперименты",[1371],{"type":26,"value":1372},"Первые эксперименты",{"type":21,"tag":22,"props":1374,"children":1375},{},[1376],{"type":26,"value":1377},"Начал с простого — скрипт, который:",{"type":21,"tag":1289,"props":1379,"children":1380},{},[1381,1386,1391,1396],{"type":21,"tag":129,"props":1382,"children":1383},{},[1384],{"type":26,"value":1385},"Берёт тему из списка",{"type":21,"tag":129,"props":1387,"children":1388},{},[1389],{"type":26,"value":1390},"Генерирует текст через Yandex GPT",{"type":21,"tag":129,"props":1392,"children":1393},{},[1394],{"type":26,"value":1395},"Создаёт изображение через Replicate",{"type":21,"tag":129,"props":1397,"children":1398},{},[1399],{"type":26,"value":1400},"Публикует в Telegram по расписанию",{"type":21,"tag":22,"props":1402,"children":1403},{},[1404],{"type":26,"value":1405},"Результат превзошёл ожидания. Посты были не хуже написанных вручную, а иногда даже лучше — AI не устаёт и не теряет фокус.",{"type":21,"tag":34,"props":1407,"children":1409},{"id":1408},"от-скрипта-к-платформе",[1410],{"type":26,"value":1411},"От скрипта к платформе",{"type":21,"tag":22,"props":1413,"children":1414},{},[1415],{"type":26,"value":1416},"Один скрипт превратился в платформу TiROBOTS. Добавил:",{"type":21,"tag":125,"props":1418,"children":1419},{},[1420,1425,1430,1435],{"type":21,"tag":129,"props":1421,"children":1422},{},[1423],{"type":26,"value":1424},"Веб-интерфейс для управления",{"type":21,"tag":129,"props":1426,"children":1427},{},[1428],{"type":26,"value":1429},"Роль «Главного редактора» — задаёт стратегию",{"type":21,"tag":129,"props":1431,"children":1432},{},[1433],{"type":26,"value":1434},"Несколько AI-роботов с разными специализациями",{"type":21,"tag":129,"props":1436,"children":1437},{},[1438],{"type":26,"value":1439},"Аналитику эффективности",{"type":21,"tag":34,"props":1441,"children":1442},{"id":886},[1443],{"type":26,"value":889},{"type":21,"tag":22,"props":1445,"children":1446},{},[1447],{"type":26,"value":1448},"Сейчас TiROBOTS — это полноценная платформа для автоматизации контент-маркетинга. Но я вижу её будущее шире — как хаб AI-роботов для разных задач бизнеса.",{"title":8,"searchDepth":196,"depth":196,"links":1450},[1451,1452,1453,1454,1455],{"id":1347,"depth":196,"text":1350},{"id":1358,"depth":196,"text":1361},{"id":1369,"depth":196,"text":1372},{"id":1408,"depth":196,"text":1411},{"id":886,"depth":196,"text":889},"content:blog:2026-03-07-how-it-started.md","blog\u002F2026-03-07-how-it-started.md","blog\u002F2026-03-07-how-it-started",{"_path":1460,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1461,"description":1462,"date":1463,"tags":1464,"body":1465,"_type":203,"_id":1499,"_source":205,"_file":1500,"_stem":1501,"_extension":208},"\u002Fblog\u002F2020-01-01-deneg-kotorykh-net","Деньги, которых нет","Человек, который обналичил всё","2020-01-01",[1337,16],{"type":18,"children":1466,"toc":1497},[1467,1472,1477,1482,1487,1492],{"type":21,"tag":22,"props":1468,"children":1469},{},[1470],{"type":26,"value":1471},"У меня была беседа с человеком, который успешно играл на бирже и однажды решил вывести все деньги в кэш.",{"type":21,"tag":22,"props":1473,"children":1474},{},[1475],{"type":26,"value":1476},"Уж так он успешно до этого играл, что денег оказалось очень много. Вот прям реально несколько чемоданов.",{"type":21,"tag":22,"props":1478,"children":1479},{},[1480],{"type":26,"value":1481},"Это, как он рассказывал, тоже было недёшево – комиссия за обналичивание такой суммы была запредельной, но он всё же пошел на эту трату, так как был твёрд в своем решении. В этот момент, говорит, когда ему озвучили размер комиссионных, он в первый раз почувствовал укол какой-то плохо еще осознаваемой мысли.",{"type":21,"tag":22,"props":1483,"children":1484},{},[1485],{"type":26,"value":1486},"Ну вот, говорит, посидел на чемоданах пару дней, он пошел и купил за наличные панамеру. Мог, в принципе, какую угодно тачку купить, но эта вот попала под руку, как говорится. Эта покупка была похожа на небольшой перерасчет портфеля акций в связи с коррекцией рынка. Пока он не видел этих денег вживую, он по-другому ощущал их ценность, поэтому для него было открытием, что оказывается вымутить понамеру, а для держателя капитала это можно объяснить коррекцией.",{"type":21,"tag":22,"props":1488,"children":1489},{},[1490],{"type":26,"value":1491},"Потом он сделал еще несколько покупок, но быстро понял, что это тупо. Тупо держать такую большую сумму в чемоданах, да еще и собранных в одном месте. Тупо, что это место – квартира. Тупо вообще вся эта затея.",{"type":21,"tag":22,"props":1493,"children":1494},{},[1495],{"type":26,"value":1496},"Деньги были переведены обратно в безнал.",{"title":8,"searchDepth":196,"depth":196,"links":1498},[],"content:blog:2020-01-01-deneg-kotorykh-net.md","blog\u002F2020-01-01-deneg-kotorykh-net.md","blog\u002F2020-01-01-deneg-kotorykh-net",{"_path":1503,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1504,"description":1505,"date":1463,"tags":1506,"body":1507,"_type":203,"_id":1531,"_source":205,"_file":1532,"_stem":1533,"_extension":208},"\u002Fblog\u002F2020-01-01-dragotsennyj-kamen","Драгоценный камень в куче угля","Не нулевая вероятность",[1337,16],{"type":18,"children":1508,"toc":1529},[1509,1514,1519,1524],{"type":21,"tag":22,"props":1510,"children":1511},{},[1512],{"type":26,"value":1513},"Однажды я нашёл в куче угля маленький рубин. Дело было так. Еще с детства у меня в голове отложилась информация, что в угле можно найти много чего интересного. Например, ракушку древнего моллюска. Потом я узнал как появляются драгоценные камни и где их чаще всего находят. В принципе, для получения каменного угля и для получения драгоценных камней необходимы сходные процессы – высокое давление и температура. Поэтому, есть не нулевая вероятность найти в куче угля драгоценный камень.",{"type":21,"tag":22,"props":1515,"children":1516},{},[1517],{"type":26,"value":1518},"Дело происходило, когда я служил в армии. Привезли уголь и сгрузили его на территории склада, к которому мы были прикомандированы. И вот сидели мы как-то с пацанами рядом с этой кучей, я им рассказываю про эту вот не нулевую вероятность и у них на глазах начинаю искать. Поискав какое-то время, бросаю это занятие, ребята посмеиваются. Потом, на следующий день я опять присаживался рядом с кучей и сидел, внимательно просматривая каждый квадратный сантиметр. Прошло несколько дней. И вот однажды я нашёл! Маленький камушек рубинового цвета. Кто-то из парней предложил попробовать поцарапать стекло этим камушком. Мол, если расцарапает, то да действительно рубин. У меня было зеркальце и мы попробовали им поцарапать поверхность. Камешек уверенно прорезал борозду на стекле!",{"type":21,"tag":22,"props":1520,"children":1521},{},[1522],{"type":26,"value":1523},"К чему я это рассказываю?",{"type":21,"tag":22,"props":1525,"children":1526},{},[1527],{"type":26,"value":1528},"Я много раз был свидетелем того, как происходили события, вероятность которых была крайне мала.",{"title":8,"searchDepth":196,"depth":196,"links":1530},[],"content:blog:2020-01-01-dragotsennyj-kamen.md","blog\u002F2020-01-01-dragotsennyj-kamen.md","blog\u002F2020-01-01-dragotsennyj-kamen",{"_path":1535,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1536,"description":1537,"date":1463,"tags":1538,"body":1540,"_type":203,"_id":1549,"_source":205,"_file":1550,"_stem":1551,"_extension":208},"\u002Fblog\u002F2020-01-01-lyudi-pozhivshie","Люди, пожившие на этом свете","Дети помогают не сойти с ума",[1539,16],"размышление",{"type":18,"children":1541,"toc":1547},[1542],{"type":21,"tag":22,"props":1543,"children":1544},{},[1545],{"type":26,"value":1546},"Люди, пожившие на этом свете, наполнятся воспоминаниями и размышлениями о событиях, которые травмируют их психику. Дети помогают не сойти с ума. Это банальная мысль – рождаемость должна быть, как минимум на том же уровне, как и смертность, а лучше выше, чтобы цивилизация развивалась. Но функция детей не только продолжение рода, но и помощь взрослым. Без них взрослые бы «загнались».",{"title":8,"searchDepth":196,"depth":196,"links":1548},[],"content:blog:2020-01-01-lyudi-pozhivshie.md","blog\u002F2020-01-01-lyudi-pozhivshie.md","blog\u002F2020-01-01-lyudi-pozhivshie",{"_path":1553,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1554,"description":1555,"date":1463,"tags":1556,"body":1557,"_type":203,"_id":1581,"_source":205,"_file":1582,"_stem":1583,"_extension":208},"\u002Fblog\u002F2020-01-01-pustye-otnosheniya","Пустые, ненужные отношения","Когда барахлит компас, смотрите на звёзды",[1539],{"type":18,"children":1558,"toc":1579},[1559,1564,1569,1574],{"type":21,"tag":22,"props":1560,"children":1561},{},[1562],{"type":26,"value":1563},"Как так получилось, что то, что имело большую ценность, стало пустым и ненужным? Я пытаюсь разгадать, что это? К чему этот урок? И закончен ли он?",{"type":21,"tag":22,"props":1565,"children":1566},{},[1567],{"type":26,"value":1568},"Может то, что мне сейчас кажется пустым, попозже будет видеться обратным?",{"type":21,"tag":22,"props":1570,"children":1571},{},[1572],{"type":26,"value":1573},"Чтобы продвигаться, нам необходимо принимать решения. Каждое принятое решение – это смена, корректировка курса. И получается, что мой корабль попал в магнитную аномалию. Компас показывает удивительное…",{"type":21,"tag":22,"props":1575,"children":1576},{},[1577],{"type":26,"value":1578},"Когда барахлит компас, отложите в сторону карты. Просто внимательно смотрите вперед, чтобы вовремя обруливать препятствия и ждите ночей, чтобы ориентироваться по звёздам.",{"title":8,"searchDepth":196,"depth":196,"links":1580},[],"content:blog:2020-01-01-pustye-otnosheniya.md","blog\u002F2020-01-01-pustye-otnosheniya.md","blog\u002F2020-01-01-pustye-otnosheniya",{"_path":1585,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1586,"description":1587,"date":1463,"tags":1588,"body":1589,"_type":203,"_id":1657,"_source":205,"_file":1658,"_stem":1659,"_extension":208},"\u002Fblog\u002F2020-01-01-sobralsya-ya-umirat","Собрался я умирать, ребята…","Не переживайте, речь не о суициде",[1539],{"type":18,"children":1590,"toc":1655},[1591,1595,1600,1605,1610,1615,1620,1625,1630,1635,1640,1645,1650],{"type":21,"tag":22,"props":1592,"children":1593},{},[1594],{"type":26,"value":1586},{"type":21,"tag":22,"props":1596,"children":1597},{},[1598],{"type":26,"value":1599},"Не переживайте, речь не о суициде. Просто что-то сегодня замкнуло в моей голове и как-то стало очень понятно, что времени-то всё меньше! А я туплю.",{"type":21,"tag":22,"props":1601,"children":1602},{},[1603],{"type":26,"value":1604},"Задал себе такой вот вопрос – вот если умру прям сейчас, что останется недоделанным? К осуществлению каких целей, желаний я даже не приступал, откладывая их «до лучших времен»?",{"type":21,"tag":22,"props":1606,"children":1607},{},[1608],{"type":26,"value":1609},"Ну набралось у меня парочка, да и то, в принципе, не такие уж и критично важные… Я уже так давно живу с пониманием механизма материализации мысли, что все мои мечты уже сбылись. Только и успеваю придумывать что-нибудь новое, потом реализовывать.",{"type":21,"tag":22,"props":1611,"children":1612},{},[1613],{"type":26,"value":1614},"В конечном итоге, каждый получает то, что он хочет. Та ситуация, в которой вы сейчас находитесь, образовалась в результате ваших стремлений и связанных с ними решений.",{"type":21,"tag":22,"props":1616,"children":1617},{},[1618],{"type":26,"value":1619},"Если вы предприниматель со стажем, то вы меня поймете. Когда над тобой нет начальника, то вы сами определяете, чем вам и когда заниматься. Это классная штука – свобода, но есть обратная сторона у этой медали. Впрочем, это не медаль. Свободу не вручают и не выдают в кассе. Свободу берут. И вот я беру уже эту свободу с 2003 года, как открыл свое первое юрлицо. Сначала о чем-то просто мечтаю, если мечта манит, то меняю статус «мечта» на «цель», потом делаю шаг на пути к ней, другой, третий и всегда (!) обнаруживаю, что мне помогают. Разное в помощь. Люди, конечно же, в первую очередь. Но частенько случаются случайности, типа того, как подходишь к пешеходному переходу и в этот момент, как раз загорается зеленый свет. Ну ладно, речь не о вселенской помощи.",{"type":21,"tag":22,"props":1621,"children":1622},{},[1623],{"type":26,"value":1624},"Я понял, что не так уж много, как оказалось, у меня таких мечт, которые я откладывал в долгий ящик… А мечты, которые я не успел воплотить – это и не мечты вовсе, а просто видение будущего. Вот будут еще дирижабли летать повсеместно, увидите сами!",{"type":21,"tag":22,"props":1626,"children":1627},{},[1628],{"type":26,"value":1629},"Да и хрен с ними, мне тут подумалось, с этими неисполненными мечтами. Отпустил их и понял… что готов умереть. Ничего такого страшного не произойдет. Я везде, где надо, продублировал доступы надежным людям к всяким там сайтам и панелям управления, ну а то, что загнется без меня, значит не так и нужно было…",{"type":21,"tag":22,"props":1631,"children":1632},{},[1633],{"type":26,"value":1634},"Эта вот «готовность» меня ошеломила.",{"type":21,"tag":22,"props":1636,"children":1637},{},[1638],{"type":26,"value":1639},"А вот дальше пришло осознание, что это есть главное отличие нас, мужчин, от женщин. Женщина должна жить ради жизни, а от мужчины требуется готовность умереть ради неё.",{"type":21,"tag":22,"props":1641,"children":1642},{},[1643],{"type":26,"value":1644},"Только не надо путать готовность и желание)",{"type":21,"tag":22,"props":1646,"children":1647},{},[1648],{"type":26,"value":1649},"Новый уровень свободы.",{"type":21,"tag":22,"props":1651,"children":1652},{},[1653],{"type":26,"value":1654},"А в ситуации, когда внутри нас борются два противоречивых желания, побеждает тот волк, которого мы лучше кормим",{"title":8,"searchDepth":196,"depth":196,"links":1656},[],"content:blog:2020-01-01-sobralsya-ya-umirat.md","blog\u002F2020-01-01-sobralsya-ya-umirat.md","blog\u002F2020-01-01-sobralsya-ya-umirat",{"_path":1661,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1662,"description":1663,"date":1463,"tags":1664,"body":1665,"_type":203,"_id":1704,"_source":205,"_file":1705,"_stem":1706,"_extension":208},"\u002Fblog\u002F2020-01-01-topchemy-na-meste","Топчемся на месте или двигаемся?","Стремление к гармонии — главный императив",[1539],{"type":18,"children":1666,"toc":1702},[1667,1672,1677,1682,1687,1692,1697],{"type":21,"tag":22,"props":1668,"children":1669},{},[1670],{"type":26,"value":1671},"Мы представляем из себя то, о чём думаем целыми днями. В каждом мгновении, которое мы проживаем, мы имеем возможность поменять направление нашего движения. Конечно, есть такое понятие, как инерция и поэтому после поворота руля, корабль еще всё равно двигается в прежнем направлении. Кроме того, иногда нужно сменить курс, чтобы обогнуть какое-то препятствие и в этот момент, со стороны кажется, что мы двигаемся совсем не в том направлении, в котором надо бы. Мы не плывем по течению, не плывем против течения, мы плывём к цели! Лавируя между кусками дерьма, плывущиму навстречу, мы можем даже в какой-то момент оказаться на месте, где уже были раньше и тогда кто-то имеет право сказать, что мы топчемся на месте. Но! Мы живы, мы вместе, а значит всё хорошо. Главное не забывать о цели. Вот о ней я и хочу порассуждать.",{"type":21,"tag":22,"props":1673,"children":1674},{},[1675],{"type":26,"value":1676},"За последнее время я все чаще дискутирую с разными людьми о цели бизнеса. В уставе каждой компании сказано, что цель бизнеса – прибыль. Поэтому, бизнесмены сначала очень удивляются и смотрят на меня, как на дурака, когда я им заявляю, что никогда не ставил прибыль во главу угла. Я хочу большего, чем просто прибыль. Стремление к гармонии – вот главный мой императив. А что такое гармония? Универсального ответа, справедливого для всех, наверное нет. Да я и не хочу говорить за всех. Скажу за себя – гармония это когда совесть не болит. А у меня она не болит. Я знаю, что есть за мной грешки, типа не заплаченных вовремя пенсионных взносов или налогов, но всё равно не болит! И не потому, что знаю, как распределяются эти налоги, а потому знаю, что я, как единица, приношу ПОЛЬЗУ окружающим меня людям. Польза эта выражается по разному. Это может быть быстрая реакция на сломавшийся сервер, может просто подбадривающие слова, а может и обратное – вот к примеру, вчера я сознательно отключил сервер одной фирме, которая уже пять месяцев не платит за хостинг. У нас там такие отношения с владельцами компании, что я могу быть спокоен – эти неоплаченные месяцы в конце концов будут всё же оплачены. Я и не отключал, просто напоминал об этом периодически управляющим. У меня есть понимание, что тот факт, что я всё же отключил сервер, создало проблемы для управляющих и, может быть, их даже могут уволить. Но уволят их за халатность, а это значит эта компания получит шанс стать лучше (если, конечно, на их место придут менее халатные люди). А те, кого уволят, получат шанс задуматься над своими ошибками и больше их не совершать.",{"type":21,"tag":22,"props":1678,"children":1679},{},[1680],{"type":26,"value":1681},"Кто-то согласен работать с мудаками, лишь бы они деньги платили. Они любят говорить фразу: «Ничего личного – это бизнес». А я не такой! Как только я вычисляю мудака, я стремлюсь порвать с ним отношения. И не жалко мне незаработанных миллионов!",{"type":21,"tag":22,"props":1683,"children":1684},{},[1685],{"type":26,"value":1686},"Такая стратегия возможна, только когда есть на кого опереться. Я и опираюсь. Опираюсь на родителей, живя со своей женой в одной с ними квартире. Опираюсь на жену, когда не приношу по несколько месяцев денег в дом и мы оплачиваем продукты и секции там всякие, на которые ходит ребенок, её зарплатой. Опираюсь на друзей, когда прихожу к ним, чтобы погреться немного.",{"type":21,"tag":22,"props":1688,"children":1689},{},[1690],{"type":26,"value":1691},"Опираюсь и знаю, что моя стратегия, как бумеранг, приносит мне счастье. Не контактировать с мудаками – это ли не счастье? Не счастье ли иметь теплые дружественные отношения с клиентами? А не счастье ли, когда твой сотрудник, говорит самокритично о своей работе? Я уже долго следую своей стратегии и это дает плоды – мудаков в моем близком окружении нет. Я счастлив) А еще я убежден, что следуя этой стратегии дальше, наша с тобой, Светик, фирма наберет обороты, достаточные, чтобы обрести финансовую независимость.",{"type":21,"tag":22,"props":1693,"children":1694},{},[1695],{"type":26,"value":1696},"Мы не топчемся на месте. Мы развиваемся и этот процесс не всегда напоминает рост дерева. Потому что мы не деревья. Мы делаем ошибки, учимся на них. Или не учимся и тогда, ситуации повторяются, пока мы не научимся.",{"type":21,"tag":22,"props":1698,"children":1699},{},[1700],{"type":26,"value":1701},"У меня спрашивают, трудно ли быть предпринимателем. Надо просто любить людей, отвечаю я им. И вот этому-то и приходится всё время учиться. Как только научишься немного, обретешь внутренний стержень. Учась дальше, обретаешь надежную команду. Продвигаясь дальше в своем обучении, обретаешь хороших клиентов. А там и благоденствие недалеко!",{"title":8,"searchDepth":196,"depth":196,"links":1703},[],"content:blog:2020-01-01-topchemy-na-meste.md","blog\u002F2020-01-01-topchemy-na-meste.md","blog\u002F2020-01-01-topchemy-na-meste",[1708,1838,1907,2062,2168,2262,2368],{"_path":1709,"_dir":1710,"_draft":7,"_partial":7,"_locale":8,"title":1711,"description":1712,"slug":1713,"date":1714,"featured":7,"tech":1715,"color":1721,"emoji":1722,"url":1723,"status":1724,"body":1725,"_type":203,"_id":1835,"_source":205,"_file":1836,"_stem":1837,"_extension":208},"\u002Fprojects\u002Favtopoliv69","projects","Автополив 69","Сайт-визитка для бизнеса по автоматическому поливу в Твери. Дизайн, разработка, SEO за один день.","avtopoliv69","2026-03-18",[1716,1717,1718,1719,1720],"Vue.js","Tailwind CSS","Express","Nginx","AI Images","green","💧","https:\u002F\u002Favtopoliv69.ru","Запущен",{"type":18,"children":1726,"toc":1828},[1727,1733,1738,1744,1749,1755,1808,1812,1817,1823],{"type":21,"tag":34,"props":1728,"children":1730},{"id":1729},"что-это",[1731],{"type":26,"value":1732},"Что это",{"type":21,"tag":22,"props":1734,"children":1735},{},[1736],{"type":26,"value":1737},"Лендинг + блог + админка для компании по монтажу систем автоматического полива в Твери. Полный цикл: от дизайна до продакшена за один день.",{"type":21,"tag":34,"props":1739,"children":1741},{"id":1740},"задача",[1742],{"type":26,"value":1743},"Задача",{"type":21,"tag":22,"props":1745,"children":1746},{},[1747],{"type":26,"value":1748},"Заказчику нужен сайт, который привлекает клиентов из поиска и даёт возможность оставить заявку. Без CMS — простое управление через админку.",{"type":21,"tag":34,"props":1750,"children":1752},{"id":1751},"решение",[1753],{"type":26,"value":1754},"Решение",{"type":21,"tag":125,"props":1756,"children":1757},{},[1758,1768,1778,1788,1798],{"type":21,"tag":129,"props":1759,"children":1760},{},[1761,1766],{"type":21,"tag":96,"props":1762,"children":1763},{},[1764],{"type":26,"value":1765},"Лендинг",{"type":26,"value":1767}," — портфолио, услуги, калькулятор стоимости, FAQ, форма заявки",{"type":21,"tag":129,"props":1769,"children":1770},{},[1771,1776],{"type":21,"tag":96,"props":1772,"children":1773},{},[1774],{"type":26,"value":1775},"Блог",{"type":26,"value":1777}," — статьи для SEO-трафика",{"type":21,"tag":129,"props":1779,"children":1780},{},[1781,1786],{"type":21,"tag":96,"props":1782,"children":1783},{},[1784],{"type":26,"value":1785},"Админка",{"type":26,"value":1787}," — управление заявками и публикациями на отдельном поддомене a.avtopoliv69.ru",{"type":21,"tag":129,"props":1789,"children":1790},{},[1791,1796],{"type":21,"tag":96,"props":1792,"children":1793},{},[1794],{"type":26,"value":1795},"AI-изображения",{"type":26,"value":1797}," — hero, портфолио и иллюстрации сгенерированы через Replicate FLUX",{"type":21,"tag":129,"props":1799,"children":1800},{},[1801,1806],{"type":21,"tag":96,"props":1802,"children":1803},{},[1804],{"type":26,"value":1805},"Калькулятор",{"type":26,"value":1807}," — расчёт стоимости по реальной комплектации (Hunter, Aquario, ПНД)",{"type":21,"tag":34,"props":1809,"children":1810},{"id":1177},[1811],{"type":26,"value":1180},{"type":21,"tag":22,"props":1813,"children":1814},{},[1815],{"type":26,"value":1816},"Vue 3 + Vite + Tailwind CSS (фронт), Express (API), Nginx + PM2 + Certbot (деплой). Шаблон на основе собственного решения для standart-tver.ru.",{"type":21,"tag":34,"props":1818,"children":1820},{"id":1819},"результат",[1821],{"type":26,"value":1822},"Результат",{"type":21,"tag":22,"props":1824,"children":1825},{},[1826],{"type":26,"value":1827},"Lighthouse: SEO 100, Best Practices 100, Accessibility 95. SSL, HTTP\u002F2, structured data (LocalBusiness + FAQPage), динамический sitemap. 14 коммитов от идеи до продакшена.",{"title":8,"searchDepth":196,"depth":196,"links":1829},[1830,1831,1832,1833,1834],{"id":1729,"depth":196,"text":1732},{"id":1740,"depth":196,"text":1743},{"id":1751,"depth":196,"text":1754},{"id":1177,"depth":196,"text":1180},{"id":1819,"depth":196,"text":1822},"content:projects:avtopoliv69.md","projects\u002Favtopoliv69.md","projects\u002Favtopoliv69",{"_path":1839,"_dir":1710,"_draft":7,"_partial":7,"_locale":8,"title":1840,"description":1841,"slug":1842,"date":1843,"featured":7,"tech":1844,"color":1847,"emoji":1848,"status":1849,"body":1850,"_type":203,"_id":1904,"_source":205,"_file":1905,"_stem":1906,"_extension":208},"\u002Fprojects\u002Fai-assistant","AI-Ассистент продуктолога","Два AI-робота ведут диалог и прорабатывают идеи развития продукта.","ai-assistant","2025-03-01",[1845,1065,1846],"Claude","Node.js","purple","💡","Скоро на TiROBOTS",{"type":18,"children":1851,"toc":1899},[1852,1856,1861,1867,1890,1894],{"type":21,"tag":34,"props":1853,"children":1854},{"id":1729},[1855],{"type":26,"value":1732},{"type":21,"tag":22,"props":1857,"children":1858},{},[1859],{"type":26,"value":1860},"Два AI-робота, которые ведут диалог и прорабатывают идеи развития продукта. Оценивают экономическую целесообразность и техническую воплотимость.",{"type":21,"tag":34,"props":1862,"children":1864},{"id":1863},"как-работает",[1865],{"type":26,"value":1866},"Как работает",{"type":21,"tag":1289,"props":1868,"children":1869},{},[1870,1875,1880,1885],{"type":21,"tag":129,"props":1871,"children":1872},{},[1873],{"type":26,"value":1874},"Вы задаёте направление — например, «хочу добавить монетизацию в продукт»",{"type":21,"tag":129,"props":1876,"children":1877},{},[1878],{"type":26,"value":1879},"Робот-генератор предлагает идеи",{"type":21,"tag":129,"props":1881,"children":1882},{},[1883],{"type":26,"value":1884},"Робот-критик оценивает каждую: бизнес-модель, сложность, сроки",{"type":21,"tag":129,"props":1886,"children":1887},{},[1888],{"type":26,"value":1889},"Результат — приоритизированный список с оценками",{"type":21,"tag":34,"props":1891,"children":1892},{"id":1819},[1893],{"type":26,"value":1822},{"type":21,"tag":22,"props":1895,"children":1896},{},[1897],{"type":26,"value":1898},"25 проработанных идей за 5 часов. Каждая с оценкой целесообразности и планом реализации.",{"title":8,"searchDepth":196,"depth":196,"links":1900},[1901,1902,1903],{"id":1729,"depth":196,"text":1732},{"id":1863,"depth":196,"text":1866},{"id":1819,"depth":196,"text":1822},"content:projects:ai-assistant.md","projects\u002Fai-assistant.md","projects\u002Fai-assistant",{"_path":1908,"_dir":1710,"_draft":7,"_partial":7,"_locale":8,"title":1909,"description":1910,"slug":370,"date":1843,"featured":1911,"tech":1912,"color":1916,"emoji":1917,"url":1918,"status":1919,"body":1920,"_type":203,"_id":2059,"_source":205,"_file":2060,"_stem":2061,"_extension":208},"\u002Fprojects\u002Faklab","AKLAB","AI-аналитика коммерческой недвижимости. 10 парсеров, автоматический скоринг, дайджесты.",true,[1716,1913,1846,1914,1915],"Strapi 5","Playwright","SQLite","orange","🏗️","https:\u002F\u002Faklab.tirobots.ru","В разработке",{"type":18,"children":1921,"toc":2053},[1922,1926,1931,1935,1987,1991,2042,2048],{"type":21,"tag":34,"props":1923,"children":1924},{"id":1729},[1925],{"type":26,"value":1732},{"type":21,"tag":22,"props":1927,"children":1928},{},[1929],{"type":26,"value":1930},"Платформа для поиска недооценённых объектов коммерческой недвижимости. Парсеры собирают лоты с аукционов и торговых площадок, анализатор сравнивает с рыночными эталонами, система фокуса выделяет лучшие варианты.",{"type":21,"tag":34,"props":1932,"children":1933},{"id":1863},[1934],{"type":26,"value":1866},{"type":21,"tag":125,"props":1936,"children":1937},{},[1938,1948,1957,1967,1977],{"type":21,"tag":129,"props":1939,"children":1940},{},[1941,1946],{"type":21,"tag":96,"props":1942,"children":1943},{},[1944],{"type":26,"value":1945},"10 парсеров",{"type":26,"value":1947}," — собирают лоты с torgi.gov, m-ets, alfalot, sberbank, invest-mosreg и других площадок",{"type":21,"tag":129,"props":1949,"children":1950},{},[1951,1955],{"type":21,"tag":96,"props":1952,"children":1953},{},[1954],{"type":26,"value":522},{"type":26,"value":1956}," — сравнивает цены с эталонами по региону и типу недвижимости",{"type":21,"tag":129,"props":1958,"children":1959},{},[1960,1965],{"type":21,"tag":96,"props":1961,"children":1962},{},[1963],{"type":26,"value":1964},"Focus engine",{"type":26,"value":1966}," — скоринг и ранжирование объектов по привлекательности",{"type":21,"tag":129,"props":1968,"children":1969},{},[1970,1975],{"type":21,"tag":96,"props":1971,"children":1972},{},[1973],{"type":26,"value":1974},"Дайджест",{"type":26,"value":1976}," — ежедневная рассылка новых объектов на email",{"type":21,"tag":129,"props":1978,"children":1979},{},[1980,1985],{"type":21,"tag":96,"props":1981,"children":1982},{},[1983],{"type":26,"value":1984},"Photo-fetcher",{"type":26,"value":1986}," — автоматически подтягивает фотографии",{"type":21,"tag":34,"props":1988,"children":1989},{"id":419},[1990],{"type":26,"value":422},{"type":21,"tag":125,"props":1992,"children":1993},{},[1994,2003,2012,2022,2032],{"type":21,"tag":129,"props":1995,"children":1996},{},[1997,2001],{"type":21,"tag":96,"props":1998,"children":1999},{},[2000],{"type":26,"value":1201},{"type":26,"value":2002}," Strapi 5 + SQLite (15 PM2-процессов)",{"type":21,"tag":129,"props":2004,"children":2005},{},[2006,2010],{"type":21,"tag":96,"props":2007,"children":2008},{},[2009],{"type":26,"value":1191},{"type":26,"value":2011}," Vue 3 + Vite + Tailwind CSS",{"type":21,"tag":129,"props":2013,"children":2014},{},[2015,2020],{"type":21,"tag":96,"props":2016,"children":2017},{},[2018],{"type":26,"value":2019},"Парсеры:",{"type":26,"value":2021}," Playwright\u002Ffetch, двухфазный парсинг (scan → fetchDetails)",{"type":21,"tag":129,"props":2023,"children":2024},{},[2025,2030],{"type":21,"tag":96,"props":2026,"children":2027},{},[2028],{"type":26,"value":2029},"Очередь:",{"type":26,"value":2031}," @aklab\u002Fsqlite-queue",{"type":21,"tag":129,"props":2033,"children":2034},{},[2035,2040],{"type":21,"tag":96,"props":2036,"children":2037},{},[2038],{"type":26,"value":2039},"Shared libs:",{"type":26,"value":2041}," @aklab\u002Fparse-rules, @aklab\u002Fservice-shared",{"type":21,"tag":34,"props":2043,"children":2045},{"id":2044},"для-кого",[2046],{"type":26,"value":2047},"Для кого",{"type":21,"tag":22,"props":2049,"children":2050},{},[2051],{"type":26,"value":2052},"Инвесторы в коммерческую недвижимость — склады, офисы, земля, квартиры. Платформа находит объекты дешевле рынка и присылает подборку.",{"title":8,"searchDepth":196,"depth":196,"links":2054},[2055,2056,2057,2058],{"id":1729,"depth":196,"text":1732},{"id":1863,"depth":196,"text":1866},{"id":419,"depth":196,"text":422},{"id":2044,"depth":196,"text":2047},"content:projects:aklab.md","projects\u002Faklab.md","projects\u002Faklab",{"_path":2063,"_dir":1710,"_draft":7,"_partial":7,"_locale":8,"title":2064,"description":2065,"slug":1167,"date":2066,"featured":1911,"tech":2067,"color":1721,"emoji":2069,"url":2070,"status":1919,"body":2071,"_type":203,"_id":2165,"_source":205,"_file":2166,"_stem":2167,"_extension":208},"\u002Fprojects\u002Ftirobots","TiROBOTS","Платформа автоматизации контент-маркетинга. Главный редактор + AI-роботы создают посты автономно.","2025-01-01",[1716,1913,1846,1055,1075,2068],"Redis","🤖","https:\u002F\u002Ftirobots.ru",{"type":18,"children":2072,"toc":2158},[2073,2077,2082,2086,2091,2095,2138,2142,2147,2153],{"type":21,"tag":34,"props":2074,"children":2075},{"id":1729},[2076],{"type":26,"value":1732},{"type":21,"tag":22,"props":2078,"children":2079},{},[2080],{"type":26,"value":2081},"Платформа автоматизации контент-маркетинга. Главный редактор задаёт стратегию — AI-роботы создают посты, генерируют изображения, публикуют в соцсети.",{"type":21,"tag":34,"props":2083,"children":2084},{"id":1347},[2085],{"type":26,"value":1350},{"type":21,"tag":22,"props":2087,"children":2088},{},[2089],{"type":26,"value":2090},"Ведение контент-каналов отнимает 10+ часов в неделю. Нужно придумывать темы, писать тексты, делать картинки, публиковать в нужное время.",{"type":21,"tag":34,"props":2092,"children":2093},{"id":1751},[2094],{"type":26,"value":1754},{"type":21,"tag":125,"props":2096,"children":2097},{},[2098,2108,2118,2128],{"type":21,"tag":129,"props":2099,"children":2100},{},[2101,2106],{"type":21,"tag":96,"props":2102,"children":2103},{},[2104],{"type":26,"value":2105},"Главный редактор",{"type":26,"value":2107}," — задаёт темы, tone of voice, расписание",{"type":21,"tag":129,"props":2109,"children":2110},{},[2111,2116],{"type":21,"tag":96,"props":2112,"children":2113},{},[2114],{"type":26,"value":2115},"AI-роботы",{"type":26,"value":2117}," — генерируют тексты через Yandex GPT, изображения через Replicate",{"type":21,"tag":129,"props":2119,"children":2120},{},[2121,2126],{"type":21,"tag":96,"props":2122,"children":2123},{},[2124],{"type":26,"value":2125},"Автопостинг",{"type":26,"value":2127}," — публикация в Telegram, VK, другие каналы по расписанию",{"type":21,"tag":129,"props":2129,"children":2130},{},[2131,2136],{"type":21,"tag":96,"props":2132,"children":2133},{},[2134],{"type":26,"value":2135},"Аналитика",{"type":26,"value":2137}," — отслеживание эффективности постов",{"type":21,"tag":34,"props":2139,"children":2140},{"id":1819},[2141],{"type":26,"value":1822},{"type":21,"tag":22,"props":2143,"children":2144},{},[2145],{"type":26,"value":2146},"Экономия 10+ часов в неделю на создании контента. Роботы работают 24\u002F7, поддерживают единый стиль и тональность.",{"type":21,"tag":34,"props":2148,"children":2150},{"id":2149},"планы",[2151],{"type":26,"value":2152},"Планы",{"type":21,"tag":22,"props":2154,"children":2155},{},[2156],{"type":26,"value":2157},"Трансформация из AI-редакции в хаб роботов разного назначения — торговые, аналитические, коммуникационные.",{"title":8,"searchDepth":196,"depth":196,"links":2159},[2160,2161,2162,2163,2164],{"id":1729,"depth":196,"text":1732},{"id":1347,"depth":196,"text":1350},{"id":1751,"depth":196,"text":1754},{"id":1819,"depth":196,"text":1822},{"id":2149,"depth":196,"text":2152},"content:projects:tirobots.md","projects\u002Ftirobots.md","projects\u002Ftirobots",{"_path":2169,"_dir":1710,"_draft":7,"_partial":7,"_locale":8,"title":2170,"description":2171,"slug":2172,"date":2173,"featured":1911,"tech":2174,"color":2175,"emoji":2176,"url":2177,"status":2178,"body":2179,"_type":203,"_id":2259,"_source":205,"_file":2260,"_stem":2261,"_extension":208},"\u002Fprojects\u002Fsamurai","Самурай","AI-платформа для автосервисов: заказ-наряды, клиенты, аналитика с Yandex GPT.","samurai","2024-06-01",[1716,1913,1055,1846],"blue","🛠️","https:\u002F\u002Fti-soft.ru\u002Fauto-service-ai","Продакшн",{"type":18,"children":2180,"toc":2253},[2181,2185,2190,2194,2199,2203,2244,2248],{"type":21,"tag":34,"props":2182,"children":2183},{"id":1729},[2184],{"type":26,"value":1732},{"type":21,"tag":22,"props":2186,"children":2187},{},[2188],{"type":26,"value":2189},"Система управления автосервисом с AI-ассистентом. Заказ-наряды, карточки клиентов, история обслуживания, аналитика.",{"type":21,"tag":34,"props":2191,"children":2192},{"id":1347},[2193],{"type":26,"value":1350},{"type":21,"tag":22,"props":2195,"children":2196},{},[2197],{"type":26,"value":2198},"Автосервисы ведут учёт в тетрадках или громоздких 1С-системах. Документы создаются вручную, информация теряется.",{"type":21,"tag":34,"props":2200,"children":2201},{"id":1751},[2202],{"type":26,"value":1754},{"type":21,"tag":125,"props":2204,"children":2205},{},[2206,2216,2226,2235],{"type":21,"tag":129,"props":2207,"children":2208},{},[2209,2214],{"type":21,"tag":96,"props":2210,"children":2211},{},[2212],{"type":26,"value":2213},"Заказ-наряды",{"type":26,"value":2215}," — AI генерирует описание работ на основе жалобы клиента",{"type":21,"tag":129,"props":2217,"children":2218},{},[2219,2224],{"type":21,"tag":96,"props":2220,"children":2221},{},[2222],{"type":26,"value":2223},"Карточки клиентов",{"type":26,"value":2225}," — полная история обслуживания каждого автомобиля",{"type":21,"tag":129,"props":2227,"children":2228},{},[2229,2233],{"type":21,"tag":96,"props":2230,"children":2231},{},[2232],{"type":26,"value":2135},{"type":26,"value":2234}," — выручка, загрузка, популярные услуги",{"type":21,"tag":129,"props":2236,"children":2237},{},[2238,2242],{"type":21,"tag":96,"props":2239,"children":2240},{},[2241],{"type":26,"value":1055},{"type":26,"value":2243}," — интеллектуальное создание документов и рекомендации",{"type":21,"tag":34,"props":2245,"children":2246},{"id":1819},[2247],{"type":26,"value":1822},{"type":21,"tag":22,"props":2249,"children":2250},{},[2251],{"type":26,"value":2252},"Создание заказ-наряда занимает 2 минуты вместо 15. Вся история клиентов в одном месте.",{"title":8,"searchDepth":196,"depth":196,"links":2254},[2255,2256,2257,2258],{"id":1729,"depth":196,"text":1732},{"id":1347,"depth":196,"text":1350},{"id":1751,"depth":196,"text":1754},{"id":1819,"depth":196,"text":1822},"content:projects:samurai.md","projects\u002Fsamurai.md","projects\u002Fsamurai",{"_path":2263,"_dir":1710,"_draft":7,"_partial":7,"_locale":8,"title":2264,"description":2265,"slug":2266,"date":2267,"featured":1911,"tech":2268,"color":2272,"emoji":2273,"url":2274,"status":2178,"body":2275,"_type":203,"_id":2365,"_source":205,"_file":2366,"_stem":2367,"_extension":208},"\u002Fprojects\u002Ftsl-bot","TSL Bot","Торговый бот с Trailing Stop Loss для Binance. Асинхронная архитектура, 24\u002F7.","tsl-bot","2024-01-01",[1846,2269,2270,2068,2271],"Express.js","Binance API","WebSocket","yellow","📈","https:\u002F\u002Fti-soft.ru\u002Fcase-binance-tsl",{"type":18,"children":2276,"toc":2359},[2277,2281,2286,2290,2295,2299,2350,2354],{"type":21,"tag":34,"props":2278,"children":2279},{"id":1729},[2280],{"type":26,"value":1732},{"type":21,"tag":22,"props":2282,"children":2283},{},[2284],{"type":26,"value":2285},"Торговый бот для криптовалютной биржи Binance с алгоритмом Trailing Stop Loss. Торгует 24\u002F7 без эмоций.",{"type":21,"tag":34,"props":2287,"children":2288},{"id":1347},[2289],{"type":26,"value":1350},{"type":21,"tag":22,"props":2291,"children":2292},{},[2293],{"type":26,"value":2294},"Ручная торговля требует постоянного мониторинга. Эмоции приводят к убыткам. Невозможно следить за рынком 24\u002F7.",{"type":21,"tag":34,"props":2296,"children":2297},{"id":1751},[2298],{"type":26,"value":1754},{"type":21,"tag":125,"props":2300,"children":2301},{},[2302,2312,2322,2331,2340],{"type":21,"tag":129,"props":2303,"children":2304},{},[2305,2310],{"type":21,"tag":96,"props":2306,"children":2307},{},[2308],{"type":26,"value":2309},"Trailing Stop Loss",{"type":26,"value":2311}," — динамический стоп-лосс, который движется за ценой",{"type":21,"tag":129,"props":2313,"children":2314},{},[2315,2320],{"type":21,"tag":96,"props":2316,"children":2317},{},[2318],{"type":26,"value":2319},"Асинхронная архитектура",{"type":26,"value":2321}," — обработка множества пар одновременно",{"type":21,"tag":129,"props":2323,"children":2324},{},[2325,2329],{"type":21,"tag":96,"props":2326,"children":2327},{},[2328],{"type":26,"value":2271},{"type":26,"value":2330}," — реалтайм-данные с биржи",{"type":21,"tag":129,"props":2332,"children":2333},{},[2334,2338],{"type":21,"tag":96,"props":2335,"children":2336},{},[2337],{"type":26,"value":2068},{"type":26,"value":2339}," — кэширование состояния и очереди ордеров",{"type":21,"tag":129,"props":2341,"children":2342},{},[2343,2348],{"type":21,"tag":96,"props":2344,"children":2345},{},[2346],{"type":26,"value":2347},"Горизонтальное масштабирование",{"type":26,"value":2349}," — добавление новых стратегий без остановки",{"type":21,"tag":34,"props":2351,"children":2352},{"id":1819},[2353],{"type":26,"value":1822},{"type":21,"tag":22,"props":2355,"children":2356},{},[2357],{"type":26,"value":2358},"Робот торгует без перерывов, фиксирует прибыль по алгоритму, минимизирует потери. Человек задаёт стратегию — бот исполняет.",{"title":8,"searchDepth":196,"depth":196,"links":2360},[2361,2362,2363,2364],{"id":1729,"depth":196,"text":1732},{"id":1347,"depth":196,"text":1350},{"id":1751,"depth":196,"text":1754},{"id":1819,"depth":196,"text":1822},"content:projects:tsl-bot.md","projects\u002Ftsl-bot.md","projects\u002Ftsl-bot",{"_path":2369,"_dir":1710,"_draft":7,"_partial":7,"_locale":8,"title":2370,"description":2371,"slug":2372,"date":2373,"featured":7,"tech":2374,"color":1916,"emoji":2378,"url":2379,"status":2178,"body":2380,"_type":203,"_id":2466,"_source":205,"_file":2467,"_stem":2468,"_extension":208},"\u002Fprojects\u002Fsmart-home","Умный дом","Автоматизация дома на WirenBoard: освещение, отопление, безопасность, мультимедиа.","smart-home","2023-06-01",[1846,2375,2376,2377],"MQTT","WirenBoard","Node-RED","🏠","https:\u002F\u002Fti-soft.ru\u002Fsmart-home",{"type":18,"children":2381,"toc":2461},[2382,2386,2391,2397,2450,2456],{"type":21,"tag":34,"props":2383,"children":2384},{"id":1729},[2385],{"type":26,"value":1732},{"type":21,"tag":22,"props":2387,"children":2388},{},[2389],{"type":26,"value":2390},"Комплексная система умного дома на контроллере WirenBoard с управлением через MQTT.",{"type":21,"tag":34,"props":2392,"children":2394},{"id":2393},"возможности",[2395],{"type":26,"value":2396},"Возможности",{"type":21,"tag":125,"props":2398,"children":2399},{},[2400,2410,2420,2430,2440],{"type":21,"tag":129,"props":2401,"children":2402},{},[2403,2408],{"type":21,"tag":96,"props":2404,"children":2405},{},[2406],{"type":26,"value":2407},"Освещение",{"type":26,"value":2409}," — сценарии, диммирование, автоматическое управление по датчикам",{"type":21,"tag":129,"props":2411,"children":2412},{},[2413,2418],{"type":21,"tag":96,"props":2414,"children":2415},{},[2416],{"type":26,"value":2417},"Отопление",{"type":26,"value":2419}," — зональное управление, расписания, энергосбережение",{"type":21,"tag":129,"props":2421,"children":2422},{},[2423,2428],{"type":21,"tag":96,"props":2424,"children":2425},{},[2426],{"type":26,"value":2427},"Безопасность",{"type":26,"value":2429}," — датчики, камеры, уведомления",{"type":21,"tag":129,"props":2431,"children":2432},{},[2433,2438],{"type":21,"tag":96,"props":2434,"children":2435},{},[2436],{"type":26,"value":2437},"Мультимедиа",{"type":26,"value":2439}," — управление аудио\u002Fвидео оборудованием",{"type":21,"tag":129,"props":2441,"children":2442},{},[2443,2448],{"type":21,"tag":96,"props":2444,"children":2445},{},[2446],{"type":26,"value":2447},"Голосовые помощники",{"type":26,"value":2449}," — интеграция с Алисой и Google Home",{"type":21,"tag":34,"props":2451,"children":2453},{"id":2452},"технологии",[2454],{"type":26,"value":2455},"Технологии",{"type":21,"tag":22,"props":2457,"children":2458},{},[2459],{"type":26,"value":2460},"WirenBoard как центральный контроллер, MQTT для обмена данными, Node-RED для автоматизации сценариев, Node.js для кастомной логики.",{"title":8,"searchDepth":196,"depth":196,"links":2462},[2463,2464,2465],{"id":1729,"depth":196,"text":1732},{"id":2393,"depth":196,"text":2396},{"id":2452,"depth":196,"text":2455},"content:projects:smart-home.md","projects\u002Fsmart-home.md","projects\u002Fsmart-home",[2470,2633,2811],{"_path":2471,"_dir":2472,"_draft":7,"_partial":7,"_locale":8,"title":2473,"description":2474,"slug":2475,"date":213,"emoji":2069,"duration":2476,"level":2477,"format":2478,"price":2479,"schedule":2480,"body":2481,"_type":203,"_id":2630,"_source":205,"_file":2631,"_stem":2632,"_extension":208},"\u002Fcourses\u002Fai-practice","courses","Управлять ИИ, а не слушать","Навайбкодили — и упёрлись? AI может всё, но нужно знать, что у него спросить. Управлять ИИ, а не слушать его.","ai-practice","1 месяц","Начальный","Онлайн, индивидуально","3 000 ₽ \u002F занятие","2 занятия в неделю",{"type":18,"children":2482,"toc":2617},[2483,2488,2493,2499,2506,2511,2517,2522,2528,2533,2539,2544,2550,2555,2561,2566,2570,2575,2581,2586,2596,2599],{"type":21,"tag":22,"props":2484,"children":2485},{},[2486],{"type":26,"value":2487},"Вы уже генерите код, тексты, идеи. Но когда проект растёт, ChatGPT начинает путаться, галлюцинировать, давать поверхностные ответы. Проблема не в модели — в том, что вы не знаете, как ей управлять.",{"type":21,"tag":22,"props":2489,"children":2490},{},[2491],{"type":26,"value":2492},"Этот курс — не про «22 промпта». Про то, как понимать ИИ изнутри: что он умеет, где врёт, как ставить задачи чтобы получать точные результаты. Когда достаточно промпта, а когда нужен код.",{"type":21,"tag":34,"props":2494,"children":2496},{"id":2495},"программа",[2497],{"type":26,"value":2498},"Программа",{"type":21,"tag":2500,"props":2501,"children":2503},"h3",{"id":2502},"модуль-1-как-ии-реально-работает",[2504],{"type":26,"value":2505},"Модуль 1. Как ИИ реально работает",{"type":21,"tag":22,"props":2507,"children":2508},{},[2509],{"type":26,"value":2510},"Токены, контекстное окно, температура. Не магия, а статистика. Почему «попроси покороче» ломает ответ. Когда модель врёт и как это поймать.",{"type":21,"tag":2500,"props":2512,"children":2514},{"id":2513},"модуль-2-архитектура-промптов",[2515],{"type":26,"value":2516},"Модуль 2. Архитектура промптов",{"type":21,"tag":22,"props":2518,"children":2519},{},[2520],{"type":26,"value":2521},"Системные инструкции, few-shot, chain-of-thought. Не шаблоны, а принципы. Почему один промпт работает на GPT и падает на Claude.",{"type":21,"tag":2500,"props":2523,"children":2525},{"id":2524},"модуль-3-документы-и-данные",[2526],{"type":26,"value":2527},"Модуль 3. Документы и данные",{"type":21,"tag":22,"props":2529,"children":2530},{},[2531],{"type":26,"value":2532},"Когда достаточно текстового запроса, а когда нужен код, парсер, база. Саммари, извлечение структуры, анализ таблиц. Границы «без кода».",{"type":21,"tag":2500,"props":2534,"children":2536},{"id":2535},"модуль-4-ai-агенты-и-автоматизация",[2537],{"type":26,"value":2538},"Модуль 4. AI-агенты и автоматизация",{"type":21,"tag":22,"props":2540,"children":2541},{},[2542],{"type":26,"value":2543},"Связать ИИ с реальными инструментами. Telegram-бот, мониторинг, генерация отчётов. Когда агент оправдан, а когда — overkill.",{"type":21,"tag":2500,"props":2545,"children":2547},{"id":2546},"модуль-5-управление-сложностью",[2548],{"type":26,"value":2549},"Модуль 5. Управление сложностью",{"type":21,"tag":22,"props":2551,"children":2552},{},[2553],{"type":26,"value":2554},"Как разбить большую задачу на этапы, которые AI осилит. Контекст-менеджмент, контроль качества, работа с длинными проектами.",{"type":21,"tag":2500,"props":2556,"children":2558},{"id":2557},"модуль-6-ваш-проект",[2559],{"type":26,"value":2560},"Модуль 6. Ваш проект",{"type":21,"tag":22,"props":2562,"children":2563},{},[2564],{"type":26,"value":2565},"Реальный AI-инструмент для вашей задачи. Не презентация, а рабочая штука.",{"type":21,"tag":34,"props":2567,"children":2568},{"id":2044},[2569],{"type":26,"value":2047},{"type":21,"tag":22,"props":2571,"children":2572},{},[2573],{"type":26,"value":2574},"Для тех, кто уже генерит код через AI, но чувствует: без понимания основ — это лотерея. Работает — не работает — не понятно почему.",{"type":21,"tag":34,"props":2576,"children":2578},{"id":2577},"формат",[2579],{"type":26,"value":2580},"Формат",{"type":21,"tag":22,"props":2582,"children":2583},{},[2584],{"type":26,"value":2585},"Только индивидуальные занятия — не группа. 2 раза в неделю. Между занятиями — задания на реальных задачах. Поддержка в Telegram.",{"type":21,"tag":22,"props":2587,"children":2588},{},[2589,2594],{"type":21,"tag":96,"props":2590,"children":2591},{},[2592],{"type":26,"value":2593},"Стоимость:",{"type":26,"value":2595}," 3 000 ₽ за занятие. Формат: 2 раза в неделю, индивидуально.",{"type":21,"tag":914,"props":2597,"children":2598},{},[],{"type":21,"tag":22,"props":2600,"children":2601},{},[2602],{"type":21,"tag":2603,"props":2604,"children":2605},"em",{},[2606,2608,2615],{"type":26,"value":2607},"Пишите в ",{"type":21,"tag":2609,"props":2610,"children":2612},"a",{"href":2611},"tg:\u002F\u002Fresolve?domain=a_rudin",[2613],{"type":26,"value":2614},"Telegram",{"type":26,"value":2616}," — обсудим, что вам нужно.",{"title":8,"searchDepth":196,"depth":196,"links":2618},[2619,2628,2629],{"id":2495,"depth":196,"text":2498,"children":2620},[2621,2623,2624,2625,2626,2627],{"id":2502,"depth":2622,"text":2505},3,{"id":2513,"depth":2622,"text":2516},{"id":2524,"depth":2622,"text":2527},{"id":2535,"depth":2622,"text":2538},{"id":2546,"depth":2622,"text":2549},{"id":2557,"depth":2622,"text":2560},{"id":2044,"depth":196,"text":2047},{"id":2577,"depth":196,"text":2580},"content:courses:ai-practice.md","courses\u002Fai-practice.md","courses\u002Fai-practice",{"_path":2634,"_dir":2472,"_draft":7,"_partial":7,"_locale":8,"title":2635,"description":2636,"slug":2637,"date":368,"emoji":2638,"duration":2476,"level":2639,"format":2478,"price":2640,"schedule":2480,"body":2641,"_type":203,"_id":2808,"_source":205,"_file":2809,"_stem":2810,"_extension":208},"\u002Fcourses\u002Ffrontend","Создание сайтов с ИИ","Генерите код через AI, но не понимаете что получилось? Научитесь управлять разработкой, а не надеяться на удачу.","frontend","🎨","Средний","4 000 ₽ \u002F занятие",{"type":18,"children":2642,"toc":2795},[2643,2648,2653,2657,2663,2668,2674,2679,2685,2690,2696,2701,2707,2712,2718,2723,2729,2752,2756,2761,2765,2770,2779,2782],{"type":21,"tag":22,"props":2644,"children":2645},{},[2646],{"type":26,"value":2647},"Вы уже делали сайты с помощью AI. Сгенерировали, скопировали, работает. А потом что-то сломалось — и вы не знаете где искать. Или AI предложил архитектуру, а вы не можете оценить, хорошая она или нет.",{"type":21,"tag":22,"props":2649,"children":2650},{},[2651],{"type":26,"value":2652},"Этот курс — не про «как верстать». Про то, как понимать код, который генерирует AI. Как оценить архитектуру. Как управлять процессом, когда проект растёт за пределы одного файла.",{"type":21,"tag":34,"props":2654,"children":2655},{"id":2495},[2656],{"type":26,"value":2498},{"type":21,"tag":2500,"props":2658,"children":2660},{"id":2659},"модуль-1-что-ai-написал",[2661],{"type":26,"value":2662},"Модуль 1. Что AI написал",{"type":21,"tag":22,"props":2664,"children":2665},{},[2666],{"type":26,"value":2667},"HTML, CSS, JS — не зубрёжка, а умение прочитать что получилось и найти ошибку. Ровно столько, чтобы перестать гадать.",{"type":21,"tag":2500,"props":2669,"children":2671},{"id":2670},"модуль-2-vue-3",[2672],{"type":26,"value":2673},"Модуль 2. Vue 3",{"type":21,"tag":22,"props":2675,"children":2676},{},[2677],{"type":26,"value":2678},"Компоненты, реактивность, роутинг. Почему AI генерит всё в одном файле, а нормальный проект — нет.",{"type":21,"tag":2500,"props":2680,"children":2682},{"id":2681},"модуль-3-tailwind-css",[2683],{"type":26,"value":2684},"Модуль 3. Tailwind CSS",{"type":21,"tag":22,"props":2686,"children":2687},{},[2688],{"type":26,"value":2689},"Утилитарный CSS. Адаптивность. Тёмная тема. Когда AI перебарщивает с классами и как привести в порядок.",{"type":21,"tag":2500,"props":2691,"children":2693},{"id":2692},"модуль-4-api-и-данные",[2694],{"type":26,"value":2695},"Модуль 4. API и данные",{"type":21,"tag":22,"props":2697,"children":2698},{},[2699],{"type":26,"value":2700},"REST, fetch, авторизация. Как подключить реальный бэкенд. AI умеет генерить fetch, но не понимает вашу бизнес-логику.",{"type":21,"tag":2500,"props":2702,"children":2704},{"id":2703},"модуль-5-git-сборка-деплой",[2705],{"type":26,"value":2706},"Модуль 5. Git, сборка, деплой",{"type":21,"tag":22,"props":2708,"children":2709},{},[2710],{"type":26,"value":2711},"Vite, модули, hot reload. Git workflow. Когда код есть, но сайт не в интернете. Путь от localhost до продакшена.",{"type":21,"tag":2500,"props":2713,"children":2715},{"id":2714},"модуль-6-финальный-проект",[2716],{"type":26,"value":2717},"Модуль 6. Финальный проект",{"type":21,"tag":22,"props":2719,"children":2720},{},[2721],{"type":26,"value":2722},"Полноценное приложение: от идеи до деплоя. Вы архитектор, AI — инструмент.",{"type":21,"tag":34,"props":2724,"children":2726},{"id":2725},"что-получите",[2727],{"type":26,"value":2728},"Что получите",{"type":21,"tag":125,"props":2730,"children":2731},{},[2732,2737,2742,2747],{"type":21,"tag":129,"props":2733,"children":2734},{},[2735],{"type":26,"value":2736},"3-4 проекта в портфолио",{"type":21,"tag":129,"props":2738,"children":2739},{},[2740],{"type":26,"value":2741},"Умение читать и оценивать код, который генерирует AI",{"type":21,"tag":129,"props":2743,"children":2744},{},[2745],{"type":26,"value":2746},"Понимание архитектуры современных приложений",{"type":21,"tag":129,"props":2748,"children":2749},{},[2750],{"type":26,"value":2751},"Навык управлять разработкой, а не копировать что получилось",{"type":21,"tag":34,"props":2753,"children":2754},{"id":2044},[2755],{"type":26,"value":2047},{"type":21,"tag":22,"props":2757,"children":2758},{},[2759],{"type":26,"value":2760},"Для тех, кто уже сгенерил свой первый сайт через AI и хочет перестать гадать: «а правильно ли это работает?»",{"type":21,"tag":34,"props":2762,"children":2763},{"id":2577},[2764],{"type":26,"value":2580},{"type":21,"tag":22,"props":2766,"children":2767},{},[2768],{"type":26,"value":2769},"Только индивидуальные занятия — не группа. 2 раза в неделю. Каждое занятие — реальный проект. Код-ревью.",{"type":21,"tag":22,"props":2771,"children":2772},{},[2773,2777],{"type":21,"tag":96,"props":2774,"children":2775},{},[2776],{"type":26,"value":2593},{"type":26,"value":2778}," 4 000 ₽ за занятие. Формат: 2 раза в неделю, индивидуально.",{"type":21,"tag":914,"props":2780,"children":2781},{},[],{"type":21,"tag":22,"props":2783,"children":2784},{},[2785],{"type":21,"tag":2603,"props":2786,"children":2787},{},[2788,2789,2793],{"type":26,"value":2607},{"type":21,"tag":2609,"props":2790,"children":2791},{"href":2611},[2792],{"type":26,"value":2614},{"type":26,"value":2794}," — обсудим вашу задачу.",{"title":8,"searchDepth":196,"depth":196,"links":2796},[2797,2805,2806,2807],{"id":2495,"depth":196,"text":2498,"children":2798},[2799,2800,2801,2802,2803,2804],{"id":2659,"depth":2622,"text":2662},{"id":2670,"depth":2622,"text":2673},{"id":2681,"depth":2622,"text":2684},{"id":2692,"depth":2622,"text":2695},{"id":2703,"depth":2622,"text":2706},{"id":2714,"depth":2622,"text":2717},{"id":2725,"depth":196,"text":2728},{"id":2044,"depth":196,"text":2047},{"id":2577,"depth":196,"text":2580},"content:courses:frontend.md","courses\u002Ffrontend.md","courses\u002Ffrontend",{"_path":2812,"_dir":2472,"_draft":7,"_partial":7,"_locale":8,"title":2813,"description":2814,"slug":2815,"date":2816,"emoji":2176,"duration":2476,"level":2817,"format":2818,"price":2819,"schedule":2480,"body":2820,"_type":203,"_id":2987,"_source":205,"_file":2988,"_stem":2989,"_extension":208},"\u002Fcourses\u002Fdevops","DevOps: от localhost до продакшена","Код есть, но деплоить страшно? Научитесь управлять серверами, Docker, CI\u002FCD — без молитв.","devops","2026-07-06","Продвинутый","Онлайн, практика на серверах","5 000 ₽ \u002F занятие",{"type":18,"children":2821,"toc":2974},[2822,2827,2832,2836,2842,2847,2853,2858,2864,2869,2875,2880,2886,2891,2897,2902,2906,2924,2928,2941,2945,2950,2959,2962],{"type":21,"tag":22,"props":2823,"children":2824},{},[2825],{"type":26,"value":2826},"Написать код — полдела. А потом: сервер, Docker, SSL, домен, CI\u002FCD, мониторинг. AI подскажет команды, но не объяснит почему nginx не видит ваш контейнер. Или почему сертификат истёк в 3 ночи.",{"type":21,"tag":22,"props":2828,"children":2829},{},[2830],{"type":26,"value":2831},"Этот курс — про управление инфраструктурой. Не enterprise-практики для pet-проектов, а реальные навыки: Linux, Docker, деплой, мониторинг. Чтобы вы понимали что делаете, а не копировали команды из ChatGPT.",{"type":21,"tag":34,"props":2833,"children":2834},{"id":2495},[2835],{"type":26,"value":2498},{"type":21,"tag":2500,"props":2837,"children":2839},{"id":2838},"модуль-1-linux",[2840],{"type":26,"value":2841},"Модуль 1. Linux",{"type":21,"tag":22,"props":2843,"children":2844},{},[2845],{"type":26,"value":2846},"Терминал, файловая система, процессы. Не «20 команд», а понимание что происходит когда вы нажимаете Enter. Bash-скрипты. systemd.",{"type":21,"tag":2500,"props":2848,"children":2850},{"id":2849},"модуль-2-сети-и-безопасность",[2851],{"type":26,"value":2852},"Модуль 2. Сети и безопасность",{"type":21,"tag":22,"props":2854,"children":2855},{},[2856],{"type":26,"value":2857},"HTTP, DNS, SSL. SSH-ключи. Файрвол. Почему «на localhost работает» — не аргумент.",{"type":21,"tag":2500,"props":2859,"children":2861},{"id":2860},"модуль-3-docker",[2862],{"type":26,"value":2863},"Модуль 3. Docker",{"type":21,"tag":22,"props":2865,"children":2866},{},[2867],{"type":26,"value":2868},"Контейнеры, образы, volumes. Docker Compose. Когда Docker нужен, а когда — лишняя сложность.",{"type":21,"tag":2500,"props":2870,"children":2872},{"id":2871},"модуль-4-деплой",[2873],{"type":26,"value":2874},"Модуль 4. Деплой",{"type":21,"tag":22,"props":2876,"children":2877},{},[2878],{"type":26,"value":2879},"PM2, reverse proxy (Traefik), домены, сертификаты. Путь от «git push» до «сайт работает». Варианты: от scp до CI\u002FCD.",{"type":21,"tag":2500,"props":2881,"children":2883},{"id":2882},"модуль-5-cicd",[2884],{"type":26,"value":2885},"Модуль 5. CI\u002FCD",{"type":21,"tag":22,"props":2887,"children":2888},{},[2889],{"type":26,"value":2890},"GitHub Actions. Автоматический тест → билд → деплой. Стратегии ветвления. Rollback когда всё сломалось.",{"type":21,"tag":2500,"props":2892,"children":2894},{"id":2893},"модуль-6-мониторинг",[2895],{"type":26,"value":2896},"Модуль 6. Мониторинг",{"type":21,"tag":22,"props":2898,"children":2899},{},[2900],{"type":26,"value":2901},"Логи, метрики, алерты. Prometheus, Grafana. Узнать о проблеме раньше пользователя, а не от него.",{"type":21,"tag":34,"props":2903,"children":2904},{"id":2725},[2905],{"type":26,"value":2728},{"type":21,"tag":125,"props":2907,"children":2908},{},[2909,2914,2919],{"type":21,"tag":129,"props":2910,"children":2911},{},[2912],{"type":26,"value":2913},"Уверенную работу с Linux и серверами",{"type":21,"tag":129,"props":2915,"children":2916},{},[2917],{"type":26,"value":2918},"Умение деплоить свой код без стресса и молитв",{"type":21,"tag":129,"props":2920,"children":2921},{},[2922],{"type":26,"value":2923},"Мониторинг и логи — знать о проблеме раньше, чем пользователь",{"type":21,"tag":34,"props":2925,"children":2926},{"id":2044},[2927],{"type":26,"value":2047},{"type":21,"tag":22,"props":2929,"children":2930},{},[2931,2933,2939],{"type":26,"value":2932},"Для тех, кто написал код и не знает что дальше. Или кто уже «что-то деплоил», но делает ",{"type":21,"tag":241,"props":2934,"children":2936},{"className":2935},[],[2937],{"type":26,"value":2938},"git push",{"type":26,"value":2940}," и молится.",{"type":21,"tag":34,"props":2942,"children":2943},{"id":2577},[2944],{"type":26,"value":2580},{"type":21,"tag":22,"props":2946,"children":2947},{},[2948],{"type":26,"value":2949},"Только индивидуальные занятия — не группа. 2 раза в неделю. Практика на реальных серверах.",{"type":21,"tag":22,"props":2951,"children":2952},{},[2953,2957],{"type":21,"tag":96,"props":2954,"children":2955},{},[2956],{"type":26,"value":2593},{"type":26,"value":2958}," 5 000 ₽ за занятие. Формат: 2 раза в неделю, практика на реальных серверах.",{"type":21,"tag":914,"props":2960,"children":2961},{},[],{"type":21,"tag":22,"props":2963,"children":2964},{},[2965],{"type":21,"tag":2603,"props":2966,"children":2967},{},[2968,2969,2973],{"type":26,"value":2607},{"type":21,"tag":2609,"props":2970,"children":2971},{"href":2611},[2972],{"type":26,"value":2614},{"type":26,"value":2794},{"title":8,"searchDepth":196,"depth":196,"links":2975},[2976,2984,2985,2986],{"id":2495,"depth":196,"text":2498,"children":2977},[2978,2979,2980,2981,2982,2983],{"id":2838,"depth":2622,"text":2841},{"id":2849,"depth":2622,"text":2852},{"id":2860,"depth":2622,"text":2863},{"id":2871,"depth":2622,"text":2874},{"id":2882,"depth":2622,"text":2885},{"id":2893,"depth":2622,"text":2896},{"id":2725,"depth":196,"text":2728},{"id":2044,"depth":196,"text":2047},{"id":2577,"depth":196,"text":2580},"content:courses:devops.md","courses\u002Fdevops.md","courses\u002Fdevops",1784082559343]