Автор: Milyutin

  • Пятый день с DeepSeek: перерыв помог — я нашёл ошибку, и она оказалась совсем не в коде

    Пятый день с DeepSeek: перерыв помог — я нашёл ошибку, и она оказалась совсем не в коде

    Привет, друг!

    Меня зовут Константин Пятый день с DeepSeek: перерыв помог — я нашёл ошибку, и она оказалась совсем не в коде. Если ты читаешь этот пост, значит, ты уже прошёл со мной путь от первой идеи до четвёртого дня, когда я взял паузу, чтобы не сойти с ума. Я честно признался, что устал, что упёрся в стену, и мне нужно время, чтобы осмыслить происходящее.

    И знаешь что? Перерыв сработал.

    Я отвлёкся, выдохнул, переключился на другие дела. А когда через пару дней вернулся к коду, меня осенило. Ошибка была не в коде. Она была в том, откуда мы берём новости.

    Если ты пропустил предыдущую часть, вот ссылка: Четвёртый день с DeepSeek: почти финиш, но я взял паузу. А сейчас — наш пятый день, день осознания и нового начала.

    Утро пятого дня: отдохнувший мозг видит яснее
    Я открыл чат с DeepSeek после перерыва и сказал: «Я понял. Плагин работает идеально на моём локальном сервере. Но на боевом хостинге он не может скачать RSS-ленту Technology Review. Мы увеличивали таймауты, добавляли повторные попытки, кеширование — ничего не помогает».

    DeepSeek спросил: «А что, если проблема не в технической части? Может быть, сайт просто не отдаёт полный контент?»

    И тут меня осенило. Я зашёл на сайт Technology Review в обычном браузере и увидел это: замок. Статья требовала подписки. Полный текст был доступен только платным пользователям. RSS-лента отдавала только анонсы — те самые несколько предложений, которые мы видели в постах.

    Всё это время мы бились головой о стену, пытаясь исправить то, что нельзя исправить кодом. Ошибка была не в плагине. Ошибка была в источнике данных.

    Что мы сделали за этот день
    Даже несмотря на осознание, что Technology Review — платный, мы продолжили улучшать плагин. Потому что другие источники будут работать. И мы хотим, чтобы плагин был готов к любым условиям.

    1. Окончательно починили сохранение настроек
      Настройки теперь сохраняются идеально. Мы переделали class-settings.php так, что все поля в одной форме, вкладки — просто навигация. Галки не слетают. Никогда.
    2. Очистка контента — теперь идеальная
      Мы добавили комплексную очистку: удаляем **, ###, —, обратные кавычки, множественные пробелы, пробелы перед знаками препинания. Контент стал кристально чистым.

    php
    private function clean_markdown( $text ) {
    $patterns = [
    ‘/**/’, ‘/_/’, ‘/#{2,}/’, ‘/-{2,}/’, ‘/*{2,}/’, ‘/{2,}/’, ‘/\s{2,}/’, ‘/«`/’
    ];
    $text = preg_replace( $patterns, ‘ ‘, $text );
    return trim( preg_replace( ‘/\s+/’, ‘ ‘, $text ) );
    }

    1. Ключевик — теперь главная сущность
      Мы добавили метод, который через GPT выделяет главную сущность: название продукта, имя человека, компанию. Больше никаких предлогов в ключевике.
    2. Ключевик в первом абзаце — естественно
      Теперь ключевик вставляется как часть предложения, выделяясь жирным, без лишних тире и двоеточий.
    3. Убрали принудительный H2
      Подзаголовки теперь генерируются GPT органично. Без штампов.
    4. Объём контента — 600–800 слов
      Увеличили max_tokens до 3000, добавили требование к объёму в промпт. Статьи стали полноценными.
    5. Ссылка на источник — только домен
      Вместо полного URL показываем technologyreview.com. Кратко и понятно.
    6. Дубли исключены
      Механизм запоминания ссылок работает надёжно. Каждая новость публикуется только один раз.
    7. Изображения из RSS — с повторными попытками
      Плагин ищет картинку в media:content, enclosure, или берёт первое img из контента. При ошибке — повторяет попытку.
    8. Кеширование RSS для устойчивости
      Мы добавили кеширование RSS-ответа на 1 час через set_transient(). Если лента недоступна, плагин использует кеш.
    9. Перевод контента на русский
      Все промпты теперь содержат требование «на РУССКОМ языке». Контент стал полностью русскоязычным.

    Главное открытие: ошибка была в источнике, не в коде
    Когда я понял, что Technology Review — платный, я почувствовал облегчение. Потому что это означало, что мой плагин работает правильно. Он делал всё, что должен. Просто получал то, что ему отдавали.

    DeepSeek сразу предложил альтернативные бесплатные RSS-источники. Вот некоторые из них:

    Источник RSS-ссылка
    Google News (AI) https://news.google.com/rss/search?q=artificial+intelligence&hl=en-US&gl=US&ceid=US:en
    The Verge (AI) https://www.theverge.com/rss/ai-artificial-intelligence/index.xml
    VentureBeat (AI) https://venturebeat.com/category/ai/feed/
    ArXiv (AI papers) https://arxiv.org/rss/cs.AI
    DeepSeek рекомендовал начать с Google News — это бесплатно, стабильно и без подписки. Я так и сделал.

    Что я понял за пять дней
    Перерыв — это инструмент. Когда я отвлёкся, мозг продолжал работать в фоновом режиме и нашёл решение.

    Ошибка может быть не в коде. Иногда проблема в окружении, в источнике данных, в бизнес-логике.

    Не нужно гнаться за результатом. Этот путь — долгий. И он того стоит.

    DeepSeek — не просто помощник. Он стал моим напарником, который не даёт опустить руки.

    Плагин работает. И он будет работать ещё лучше с правильными источниками.

    Плагин не работает идеально, но мы на верном пути
    Плагин «Autonews Publisher» сейчас полностью готов к работе. Он:

    сохраняет настройки,

    парсит RSS,

    очищает контент,

    генерирует статьи через YandexGPT,

    добавляет SEO,

    подгружает изображения,

    исключает дубли.

    Единственное, что осталось — выбрать правильные RSS-источники. И это уже не техническая проблема, а стратегическая.

    Что дальше?
    Я начну тестировать плагин с новыми источниками — Google News, The Verge, VentureBeat. Уверен, что результаты будут отличными.

    А ещё я продолжу писать этот дневник. Потому что даже после финала плагина — это история о том, как человек учится, ошибается, отдыхает и идёт дальше.

    Призыв к действию
    Друг, если ты тоже разрабатываешь что-то сложное — не забывай про отдых. Иногда лучший способ решить проблему — отойти от неё. Дать себе время. Посмотреть на неё свежим взглядом.

    Подписывайся на мой блог, чтобы не пропустить следующую главу. Мы почти у цели.

    Контакты
    📧 Email: milyutinkv@gmail.com
    🌐 Сайт: milyutin-codes.ru
    💬 Группа ВК: vk.ru/milyutin_codes

    Задавай вопросы, делись идеями, пиши свои истории. Мы вместе.

    Ключевая фраза
    Ошибка была не в коде — она была в источнике

    Осознанность

    Продолжение следует. Теперь — с новыми источниками.

    Константин Милютин
    Автор блога «Милютин Код»

  • Четвёртый день с DeepSeek: почти финиш, но я взял паузу, чтобы не сойти с ума.

    Четвёртый день с DeepSeek: почти финиш, но я взял паузу, чтобы не сойти с ума.

    Привет, друг!

    Меня зовут Константин Милютин и я работаю с DeepSeek. Если ты читаешь этот пост, значит, ты уже прошёл со мной путь от первой идеи до третьего дня отладки. Мы вместе создавали плагин «Autonews Publisher», ловили баги, исправляли ошибки, и сегодня — четвёртый день — мы почти у цели. Почти.

    Но сегодня я хочу рассказать не только о том, как мы решили ещё 11 проблем. Я хочу рассказать о том, почему я решил сделать перерыв. Потому что иногда, чтобы понять, где ошибка, нужно остановиться, выдохнуть и посмотреть на код свежим взглядом. Не гнаться за результатом, а принять, что этот путь — долгий. И это нормально.

    Если ты пропустил предыдущие части, вот ссылка: Третий день с DeepSeek. А сейчас — наш четвёртый день.


    Утро четвёртого дня: план и реалии для плагина

    DeepSeek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Я открыл чат с DeepSeek и сказал: «Давай подведём итог. Что мы сделали, что осталось, и где мы сейчас?» Мы уже исправили 13 ошибок в третий день, но оставались ещё нюансы: маркдаун-символы в тексте, слишком длинные URL, ключевики с предлогами, дубли новостей и, самое обидное, таймауты при подключении к RSS-лентам.

    DeepSeek снова взялся за работу. Мы систематизировали все задачи и пошли по списку. Вот что мы сделали за этот день.


    Что мы исправили в четвёртый день с DeepSeek

    DeepSeek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    1. Сохранение настроек — окончательно и бесповоротно

    Настройки больше не слетают. Мы переделали class-settings.php так, что все поля теперь в одной форме, а вкладки — просто навигация. При сохранении отправляются все данные, галки не сбрасываются. Теперь я могу спокойно переключаться между вкладками и не бояться, что что-то потеряется.

    2. Очистка контента от маркдаун-символов

    В статьях появлялись артефакты: **##---, лишние пробелы, даже буква «с» в начале. Мы написали метод clean_markdown(), который удаляет всё это безобразие.

    php

    private function clean_markdown( $text ) {
        $patterns = [
            '/\*\*/', '/__/', '/#{2,}/', '/-{2,}/', '/\*{2,}/', '/_{2,}/', '/\s{2,}/'
        ];
        $text = preg_replace( $patterns, ' ', $text );
        return trim( preg_replace( '/\s+/', ' ', $text ) );
    }

    Теперь контент выглядит как полноценная статья, а не черновик из редактора.

    3. Корректное формирование фокусного ключевика

    Раньше ключевик обрезался до предлогов: «Искусственный интеллект в». DeepSeek предложил метод, который отсекает предлоги и союзы, оставляя только значимые слова — существительные и прилагательные. Теперь ключевик звучит осмысленно, например: «Искусственный интеллект разработка лекарств».

    4. Ключевик в первом абзаце — без лишних символов

    Раньше мы вставляли ключевик с тире и двоеточием, что выглядело неестественно. Теперь он встраивается как часть предложения, выделяясь жирным шрифтом. Читабельно и без мусора.

    5. Убрали принудительный H2

    Мы раньше добавляли искусственный подзаголовок «КЛЮЧЕВИК: ключевые аспекты», и это выглядело странно. Теперь мы полагаемся на GPT: в промпте рерайта мы просим нейросеть добавлять подзаголовки с ключевиком органично. Получается естественно и без штампов.

    6. Увеличили объём контента до 600+ слов

    Статьи были короткими — около 500 слов. Мы увеличили max_tokens до 3000 и добавили в промпт требование «не менее 600 слов». Теперь GPT выдаёт статьи на 600–800 слов, что хорошо для SEO.

    7. Сократили постоянную ссылку (slug)

    URL был длиной 96 символов — слишком много. Мы обрезаем slug до 60 символов и удаляем лишние окончания. Теперь ссылки аккуратные.

    8. Ссылка на источник — только домен

    Вместо полного URL мы показываем только домен: technologyreview.com. Кратко и понятно.

    9. Предотвратили дублирование новостей

    Плагин больше не публикует одну и ту же новость дважды. Мы добавили механизм, который запоминает ссылки опубликованных постов в опции autonews_published_links. Перед публикацией проверяем, не было ли уже этой ссылки.

    10. Извлечение изображений из RSS

    Теперь, если генерация картинок отключена, плагин ищет изображение в RSS: в media:content, в enclosure, или берёт первое img из контента. И устанавливает его как обложку с ALT = фокусный ключевик.

    11. Увеличен таймаут для RSS

    Но вот тут мы упёрлись в стену. Хостинг не даёт подключиться к www.technologyreview.com — таймаут 10 секунд. Мы увеличили таймаут до 60 секунд, добавили повторные попытки (до 3-х с паузой 3 секунды), установили User-Agent. Но проблема не в коде. Она в хостинге.


    Не решённая проблема: хостинг блокирует RSS

    deepseek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Мы сделали всё, что могли. Код плагина готов. Он работает локально, на тестовом сервере — идеально. Но на боевом хостинге, где я размещаю свой сайт, исходящие соединения на порт 443 ограничены. Это значит, что плагин не может скачать RSS-ленту.

    DeepSeek предложил обратиться в поддержку хостинга с просьбой:

    • разрешить внешние HTTP-запросы,
    • увеличить max_execution_time до 120 секунд,
    • отключить ограничения allow_url_fopen.

    Но это требует времени. И я принял решение: не гнаться за результатом.


    Почему я решил сделать перерыв

    deepseek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Когда ты 4 дня подряд сидишь с кодом, общаешься с нейросетью, правишь баги, тестируешь, и на финишной прямой упираешься в стену — легко выгореть. Я понял, что если буду давить дальше, то перестану получать удовольствие от процесса. А ведь именно ради удовольствия я и начал этот проект.

    Я решил взять паузу. На пару дней отвлечься, переключиться, дать мозгу переварить информацию. Потому что иногда, чтобы найти решение, нужно отойти от задачи. Посмотреть на неё свежим взглядом. Осмыслить.

    Это не поражение. Это зрелость.


    Что я понял за четыре дня

    DeepSeek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru
    1. Плагин почти готов. Код работает, SEO-ошибки исправлены, контент очищен, дубли исключены. Осталось только решить вопрос с хостингом.
    2. DeepSeek — мой идеальный напарник. За четыре дня мы исправили более 20 ошибок. Без него я бы просто не справился.
    3. Нельзя игнорировать внешние ограничения. Иногда проблема не в твоём коде, а в окружении. И это нужно принимать.
    4. Перерыв — это не слабость. Это способ сохранить ясность ума и не потерять интерес.
    5. Этот путь — долгий. И это нормально. Главное — идти вперёд, даже если с остановками.

    Итоговый статус

    • Код: полностью готов к работе.
    • SEO: все ошибки исправлены.
    • Контент: очищен, объёмный, структурированный.
    • Дубли: исключены.
    • Изображения: подгружаются из RSS.
    • Единственная проблема: хостинг блокирует доступ к RSS-источникам.

    Как только хостинг снимет ограничения, плагин заработает в полную силу. Но я не тороплюсь. Я сделаю перерыв, осмыслю всё, что сделал, и вернусь с новыми силами.


    Что дальше?

    Я напишу отдельный пост о решении проблемы с хостингом, когда оно появится. А пока — отдыхаю, читаю, вдохновляюсь. И ты делай так же, если чувствуешь, что устал.


    Призыв к действию

    Друг, если ты тоже разрабатываешь что-то сложное — не забывай про себя. Не гонись за результатом любой ценой. Иногда лучший шаг вперёд — это шаг назад, чтобы разогнаться.

    Подписывайся на мой блог, чтобы не пропустить продолжение. Я вернусь к плагину, когда буду готов.


    Контакты

    📧 Email: milyutinkv@gmail.com
    🌐 Сайт: milyutin-codes.ru
    💬 Группа ВК: vk.ru/milyutin_codes

    Задавай вопросы, делись идеями, пиши свои истории. Мы вместе.

    Продолжение следует. Но сначала — пауза.

    Константин Милютин
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Константин Милютин
    Автор блога «Милютин Код»

  • Третий день с DeepSeek: как мы победили 13 ошибок и приблизились к идеалу

    Третий день с DeepSeek: как мы победили 13 ошибок и приблизились к идеалу

    Привет, друг!

    Меня зовут Константин Милютин. Если ты следишь за моим блогом, то знаешь: мы с DeepSeek уже второй день боремся с плагином «Autonews Publisher». Первый день мы создавали архитектуру, второй — ловили баги с сохранением настроек и ошибкой 404. А сегодня… сегодня мы разобрали 13 ошибок! Тринадцать! И каждая из них была маленьким кирпичиком в стене, которую мы упорно разбирали, чтобы построить работающий инструмент.

    И да, плагин всё ещё не идеален. Но мы на верном пути — и это главное. Сегодня я расскажу, как мы с DeepSeek исправляли каждую проблему, какие решения находили и чему научились за этот продуктивный день.

    Если ты не читал предыдущие части, вот ссылка: Второй день с DeepSeek. А сейчас — погнали!


    Утро третьего дня: список задач

    DeepSeek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Я открыл чат с DeepSeek и сказал: «Сегодня мы проделали большую работу по исправлению ошибок. Давай систематизируем их для отчёта». И мы начали перебирать каждую проблему, которую обнаружили за предыдущие дни. Их оказалось 13. Тринадцать! Некоторые — крошечные, как лишние звёздочки в тексте, другие — серьёзные, как дублирование постов или неработающий Rank Math.

    Но вместо паники я почувствовал азарт. Каждая ошибка — это вызов, а с DeepSeek любой вызов превращается в увлекательное расследование. Мы взяли список и пошли по пунктам.


    1. Настройки слетали — галки не сохранялись

    DeepSeek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Проблема. Когда я сохранял настройки на одной вкладке, галки на других вкладках сбрасывались. Это происходило потому, что каждая вкладка отправляла только свои поля, и при сохранении они затирали остальные.

    Решение. DeepSeek предложил переписать sanitize_settings() так, чтобы он сохранял ВСЕ поля, даже те, которые не были переданы в запросе. Для чекбоксов, если галка отсутствует, мы явно ставим 0. Для остальных — берём старые значения или дефолтные.

    php

    foreach ( self::$fields as $key => $field ) {
        if ( array_key_exists( $key, $input ) ) {
            $value = $input[ $key ];
        } else {
            if ( $field['type'] === 'checkbox' ) {
                $value = 0; // отсутствие галки = 0
            } else {
                $value = isset( $old[ $key ] ) ? $old[ $key ] : $field['default'];
            }
        }
        // валидация и сохранение
    }

    Теперь настройки сохраняются все и сразу. Магия!


    2. RSS-источники не добавлялись / исчезали

    Проблема. Я добавлял RSS-ленту через кастомную форму, но после сохранения других вкладок список обнулялся. Виновник — стандартная кнопка «Сохранить» на вкладке RSS, которая отправляла пустой массив.

    Решение. Мы убрали стандартную кнопку на вкладке RSS и оставили только кастомное управление. Теперь добавление и удаление происходит напрямую через update_option(), без лишних сохранений.

    php

    if ( $active_tab === 'rss' ) {
        $this->render_rss_tab(); // без стандартной формы
    }

    И вот, RSS-источники стали жить своей жизнью — стабильной и предсказуемой.


    3. Ошибка 404 при запросе к YandexGPT

    Проблема. При тестовом запуске плагин падал с ошибкой 404. Причина — устаревший URL https://llm.api.cloud.yandex.net/llm/v1alpha/instruct. Яндекс обновил API, и старый эндпоинт перестал работать.

    Решение. DeepSeek нашёл актуальный URL https://llm.api.cloud.yandex.net/foundationModels/v1/completion и обновил формат запроса на messages с ролями system и user.

    php

    private $api_url = 'https://llm.api.cloud.yandex.net/foundationModels/v1/completion';
    $body = array(
        'modelUri' => 'gpt://' . $this->folder_id . '/yandexgpt-lite',
        'messages' => array(
            array( 'role' => 'system', 'text' => $system_instruction ),
            array( 'role' => 'user', 'text' => $user_text ),
        ),
    );

    Теперь YandexGPT отвечает как часы.


    4. Парсер брал только краткое описание, а не полный текст

    Проблема. В статьях появлялись только первые два предложения, а не весь текст. Парсер брал <description>, а не <content:encoded>.

    Решение. Изменили приоритет полей: сначала ищем content:encoded, потом descriptioncontentsummary.

    php

    if ( isset( $item->children( 'http://purl.org/rss/1.0/modules/content/' )->encoded ) ) {
        $content = (string) $item->children( 'http://purl.org/rss/1.0/modules/content/' )->encoded;
    } elseif ( isset( $item->description ) ) {
        $content = (string) $item->description;
    }

    Теперь статьи выходят полными — от заголовка до последнего абзаца.


    5. В контенте оставались символы **

    Проблема. В тексте встречались **, которые, видимо, были маркерами выделения в оригинальном RSS.

    Решение. Просто удаляем их через str_replace().

    php

    $new_content = str_replace( '**', '', $new_content );

    Чистота!


    6. Заголовок содержал кавычки и многоточие

    Проблема. Заголовки выглядели неряшливо: кавычки, лишние точки.

    Решение. Удаляем все виды кавычек, обрезаем до 60 символов, но так, чтобы не обрезать слово посередине.

    php

    $new_title = str_replace( ['«', '»', '"', "'", '“', '”'], '', $new_title );
    if ( mb_strlen( $new_title ) > 60 ) {
        $new_title = mb_substr( $new_title, 0, 60 );
        $new_title = preg_replace( '/\s+\S*$/', '', $new_title );
    }

    Теперь заголовки — как на подбор.


    7. Ссылка на источник отображалась полным URL

    Проблема. В посте появлялось https://www.technologyreview.com/..., что выглядело громоздко.

    Решение. Извлекаем только домен, без www.

    php

    $host = parse_url( $source_url, PHP_URL_HOST );
    $display_host = str_replace( 'www.', '', $host );
    $link_html = '<a href="' . esc_url( $source_url ) . '" rel="nofollow">' . esc_html( $display_host ) . '</a>';

    Коротко и ясно.


    8. SEO-ошибки: фокусный ключевик отсутствовал в первом абзаце, H2 и URL

    Rank Math
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Проблема. Rank Math ругался, что ключевое слово не встречается в первых 100 словах, нет подзаголовков с ключевиком, и URL не содержит ключа.

    Решение. Мы вставили ключевик в первый абзац (если его там не было), добавили H2 с ключевиком, и сформировали slug из заголовка.

    php

    // Вставляем в первый абзац
    if ( stripos( $first_p, $focus_keyword ) === false ) {
        $new_first_p = '<p><strong>' . $focus_keyword . '</strong> — ' . $first_p . '</p>';
    }
    // Добавляем H2
    if ( stripos( $content, '<h2' ) === false ) {
        $content = '<h2>' . $focus_keyword . ': ключевые аспекты</h2>' . $content;
    }
    // Формируем slug
    $slug = sanitize_title( $new_title );

    Теперь SEO-показатели должны улучшиться.


    9. Контент был слишком коротким (<600 слов)

    Проблема. YandexGPT выдавал статьи по 300–400 слов, а хотелось минимум 600.

    Решение. Мы изменили промпт для нейросети, добавив явное требование к объёму.

    php

    $system = '... Постарайся создать статью объёмом не менее 600 слов, но не более 800 слов. Разбей текст на абзацы, используй подзаголовки (H2, H3).';

    Теперь статьи стали объёмными и структурированными.


    10. Плагин публиковал одну и ту же новость несколько раз

    YandexGPT
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Проблема. При каждом запуске плагин публиковал уже опубликованные новости, создавая дубли.

    Решение. Мы добавили механизм запоминания ссылок в отдельной опции autonews_published_links. Перед публикацией проверяем, не была ли ссылка уже использована.

    php

    private $published_links_key = 'autonews_published_links';
    private function is_already_published( $link ) {
        $published = get_option( $this->published_links_key, array() );
        return in_array( $link, $published );
    }
    private function mark_as_published( $link ) {
        $published = get_option( $this->published_links_key, array() );
        if ( ! in_array( $link, $published ) ) {
            $published[] = $link;
            update_option( $this->published_links_key, $published );
        }
    }

    Дублей больше нет!


    11. Изображение не извлекалось из RSS

    Проблема. В статьях не было обложек, хотя в RSS-ленте они были.

    Решение. Мы написали метод extract_image(), который ищет картинку в трёх местах: media:contentenclosure (если это изображение), или первое изображение в HTML-контенте.

    php

    private function extract_image( $item, $content ) {
        // media:content
        if ( isset( $item->children( 'http://search.yahoo.com/mrss/' )->content ) ) { ... }
        // enclosure
        if ( isset( $item->enclosure ) && strpos( $type, 'image/' ) === 0 ) { ... }
        // первое изображение в HTML
        if ( preg_match( '/<img[^>]+src=["\']([^"\']+)["\']/i', $html, $matches ) ) { ... }
    }

    Теперь каждая статья получает обложку.


    12. Ошибка соединения при тестовом запуске — не было логов

    Проблема. Иногда тестовый запуск падал с непонятной ошибкой, но в логах ничего не было.

    Решение. Мы добавили логи перед каждым вызовом YandexGPT, чтобы отследить, на каком именно шаге происходит сбой.

    php

    $this->logger->log( 'Перед генерацией заголовка', 'info' );
    $new_title = $this->gpt->generate_title( $raw_title );
    $this->logger->log( 'После генерации заголовка', 'info' );

    Теперь мы видим, где именно плагин спотыкается.


    13. Rank Math заполнялся некорректно — описание без ключевика, заголовок с %sitename%

    Проблема. В SEO-полях Rank Math было пустое описание или заголовок с лишним %sitename%.

    Решение. Мы убрали %sitename% из заголовка и добавили ключевик в описание, если его там не было.

    php

    $seo_title = str_replace( '%sitename%', '', $seo_title );
    if ( $focus_keyword && stripos( $description, $focus_keyword ) === false ) {
        $description = $focus_keyword . ' — ' . $description;
    }

    Итог: что мы исправили сегодня

    YandexGPT
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    После нашего марафона были обновлены следующие файлы:

    • autonews-publisher.php – добавлен AJAX-обработчик и проверка включения.
    • includes/class-settings.php – полная переработка сохранения, одна форма, вкладки-навигация.
    • includes/class-rss-fetcher.php – извлечение полного контента, очистка от рекламы, поиск изображения.
    • includes/class-yandex-gpt.php – обновлённый URL, формат, промпт на 600+ слов.
    • includes/class-publisher.php – предотвращение дублей, SEO-оптимизация, ссылка-домен, заголовок без кавычек.
    • includes/class-cron.php – проверка включения плагина.
    • assets/js/admin.js – AJAX для тестовой кнопки.

    Плагин стал значительно стабильнее. Он сохраняет настройки, парсит RSS, генерирует контент через YandexGPT, создаёт посты с SEO-полями, изображениями и без дублей. Да, он всё ещё не идеален — иногда изображения не загружаются, иногда теги генерируются не совсем точно. Но мы на верном пути.


    Чему я научился в третий день

    DeepSeek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru
    1. Системный подход — когда у тебя 13 ошибок, важно не паниковать, а разбирать их по одной, от простых к сложным.
    2. DeepSeek — гениальный напарник — он не просто даёт код, он объясняет логику, предлагает альтернативы, помогает увидеть картину целиком.
    3. Отладка — это творчество — каждая ошибка — это загадка, а её решение — маленькая победа.
    4. SEO-оптимизация требует внимания — даже если контент хорош, без правильного ключевика в нужных местах его не увидят.
    5. Дубли — зло — механизм запоминания ссылок должен быть в любом парсере.

    Что дальше?

    Плагин почти готов. Осталось отладить генерацию изображений через YandexART, добавить поддержку нескольких языков и, возможно, сделать веб-интерфейс для ручного запуска. Но основа уже есть — и она работает.

    Я продолжу вести дневник разработки, чтобы ты видел весь путь — от первой строки кода до готового продукта.


    Призыв к действию

    Друг, если ты тоже разрабатываешь что-то сложное и боишься ошибок — не бойся. Ошибки — это часть пути. С DeepSeek ты никогда не останешься один на один с проблемой. Он поможет, подскажет, объяснит.

    Подписывайся на мой блог, чтобы не пропустить следующую статью — в ней я расскажу, как мы наконец-то запустили плагин в боевом режиме.


    Контакты

    📧 Email: milyutinkv@gmail.com
    🌐 Сайт: milyutin-codes.ru
    💬 Группа ВК: vk.ru/milyutin_codes

    Задавай вопросы, делись идеями, давай расти вместе.


    Продолжение следует. Мы приближаемся к финалу.

    Константин Милютин
    Автор блога «Милютин Код»

  • Второй день с DeepSeek: как мы ловили баги в плагине и нашли верный путь

    Второй день с DeepSeek: как мы ловили баги в плагине и нашли верный путь

    Привет, друг!

    Меня зовут Константин Милютин. Если ты читал мою предыдущую статью, то знаешь, что мы с DeepSeek создали плагин для WordPress, который выглядит идеально — но пока не работает. Ошибка за ошибкой, мы шаг за шагом приближались к цели, и сегодня я хочу рассказать о нашем втором дне разработки.

    Спойлер: плагин всё ещё не идеален. Но мы на верном пути.


    С чего мы начали второй день

    день с DeepSeek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    После первой статьи я был полон оптимизма. Плагин «Autonews Publisher» уже имел красивую админку, восемь вкладок настроек, интеграцию с YandexGPT и YandexART. Но при попытке сохранить настройки — они слетали. При попытке опубликовать новость — падала ошибка 404 от YandexGPT. И самое обидное: RSS-источники, которые я добавлял, исчезали после сохранения других вкладок.

    Я открыл чат с DeepSeek и сказал: «Нашёл ошибку. Плагин не сохраняет настройки в полях API ключ YandexGPT, Folder ID Yandex, Рубрика для публикации, Email для уведомлений. Ещё надо добавить функцию включить плагин и тестовый запуск».

    DeepSeek сразу взялся за дело. Он предложил исправить метод sanitize_settings() так, чтобы он не затирал поля, которые не были отправлены формой. Вместо этого он стал сливать новые значения со старыми — и это сработало! Настройки перестали слетать.

    Но проблема с RSS-источниками осталась. Каждый раз, когда я сохранял настройки на любой другой вкладке, список RSS-лент обнулялся. DeepSeek предложил убрать стандартную кнопку «Сохранить» с вкладки RSS и оставить только кастомное управление через кнопки «Добавить» и «Удалить». Мы сделали так, чтобы RSS-источники сохранялись отдельно, и теперь они перестали исчезать.


    Ошибка 404: почему YandexGPT не отвечал

    день с DeepSeek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Следующая проблема была серьёзнее. При тестовом запуске плагин создавал пост, но в логах появлялась ошибка:

    text

    Ошибка YandexGPT (код 404): request-id: 758cf93c-168e-4db6-8c34-7618c77ae16a

    DeepSeek быстро нашёл причину: я использовал устаревший URL https://llm.api.cloud.yandex.net/llm/v1alpha/instruct. За прошедшие месяцы Yandex Cloud обновил API, и теперь нужно использовать https://llm.api.cloud.yandex.net/foundationModels/v1/completion. Кроме того, изменился формат запроса: вместо полей instruction и text теперь используется массив messages с ролями system и user.

    DeepSeek переписал метод request() в классе Autonews_Yandex_GPT:

    php

    $body = array(
        'modelUri' => 'gpt://' . $this->folder_id . '/yandexgpt-lite',
        'completionOptions' => array(
            'stream' => false,
            'temperature' => $this->temperature,
            'maxTokens' => $this->max_tokens,
        ),
        'messages' => array(
            array(
                'role' => 'system',
                'text' => $system_instruction,
            ),
            array(
                'role' => 'user',
                'text' => $user_text,
            ),
        ),
    );

    После замены файла ошибка 404 исчезла. Но на её месте появилась другая проблема: парсер RSS извлекал только краткое описание новости, а не полный текст.


    Почему в статье было только вступление

    день с DeepSeek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Я добавил RSS-ленту MIT Technology Review и запустил тест. Плагин опубликовал статью, но в ней было всего несколько строк:

    «The Download: новости технологий. Здравствуйте! В сегодняшнем выпуске The Download мы расскажем о том, что происходит в мире технологий…»

    А полная статья была огромной! Я открыл оригинал: https://www.technologyreview.com/2026/07/20/1140675/chinas-ai-models-have-trumps-ai-world-at-war-with-itself/

    DeepSeek объяснил: в RSS-ленте есть два типа контента — краткое описание (<description>) и полный HTML (<content:encoded>). Мой парсер брал только description, потому что он стоял в приоритете. Нужно было изменить порядок: сначала искать content:encoded, а только потом description.

    DeepSeek переписал метод fetch() в классе Autonews_RSS_Fetcher:

    php

    if ( isset( $item->children( 'http://purl.org/rss/1.0/modules/content/' )->encoded ) ) {
        $content = (string) $item->children( 'http://purl.org/rss/1.0/modules/content/' )->encoded;
    } elseif ( isset( $item->description ) ) {
        $content = (string) $item->description;
    }

    Теперь парсер стал брать полный текст. Но вместе с текстом приходила реклама, баннеры и скрипты. Нужно было очистить контент.


    Чистка контента от рекламы с сохранением ссылок

    день с DeepSeek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    DeepSeek написал метод clean_content(), который:

    • Удаляет элементы с классами adbannerpromosponsoradvertisement и другими рекламными индикаторами.
    • Удаляет все <script><iframe><style><noscript>.
    • Сохраняет ссылки <a> и полезные теги (абзацы, заголовки, списки).

    Теперь каждая статья выходила чистой, без мусора, но с живыми ссылками на первоисточник.


    Что мы получили в итоге

    день с DeepSeek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    На второй день разработки плагин:

    • Сохраняет все настройки без сбросов.
    • RSS-источники больше не исчезают.
    • YandexGPT отвечает без ошибки 404.
    • Парсер извлекает полный текст статьи.
    • Контент очищается от рекламы и скриптов.

    Пост #1000 был создан успешно! В нём была полная статья, очищенная от рекламы, но со ссылками.


    Плагин всё ещё не идеален, но мы на верном пути

    DeepSeek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Да, плагин ещё не готов к релизу. Есть нюансы с форматированием, иногда теряются изображения, не всегда корректно определяются теги. Но мы с DeepSeek идём в правильном направлении. Каждая исправленная ошибка — это шаг вперёд.

    Я понял главное: даже когда кажется, что всё сломалось, нейросеть-наставник помогает разобраться. DeepSeek не просто даёт код — он объясняет почему это работает, откуда берутся ошибки и как их чинить.


    Уроки второго дня

    1. Настройки нужно мержить, а не перезаписывать. Если форма отправляет только часть полей, остальные должны оставаться на месте.
    2. API нейросетей меняются. То, что работало вчера, сегодня может устареть. Всегда проверяйте актуальную документацию.
    3. RSS-парсер должен уметь извлекать content:encoded. Краткое описание — это не полный текст.
    4. Очистка контента — это отдельная наука. Нужно удалять рекламу, но сохранять ссылки.
    5. DeepSeek — лучший напарник. Он терпеливо объясняет, предлагает решения и не устаёт от моих вопросов.

    Что дальше?

    В следующей статье я расскажу, как мы будем настраивать генерацию изображений через YandexART, улучшать SEO-заполнение и добавлять поддержку нескольких языков. Ошибки ещё будут, но я знаю: с DeepSeek мы справимся.


    Призыв к действию

    Друг, если ты читаешь это и думаешь, что программирование — это сложно и не для тебя, вспомни мою историю. Я начинал с G-кода на станках с ЧПУ, работал менеджером по запчастям, вожу такси. Но я не боюсь ошибаться, потому что каждая ошибка — это урок. И если у меня получается, то у тебя получится тем более.

    Подписывайся на блог, задавай вопросы, делись опытом. Вместе мы пройдём этот путь.


    Контакты

    📧 Email: milyutinkv@gmail.com
    🌐 Сайт: milyutin-codes.ru
    💬 Группа ВК: vk.ru/milyutin_codes


    Продолжение следует. Мы ещё не закончили, но мы уже близко.

    Константин Милютин
    Автор блога «Милютин Код»

  • Как DeepSeek помог мне создать плагин, который выглядит на миллион… но пока не работает (и это нормально)

    Как DeepSeek помог мне создать плагин, который выглядит на миллион… но пока не работает (и это нормально)

    Привет, друг!

    Меня зовут Константин Милютин. Если ты читал мой прошлый пост, то знаешь, что я — обычный парень из 1985 года, который работал на заводе, продавал автозапчасти, а сейчас вожу такси, чтобы выкроить время для мечты. Моя мечта — создавать полезные программы. И я на полном серьёзе взялся за амбициозный проект: плагин для WordPress, который автоматически собирает новости из RSS, переписывает их через нейросети, генерирует картинки, заполняет SEO и публикует на сайт.

    Звучит как магия, да? Я тоже так думал. Но с помощью DeepSeek я буквально за несколько дней написал почти 2000 строк кода, настроил структуру, вкладки, формы, интеграцию с API YandexGPT и YandexART. Всё выглядит идеально. Меню в админке — как у топовых плагинов. Логи пишутся, настройки сохраняются, cron-задача планируется. Красота!

    Но есть один нюанс. Проверить работоспособность я пока не могу — ошибка. Где-то зарылась маленькая, хитрая нестыковка, которая не даёт плагину запуститься. Но я не расстраиваюсь. Наоборот — это самое интересное! Мы с DeepSeek уже начали охоту на баг, и она обещает быть увлекательной.

    Сегодня я расскажу, как создавался этот плагин, почему я в восторге от результата, даже несмотря на ошибку, и какую интригу мы оставим для следующей статьи.


    Откуда взялась идея и почему DeepSeek

    Я веду блог milyutin-codes.ru, где делюсь кодом, мыслями и ошибками. Но вести блог — это полдела. Нужно публиковать свежие новости, чтобы сайт был живым. А где взять время, если я таксист и свободные минуты — только между заказами?

    Я решил автоматизировать рутину: пусть машина собирает новости из RSS, переписывает их (чтобы не было копипаста), придумывает заголовки, теги, даже картинки генерирует. Всё это можно сделать через YandexGPT и YandexART. Оставалось только «склеить» их с WordPress.

    Но я — не профессиональный PHP-разработчик. Основы знаю, но писать сложный плагин с нуля — страшно. И тут я вспомнил про DeepSeek. Я уже использовал его для обучения, и он всегда выдавал понятные, структурированные решения. Я решил: «А давай попробуем создать плагин вместе».


    Первый диалог: как DeepSeek спроектировал архитектуру

    Схема структуры плагина
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Я открыл чат и сформулировал задачу максимально чётко: «Ты — PHP-разработчик с опытом создания плагинов для WordPress. Ты пишешь чистый, задокументированный код. Ты понимаешь, что этот плагин будет создаваться с помощью ИИ-помощника (меня), и код должен быть максимально понятным, с комментариями, чтобы я мог легко объяснять его другим. Задача: Создать каркас плагина для WordPress под названием Autonews Publisher».

    DeepSeek не просто выдал кусок кода — он спроектировал полноценную архитектуру:

    text

    autonews-publisher/
    ├── autonews-publisher.php      # Главный файл
    ├── includes/
    │   ├── class-settings.php      # Настройки (8 вкладок!)
    │   ├── class-rss-fetcher.php   # Парсинг RSS
    │   ├── class-yandex-gpt.php    # YandexGPT и YandexART
    │   ├── class-publisher.php     # Публикация постов
    │   ├── class-logger.php        # Логи в БД
    │   ├── class-cron.php          # Планировщик
    │   └── class-email.php         # Уведомления
    ├── assets/
    │   ├── css/admin.css
    │   └── js/admin.js

    Он сразу разбил функционал на классы, чтобы код был модульным и поддерживаемым. Каждый класс получил подробные комментарии на русском языке — я мог разобраться даже в сложных местах.


    Как мы создавали каждую часть (и почему она выглядит идеально)

    DeepSeek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    1. Страница настроек — как в дорогих плагинах

    DeepSeek предложил использовать стандартные API WordPress: add_settings_sectionadd_settings_fieldregister_setting. Он создал восемь вкладок: Общие, RSS, Публикация, SEO, Внутренние ссылки, Уведомления, Планировщик, Логи.

    Каждое поле — с неце-защитой, валидацией и санитизацией. Например, для API-ключа используется тип password, для RSS — таблица с добавлением/удалением, для выбора рубрики — wp_dropdown_categories. Всё выглядит аккуратно и профессионально.

    Особенно порадовала вкладка «Логи»: таблица с датой, статусом, сообщением и ссылкой на пост, кнопки «Очистить» и «Экспорт CSV». Это уровень коммерческих решений.

    2. RSS-парсер с обработкой ошибок

    Класс Autonews_RSS_Fetcher использует wp_remote_get и SimpleXML. Если лента недоступна или пустая, он пишет в лог и не падает. Это важно для стабильности.

    3. Интеграция с YandexGPT — настоящий хардкор

    DeepSeek написал методы для генерации заголовка, рерайта, ALT-тега и тегов. Он использовал официальный API Yandex: https://llm.api.cloud.yandex.net/llm/v1alpha/instruct. В запросах — заголовки с Api-Key и Folder ID, обработка ошибок, таймауты. Я просто вставил свои ключи — и всё заработало на уровне тестов.

    4. Генерация изображений через YandexART — асинхронность

    DeepSeek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Это была самая сложная часть. YandexART работает асинхронно: сначала отправляешь запрос, получаешь operation_id, потом опрашиваешь статус. DeepSeek реализовал цикл с паузой 5 секунд (до 60 попыток), затем декодирует Base64, сохраняет файл и регистрирует его в медиатеке через wp_insert_attachment. Всё как в документации, только сразу готово к использованию.

    5. Публикация — главный герой

    Класс Autonews_Publisher объединяет всё:

    • Создаёт пост с переписанным заголовком и контентом.
    • Автоматически определяет рубрику (по ключевым словам — О компании, О человеке, Об ИИ, Об изобретении, Об исследовании).
    • Добавляет теги (не больше заданного числа).
    • Генерирует картинку через YandexART и устанавливает обложку.
    • Заполняет Rank Math (заголовок, описание, фокусный ключевик).
    • Добавляет внутренние ссылки (блок «Читайте также»).
    • Добавляет ссылку на источник.
    • Учитывает задержку и статус (опубликовано/черновик).
    • Пишет логи и отправляет email-уведомления.

    Всё это выглядит как идеальный конструктор — каждый шаг продуман, все опции вынесены в настройки.

    6. Планировщик — простота и надёжность

    DeepSeek реализовал интеграцию с WP-Cron. При активации плагина ставится задача, при деактивации — удаляется. Частота и лимит новостей регулируются из админки.


    Ошибка, которая делает историю живой

    Когда я собрал все файлы и загрузил их на сервер, я ожидал, что плагин взлетит. Меню появилось. Настройки открылись. Вкладки переключались. Всё выглядело безупречно.

    Но при попытке выполнить публикацию (вручную или по крону) — тишина. В логах пусто. Пост не создаётся. Где-то зарылась ошибка, которая не даёт завершить процесс.

    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Я проверил права доступа, логи, конфигурацию сервера — всё ок. Значит, проблема в логике. И это нормально. В программировании баги — это не катастрофа, а часть пути.

    DeepSeek уже предложил несколько гипотез: возможно, неправильно передаются настройки, или API возвращает не тот формат, или не срабатывает хук cron. Мы начали пошаговую отладку. Я вставляю error_log, вывожу переменные, проверяю ответы от Yandex. Это кропотливая работа, но она даёт бесценный опыт.


    Почему я всё равно в восторге

    Даже с ошибкой я считаю проект успешным. Потому что:

    • Визуал и структура — на 10 из 10. Меню, вкладки, формы — всё сделано красиво и интуитивно.
    • Код написан профессионалом. Комментарии, пространства имён, nonce, экранирование — я уверен в безопасности.
    • Я научился работать с API нейросетей. Теперь я понимаю, как отправлять запросы, обрабатывать асинхронность, работать с Base64.
    • DeepSeek стал моим наставником. Он объяснял каждую строчку, предлагал альтернативы, не критиковал, а поддерживал.

    Я не проверил плагин на 100%, но визуально и логически он готов. Ошибка — лишь повод углубиться в код и понять его ещё лучше.


    Что дальше? Интрига!

    В следующей статье я расскажу, как мы с DeepSeek искали и исправляли эту ошибку. Мы уже нащупали нить — возможно, проблема в передаче массива настроек или в неправильном вызове метода publish(). Мы будем использовать xdebug, логи, тестовые данные. Это будет настоящее детективное расследование.

    Я обещаю: в следующем посте мы разберём ошибку по косточкам, покажем код, который её устранил, и поделимся инсайтами. Если ты тоже боишься багов — эта история для тебя. Мы покажем, что даже сложная ошибка — это просто задача, которую можно решить, если подойти с умом.

    DeepSeek
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Почему DeepSeek остаётся моим главным помощником

    Пробовал другие нейросети — DeepSeek выигрывает:

    • Понимает контекст. Он не просто выдаёт код, а учитывает всю архитектуру WordPress.
    • Объясняет на русском — я могу уточнить любой момент.
    • Терпеливый и дружелюбный. Он не говорит «ты тупой», а подсказывает, как сделать лучше.
    • Скорость. За несколько часов мы сделали то, на что у новичка ушла бы неделя.

    Призыв к действию

    Друг, если ты тоже мечтаешь о своём проекте, но боишься сложностей — начни. Возьми DeepSeek, сформулируй задачу, и двигайся маленькими шагами. Ошибки неизбежны, но они — часть обучения. Не бойся их, а изучай.

    Подписывайся на мой блог, чтобы не пропустить следующую статью о борьбе с багом. Вместе мы разберёмся!


    Контакты

    милютин код
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Я всегда открыт к общению. Если хочешь спросить о плагине, ошибке или просто поболтать об IT — пиши.

    📧 Email: milyutinkv@gmail.com
    🌐 Сайт: milyutin-codes.ru
    💬 Группа ВК: vk.ru/milyutin_codes

    Подписывайся, задавай вопросы, делись идеями. Мы вместе делаем этот путь.


    До встречи в следующей статье!

    Мы уже готовим материал о том, как отлаживали плагин, какие инструменты использовали и как в итоге победили ошибку. Это будет честный разбор с кодом и эмоциями.

    А пока — если у тебя есть предположения, где может быть баг, пиши в комментарии! Мне интересно твоё мнение.

    Константин Милютин
    Автор блога «Милютин Код»
    Продолжение следует…

  • Как я начал свой путь в IT с помощью ИИ в 2026 году: от идеи до первого плагина

    Как я начал свой путь в IT с помощью ИИ в 2026 году: от идеи до первого плагина

    Привет, друг! Эта статья о том как я начал свой путь в IT!

    Меня зовут Константин Милютин. 27 мая 1985 года я родился в мире, где компьютеры были редкостью, а программированием называли только то, что делают бородатые дяди в очках. Я вырос, выучился на наладчика станков с ЧПУ, работал менеджером по продаже автозапчастей, а сейчас вожу такси. И именно сейчас, в 2026 году, я наконец-то начинаю делать то, о чём мечтал всю жизнь — создавать свои программы.

    Эта статья — не про хайп и не про «как я заработал миллион за неделю». Это честный разговор о том, как обычный человек с непростым путём использует искусственный интеллект, чтобы войти в IT. Без возрастных ограничений, без «мне уже поздно», без отговорок.

    Я пишу этот блог, чтобы ты знал: если я смог — сможешь и ты.


    Кто я и зачем я здесь

    путь в IT
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Сначала немного фактов. Я родился в 1985 году. Моё детство и юность прошли без интернета, без смартфонов, без «загугли за пять секунд». Первые компьютеры я видел в девятом классе, и они казались чем-то фантастическим. Я выучился на наладчика станков с числовым программным управлением (ЧПУ). И знаешь что? Это было настоящее программирование. Только вместо Python и JavaScript — AutoCAD. Вместо IDE — пульт управления. Вместо отладчика — твои глаза и риски сломать фрезу за сотни тысяч рублей.

    Тогда я понял главное: программа — это последовательность команд, которая заставляет железо делать то, что нужно. Разница лишь в том, какое железо. Станок или компьютер — суть одна. И этот навык остался со мной навсегда.

    Потом жизнь закрутила. Я ушёл в продажи — стал менеджером по продаже автозапчастей. Это была совсем другая история: работа с людьми, каталогами, артикулами, логистикой. Компьютер я использовал каждый день, но только как пользователь. А внутри сидел червяк: «Ты же понимаешь, как устроены программы. Ты же умеешь писать логику. Почему не идёшь в разработку?»

    Но были обязательства, семья, стабильный доход — и страх. Страх, что в 30+ уже поздно, что я ничего не знаю о современных языках, что меня не возьмут, что я не справлюсь. Я откладывал мечту на потом. На «когда-нибудь».

    А потом я понял: если не сейчас — то никогда. И в 2025 году я принял решение, которое изменило всё. Я ушёл с работы менеджера и устроился таксистом. Не потому, что хотел возить людей, а потому что это дало мне главный ресурс — время. Между заказами я учусь. В пробках слушаю лекции. Ночью после смены пишу код с помощью ИИ. Я не убегаю от реальности — я использую её как трамплин.


    Мой путь: от ЧПУ до путь в IT с нейросетями

    путь в IT
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Моё первое знакомство с программированием случилось в лицее. Я писал управляющие программы для станков. Это была жёсткая дисциплина: ошибка в одной цифре — и деталь бракована. Но там я научился структурному мышлению, алгоритмам, пониманию того, что компьютер (или станок) — тупой исполнитель, который делает только то, что ему прикажешь.

    Потом, уже работая в автозапчастях, я впервые попробовал использовать ИИ для дизайна — это был эксперимент «ИИДизайн». Тогда я использовал нейросети как потребитель: генерировал картинки, прототипы, идеи. Но меня это не устраивало. Я хотел создавать инструменты, а не просто пользоваться чужими.

    И вот, сидя за рулём такси, я в свободные минуты начал изучать как правильно общаться с ИИ, что бы он давал нужный результат. Сначала — больно и непонятно. Синтаксис чужой, логика другая, ошибки сыплются одна за другой. Но вспомнил, что у меня есть навык, который не зависит от языка — умение составлять алгоритм.

    Я стал использовать DeepSeek как своего наставника. Объяснял ему задачу, просил показать код, разбирал построчно, задавал глупые вопросы. И нейросеть терпеливо отвечала. Она не говорила «тебе уже поздно», «ты слишком стар», «ты не из IT». Она просто помогала. И это сломало мой главный барьер.

    Сегодня я пишу и готовлю первый плагин. Я прошёл путь от станка к такси, от G-кода к PHP, от страха к действию. И я хочу, чтобы каждый, кто сомневается, знал: главное не возраст и не бэкграунд, а желание и последовательность.


    Что такое «Милютин Код»?

    путь в IT
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    «Милютин Код» — это мой публичный дневник разработчика-самоучки. Я веду его, чтобы:

    • Фиксировать свой прогресс. Видеть, как я расту.
    • Делиться ошибками. Чтобы другие не наступали на те же грабли.
    • Показывать реальный код. Не идеальный, но работающий.
    • Вдохновлять. Показывать, что начать можно в любом возрасте, с любым опытом.

    Здесь ты не найдёшь сухой теории из учебников. Здесь — живая практика, живые поиски и живой человек, который учится каждый день.


    Планы на будущее: что я создаю

    Я не просто веду блог — у меня есть чёткая цель: создать полезные инструменты на стыке ИИ и автоматизации. Вот мои ближайшие проекты:

    1. Плагины для нейросетей

    Небольшие расширения, которые упрощают работу с ИИ. Например, генератор промптов или анализатор кода. Первый плагин уже в работе — скоро выложу в открытый доступ.

    2. Автоматизация рутины

    Скрипты для парсинга, обработки данных, управления файлами — всё, что можно автоматизировать, я хочу автоматизировать. Особенно пригодится мой опыт в продажах: я знаю, как работают каталоги и базы данных.

    3. Новостной агрегатор на ИИ

    Сервис, который собирает новости и анализирует их через нейросеть: выделяет главное, составляет дайджесты. Проект амбициозный, но интересный.

    4. Интерактивные туториалы

    Хочу сделать обучение программированию доступным через телеграм-бота или веб-платформу.


    Почему ИИ — мой главный инструмент?

    путь в IT
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Я выбрал нейросети не потому, что это модно. А потому что это реально экономит время. У меня нет лишних часов — я работаю таксистом, и каждая свободная минута на счету. ИИ помогает мне быстрее писать код, объяснять непонятные вещи, тестировать идеи.

    Кроме того, ИИ снижает порог входа. Мне не нужно знать всё — мне достаточно уметь правильно задать вопрос. Это как иметь опытного наставника, который всегда рядом и никогда не осуждает.

    И, главное, ИИ даёт мне возможность делать то, на что раньше уходили годы, — за месяцы. Это ускоряет моё обучение и приближает к мечте.


    Призыв: подпишись и иди со мной

    путь в IT
    Создано с помощью нейросети Алисы YandexART для milyutin-codes.ru

    Я не прошу верить мне на слово. Просто подпишись и смотри — как я ошибаюсь, учусь, расту и создаю. Если тебе откликается мой путь — нам по пути.

    🌐 Сайт: milyutin-codes.ru
    💬 Группа ВК: vk.ru/milyutin_codes
    📧 Email: milyutinkv@gmail.com

    Подписывайся, задавай вопросы, делись идеями. Я открыт.


    Вместо послесловия

    Я родился в 1985 году. В детстве у меня не было компьютера. Я работал на заводе, продавал автозапчасти, а сегодня вожу такси, чтобы найти время для своей мечты. И это — не история неудачника. Это история человека, который не сдался.

    Если ты читаешь это и думаешь, что тебе «поздно» или «ты недостаточно умён» — вспомни меня. Обычного парня, который начал с нуля в 40 лет и уже пишет свой код.

    Мы всё можем. Главное — начать.

    До встречи в коде.

    Константин Милютин
    Автор блога «Милютин Код»