← Все записи

Привет, skoderok.com

Что это за сайт, что здесь будет появляться и почему блог редактируется через MCP, а не через CMS.

2 мин чтения

Эта запись есть и на английском: Hello, skoderok.com

Я Валерий Чупурнов. Пишу софт давно; если моё имя вам знакомо, то скорее всего по Jodit — WYSIWYG-редактору, который я поддерживаю уже больше десяти лет. Этот сайт — место для всего остального: экспериментов, инструментов, вещей, которые слишком малы для README репозитория и слишком велики для твита.

Что здесь есть

  • Обо мне — короткая страница: кто я и как связаться.
  • Проекты — то, что я поддерживаю: Jodit и плагины к нему, внутренние инструменты, симулятор экосистемы, о котором будет следующий пост.
  • Демо — то, что можно потыкать. Первое — вьюер World 2.0: сфера на three.js, по которой бегают животные с крошечной нейросетью, обученной внутри Rust-симуляции.
  • Статьи — длинные, вычитанные тексты. Их будет меньше, но они аккуратнее.
  • Блог — вот это. Рабочие заметки по ходу дела. Два языка: русский по умолчанию (/blog/), английский под /blog/en/. Перевод есть не у каждого поста; если есть — переключатель языка в шапке ведёт на него.

Как устроен блог

Я не хотел ни CMS, ни статику, которую надо пересобирать ради каждой опечатки. Блог — это Astro в серверном режиме внутри Docker-контейнера. Посты — обычные markdown-файлы с frontmatter в примонтированной директории; сервер читает их в момент запроса и кэширует отрендеренный HTML по mtime файла. Положил файл — пост в эфире.

Самое интересное — как файлы туда попадают. Блог отдаёт MCP-эндпоинт на /blog/mcp с набором инструментов: posts_list, posts_get, posts_search, posts_create, posts_update, posts_publish, posts_delete. Чтение открыто, для записи нужен bearer-токен. То есть я могу открыть Claude Code, сказать «поправь опечатку во втором абзаце поста про World» или «сделай черновик английского перевода вчерашней заметки» — и агент правит настоящий файл на сервере. То же и с самим симулятором: когда заканчивается прогон обучения, агент может сразу написать сюда черновик с результатами.

{
  "mcpServers": {
    "skoderok-blog": {
      "type": "http",
      "url": "https://skoderok.com/blog/mcp",
      "headers": { "Authorization": "Bearer <token>" }
    }
  }
}

Всё это небольшое: один TypeScript-модуль для чтения и записи постов, один — для MCP-инструментов, несколько страниц на Astro. Ни базы, ни админки. Если разонравится — посты останутся markdown-файлами в папке.

Что дальше

Первый настоящий пост — про World 2.0: зачем я написал симулятор экосистемы на Rust без единой зависимости и с побитово детерминированным ядром, и чего стоило научить MLP с 59 входами вести себя как животное, написанное руками. Потом — заметки о внутренностях Jodit, об инструментах вокруг этого сайта и о том, что я в данный момент отлаживаю.

Есть RSS, если удобнее следить так.