Top.Mail.Ru

Свежие статьи

Рубрики

Рубрика: Блог разработчика

Блог разработчика-самоучки: создаю сайты и плагины для WordPress с помощью ИИ. Делюсь кодом, ошибками и готовыми решениями на Python и PHP.

  • Третий день с 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, потом description, content, summary.

    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-ленте они были.

    Решение. DeepSeek написал метод extract_image(), который ищет картинку в трёх местах: media:content, enclosure (если это изображение), или первое изображение в 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
      • Системный подход — когда у тебя 13 ошибок, важно не паниковать, а разбирать их по одной, от простых к сложным.

      • DeepSeek — гениальный напарник — он не просто даёт код, он объясняет логику, предлагает альтернативы, помогает увидеть картину целиком.

      • Отладка — это творчество — каждая ошибка — это загадка, а её решение — маленькая победа.

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

      • Дубли — зло — механизм запоминания ссылок должен быть в любом парсере.

      Что дальше?

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

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

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

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

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

      Контакты

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

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

      Продолжение следует. Я приближаюсь к финалу.

      Константин Милютин

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

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

    Как я за второй день разработки починил сохранение настроек, победил ошибку 404 и научил парсер читать полные статьи

    В прошлой статье я рассказывал, как мы с 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(), который:

    • Удаляет элементы с классами ad, banner, promo, sponsor, advertisement и другими рекламными индикаторами.

    • Удаляет все <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 помог мне создать плагин, который выглядит на миллион… но пока не работает (и это нормально)

    Последние несколько дней я почти не выходил из-за компьютера. Писал плагин для WordPress, который должен автоматически собирать новости из RSS, переписывать их через нейросети, генерировать картинки и публиковать на сайт. С помощью 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_section, add_settings_field, register_setting. Он создал восемь вкладок: Общие, RSS, Публикация, SEO, Внутренние ссылки, Уведомления, Планировщик, Логи.

    Каждое поле — с nonce-защитой, валидацией и санитизацией. Например, для 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 лет и уже пишет свой код.

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

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

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