<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Nik Nikitenok</title><description>Посты и заметки Ника Никитенка.</description><link>https://nikitenok.dev/ru/</link><language>ru</language><atom:link href="https://nikitenok.dev/ru/rss.xml" rel="self" type="application/rss+xml"/><item><title>Три недели Talkfirst: Telegram Mini App, MCP в ChatGPT и Claude и один клик из Google</title><link>https://nikitenok.dev/ru/blog/talkfirst-first-weeks/</link><guid isPermaLink="true">https://nikitenok.dev/ru/blog/talkfirst-first-weeks/</guid><description>Как я собрал Talkfirst: разговорная практика, литовский A2 и экзамен по Конституции, MCP-сервер для ИИ-ассистентов и честные цифры первого SEO.</description><pubDate>Fri, 23 Oct 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Talkfirst начинался с простой мысли: язык учат, когда говорят на нём, а карточки и квизы нужны только как подпорки к разговору. Первые спеки сервиса я написал 23 сентября. К 12 октября у продукта уже был свой домен talkfirst.io, Telegram Mini App, веб-приложение, MCP-сервер для ChatGPT и Claude, пробный экзамен по Конституции Литвы и 31 SEO-статья. В этом посте я рассказываю, что из этого реально работает, как оно устроено и какие у меня цифры. Цифры пока маленькие, и это тоже часть рассказа.&lt;/p&gt;
&lt;h2 id=&quot;одно-ядро-много-тонких-клиентов&quot;&gt;Одно ядро, много тонких клиентов&lt;/h2&gt;
&lt;p&gt;Архитектурное решение я принял в первый же день дистрибуции. Есть одно ядро, а к нему много тонких клиентов. Аккаунт, словарь, карточки, повторения, озвучка, разговоры и прогресс везде одни и те же. Клиент — это просто ещё одна точка, где человек впервые встречает продукт.&lt;/p&gt;
&lt;p&gt;На старте ядро умело разговор голосом с разбором пауз, произношение, квиз, словарь и прогресс, а наружу смотрело PWA и MCP-эндпоинтом с виджетами. Вход был только по приглашению, лимитов и оплаты не было. Первым внешним клиентом я выбрал Telegram Mini App: там регистрация через Telegram и оплата звёздами Telegram без своей платёжки.&lt;/p&gt;
&lt;p&gt;Порядок волн: веб с programmatic SEO, Telegram, расширение браузера, ChatGPT/MCP, Discord, сторы; WhatsApp, Slack и Teams — во второй волне.&lt;/p&gt;
&lt;h2 id=&quot;лимиты-и-деньги&quot;&gt;Лимиты и деньги&lt;/h2&gt;
&lt;p&gt;Через неделю появились недельные лимиты. Free — 35 минут голоса в неделю. Pro — 140 минут за 500 звёзд Telegram. Сброс в понедельник по часовому поясу курса. Тогда же я завёл учёт расходов на каждого пользователя. По нему экзаменационные реплики я перевёл на другую модель, и одна реплика стала стоить около $0,0005 вместо $0,014.&lt;/p&gt;
&lt;p&gt;Юнит-экономика при этом не сошлась, и я это вижу. По оценке, Pro-пользователь, который выбирает лимит до конца, стоит мне примерно $8–13 в месяц. Со звёзд Telegram я получаю около $6,5. Вопрос открыт: ограничить у Pro промахи озвучки или поднять цену. Решать надо до запуска оплаты картой. Сейчас Pro покупается только звёздами в боте. Под веб-оплату уже лежит спека с вариантами провайдера.&lt;/p&gt;
&lt;h2 id=&quot;литовский-a2-и-конституция&quot;&gt;Литовский: A2 и Конституция&lt;/h2&gt;
&lt;p&gt;Литовский я учу сам, поэтому этот трек получил больше всего внимания. Контент я собирал из открытых источников:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;частотный словарь CCLL;&lt;/li&gt;
&lt;li&gt;примеры из Tatoeba с указанием авторов;&lt;/li&gt;
&lt;li&gt;банк заданий экзамена A2 по программе NŠA, в первой версии 77 заданий.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Отдельно сделал трек «курьер / водитель» на литовском и польском. В нём четыре сцены, сцена «у двери» бесплатная. Письменный литовский A2 вышел 7 октября.&lt;/p&gt;
&lt;p&gt;Пробный экзамен по основам Конституции Литвы — это банк из 200 вопросов, сверенный с текстом редакции 2022 года. Режимов три: «как на экзамене», тренировка и работа над ошибками. На Free доступен один вариант раз в 7 дней и один раздел, на Pro всё. У лендинга экзамена есть демо без регистрации.&lt;/p&gt;
&lt;p&gt;При проверке банка всплыл неприятный артефакт генерации: верный вариант часто оказывается самым длинным. Так вышло в 98 вопросах из 200. Человек, который сдаёт экзамен по-настоящему, такую подсказку выучит за вечер. Поэтому неверные варианты буду переписывать.&lt;/p&gt;
&lt;h2 id=&quot;mcp-talkfirst-внутри-chatgpt-и-claude&quot;&gt;MCP: Talkfirst внутри ChatGPT и Claude&lt;/h2&gt;
&lt;p&gt;Помимо Telegram и веба, Talkfirst можно подключить в ИИ-ассистент как MCP-сервер.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Протокол и вход.&lt;/strong&gt; Удалённый сервер на Streamable HTTP, OAuth 2.1 с PKCE S256 и динамической регистрацией клиентов. Войти можно кодом на email или через Telegram.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Инструменты.&lt;/strong&gt; Они открывают окна MCP Apps: оценка произношения, голосовой разговор с ИИ-партнёром, квизы. Помимо окон есть личный словарь с интервальным повторением, аудиоуроки, недельный план и прогресс.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Реестр.&lt;/strong&gt; Сервер опубликован в официальном MCP Registry как &lt;code&gt;io.talkfirst/talkfirst&lt;/code&gt;. Оттуда его подхватывают другие каталоги.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Самое полезное, что я узнал про хосты, касается ограничений, а не возможностей:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Мобильный Claude.&lt;/strong&gt; Окна MCP Apps на вебе и десктопе Claude получают микрофон. В мобильном приложении WebView работает без микрофона, поэтому разговорная практика там не работает.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Каталог ChatGPT.&lt;/strong&gt; Ревью заявки по документации занимает 60–120 дней. Доступность в ЕС на момент исследования не подтверждена.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Правила плагинов ChatGPT.&lt;/strong&gt; Внутри плагина нельзя показывать тарифы и звать на апгрейд. Поэтому сервер ни в одном хосте не предлагает Pro: про лимит он сообщает как факт и добавляет «подробнее в приложении Talkfirst».&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;seo-без-cms-честные-цифры&quot;&gt;SEO без CMS: честные цифры&lt;/h2&gt;
&lt;p&gt;Гайды я генерирую скриптом из исходников в репозитории лендинга, без CMS. Сейчас это 31 статья на русском, украинском, английском и польском по 11 темам: литовский и польский, первые фразы, темы устной части B1 и так далее. Техническое SEO такое:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sitemap с hreflang;&lt;/li&gt;
&lt;li&gt;canonical со слешем;&lt;/li&gt;
&lt;li&gt;JSON-LD;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;noindex&lt;/code&gt; на приложении и API.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Одна тонкость стоила мне времени. Страница входа открыта в robots.txt, но отдаёт &lt;code&gt;noindex&lt;/code&gt;. Причина в том, что URL, закрытый в robots, поисковик не обходит. Значит, он не увидит и &lt;code&gt;noindex&lt;/code&gt;, а голый адрес в выдаче хуже, чем никакого.&lt;/p&gt;
&lt;p&gt;Теперь цифры. Первая полная неделя в Search Console (28 сентября — 4 октября): 1 клик и 2 показа. Единственный клик — по брендовому запросу «talk first», позиция 2.&lt;/p&gt;
&lt;p&gt;На 4 октября два отчёта Search Console показывали разное. Отчёт sitemap: отправлено 56 адресов, в индексе 0. Отчёт покрытия того же дня: Google знал 60 страниц, и вот где они были:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;в индексе — 12;&lt;/li&gt;
&lt;li&gt;«обнаружена, не проиндексирована» — 38: Google туда ещё не заходил, домен новый и без внешних ссылок;&lt;/li&gt;
&lt;li&gt;«просканирована, но не проиндексирована» — 8, и среди них три гайда «первые фразы».&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Разметка у них в порядке, я проверил вживую. Моя гипотеза: тексты на разных языках слишком похожи, и молодому домену Google оставляет одну версию. Это пока гипотеза, не вывод.&lt;/p&gt;
&lt;p&gt;Для ИИ-поисковиков добавил &lt;code&gt;llms.txt&lt;/code&gt;, Content-Signal в robots и единый узел бренда в JSON-LD. Для каталогов подготовил 9 заявок: Product Hunt, AlternativeTo, SaaSHub, BetaList, Uneed, There’s An AI For That, Futurepedia, Glama и каталог Telegram Mini Apps FindMini. Какие из них стоят своих денег, ещё решаю. Платные варианты стоят от $5 за приоритет до $497.&lt;/p&gt;
&lt;h2 id=&quot;как-это-делалось&quot;&gt;Как это делалось&lt;/h2&gt;
&lt;p&gt;Делали это два потока агентов Claude Code в одном коде: продукт и дистрибуция. Сервер дорабатывает дистрибуция, экраны — продукт. Задания между потоками передаются файлами, потому что сессии меняются и сообщение между ними может потеряться.&lt;/p&gt;
&lt;p&gt;На совместной работе в одном дереве мы один раз обожглись. 24 сентября чужой коммит забрал половину наших правок, и HEAD был сломан до нашего коммита. С тех пор правило такое:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;если в общем файле есть чужие правки, свой патч коммитим через &lt;code&gt;git apply --cached&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;тесты перед выкладкой гоняем на &lt;code&gt;git archive HEAD&lt;/code&gt;, а не на рабочей копии.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Тестов было 932 на 2 октября и 2021 в прогоне 12 октября. Прод раз в час проверяет локальная рутина и пишет мне, если что-то не так.&lt;/p&gt;
&lt;h2 id=&quot;что-дальше&quot;&gt;Что дальше&lt;/h2&gt;
&lt;p&gt;Открытых вопросов три: оплата картой, экономика Pro и индексация. Чешский уже в коде: движок, колоды A1–A2, лендинг и три гайда, но на сайт пока не выложен.&lt;/p&gt;
&lt;p&gt;И пользователи. По еженедельному отчёту за 28 сентября — 4 октября: 3 ученика, 1 активный за неделю, 1 Pro, 0 оплат за неделю. Это не опечатка, это старт.&lt;/p&gt;
</content:encoded><category>talkfirst</category><category>mcp</category><category>seo</category><category>lithuanian</category></item></channel></rss>