Успешный Типограф: расстановка русской типографики, которая показывает каждую правку
Открытый инструмент для русской типографики: кавычки-ёлочки, длинные тире, неразрывные пробелы — 32 правила в пяти группах. Работает как веб-сервис и как навык для Claude Code, подсвечивает каждую правку и объясняет, по какому правилу она сделана. Один движок tipograf.js для сайта и CLI, защита Markdown, режим --check для CI.
Зачем вообще нужна типографика
Есть детали, которые читатель не замечает, пока они на месте, — и спотыкается о них, как только их нет. Кавычки-ёлочки, длинное тире вместо дефиса, неразрывный пробел, который не даёт «рублю» оторваться от суммы и уехать на новую строку. По отдельности мелочь. В сумме — разница между текстом, который выглядит как черновик из мессенджера, и текстом, который выглядит как работа редактора.
Проблема в том, что расставлять всё это руками невыносимо. Дефис в тире, "кавычки" в «ёлочки», пробел перед тире в неразрывный — на статье в полторы тысячи слов таких правок набегают десятки, и часть неизбежно теряется. Задача идеально ложится на автоматику: правила формализуемы, ошибок в них немного, а выигрыш огромен.
Автоматические типографы существуют давно. Самый известный — типограф Артемия Лебедева. Вставляешь текст, жмёшь кнопку, получаешь причёсанный результат. Работает. Но у него есть свойство, которое меня всегда смущало, — и именно из-за него я собрал свой инструмент.
Что не так с «чёрным ящиком»
Классический типограф — это чёрный ящик. Ты кладёшь на вход один текст, получаешь на выходе другой, и между ними — магия. Что именно изменилось? Где? По какому правилу? Непонятно. Приходится либо верить на слово, либо построчно сравнивать два текста глазами, что убивает всю экономию времени.
Для случайной вставки это терпимо. Но когда типограф — часть постоянного рабочего процесса, доверие «вслепую» становится проблемой. Иногда правило срабатывает не там, где надо: превратит дефис в составном термине в тире, тронет кусок, который трогать не следовало. И ты об этом не узнаешь, пока не наткнёшься на испорченное место в опубликованном тексте.
Отсюда выросла главная идея «Успешного Типографа»: инструмент должен не просто править текст, а показывать, что именно он изменил и по какому правилу. Прозрачность вместо магии. Каждая правка подсвечена, у каждого из 32 правил — свой чекбокс и счётчик срабатываний. Видно не только результат, но и всю логику, которая к нему привела.
Инструмент открытый и живёт по адресу tipograf.uspeshnyy.ru, код — на GitHub. Дальше разберу, как он устроен и почему это удобно.
32 правила в пяти группах
Ядро инструмента — набор из 32 правил русской типографики, разбитых на пять смысловых групп: кавычки, тире и дефисы, пробелы и неразрывные связки, знаки и символы, чистка мусора вроде двойных пробелов. Каждое правило — это отдельная, проверяемая трансформация. Вот несколько примеров того, что происходит с текстом:
"обычные кавычки" → «обычные кавычки»
текст - с дефисом → текст — с тире
1000 руб. → 1000 руб. (неразрывный пробел перед «руб.»)
(c) 2026 → © 2026
т.д. → т. д. (неразрывный пробел внутри сокращения)
5-10 штук → 5–10 штук (короткое тире в числовом диапазоне)
Стоит 500... → Стоит 500… (многоточие одним символом)
Смысл в том, что каждое из этих превращений можно включить или выключить по отдельности. Не нравится, как правило обходится с числовыми диапазонами, — снимаешь чекбокс, и оно перестаёт срабатывать, а остальные продолжают работать. Ты управляешь типографикой на уровне отдельных правил, а не «всё или ничего».
Один движок — три способа применения
Технически весь инструмент держится на одном файле — tipograf.js. Это движок, где живут все 32 правила, и он — единственный источник правды. Его не дублируют: один и тот же код грузит и веб-версия в браузере, и консольная утилита в терминале. Значит, результат в браузере и в CI гарантированно совпадает — расхождению просто неоткуда взяться.
flowchart TD
E["tipograf.js — движок, 32 правила<br/>(единственный источник правды)"]
E --> W["index.html — веб-версия<br/>подсветка правок, панель правил, статистика"]
E --> C["tipograf-cli.mjs — CLI<br/>файлы, --check, --stdin"]
E --> S["Навык для Claude Code<br/>типографика прямо из терминала"]
T["test.js — 33 теста"] -.проверяет.-> E
Поверх движка — три способа применения. Веб-версия для ручной работы с текстом. CLI для файлов и пайплайнов. И навык для Claude Code, когда типографику нужно причесать голосом AI-агента прямо в проекте. Разберу каждый.
Веб-версия: видно каждую правку
Открываешь tipograf.uspeshnyy.ru — два поля: слева исходник, справа результат. Вставляешь текст, и справа появляется обработанная версия, где каждая правка подсвечена. Наводишься — видишь, какое правило сработало. Справа панель со всеми 32 правилами: у каждого чекбокс и счётчик, сколько раз оно применилось к этому тексту. Отключил правило — результат мгновенно пересчитался.
Это и есть та самая прозрачность. Ты не гадаешь, что сделал типограф, — ты это видишь. Настройки правил сохраняются в localStorage, так что твой набор предпочтений переживает перезагрузку страницы и остаётся при следующем визите.
Две кнопки закрывают частые сценарии. «Спецсимволы» показывает неразрывные пробелы точкой — иначе их не отличить от обычных, а именно они чаще всего и теряются. «HTML-мнемоники» копирует результат так, что неразрывный пробел уходит в буфер как , а тире — как —. Удобно, когда текст едет прямо в HTML-шаблон и невидимые символы в исходнике нежелательны.
Вся веб-версия — один self-contained index.html. Никакой сборки, никаких зависимостей: можно сохранить страницу локально и пользоваться офлайн.
CLI: типографика в пайплайне
Для тех, кто работает с текстом как с файлами, есть консольная утилита tipograf-cli.mjs. Базовое применение — прогнать по маске:
node tipograf-cli.mjs 'blog/**/*.md'
Утилита пройдёт по всем совпавшим файлам и расставит типографику прямо в них. Ключевое свойство — идемпотентность: второй прогон по тем же файлам ничего не меняет. Типографика — состояние, к которому текст сходится, а не операция, которую можно случайно применить дважды и всё испортить. Это делает утилиту безопасной для регулярного запуска.
Отсюда — режим для автоматики. Флаг --check ничего не правит, а только проверяет и возвращает код выхода 1, если правки нужны:
node tipograf-cli.mjs --check 'blog/**/*.md'
Ставишь это в pre-commit или в CI — и текст с неровной типографикой просто не проходит проверку. Ещё есть --stdin (читает stdin, пишет в stdout — удобно встраивать в конвейеры), --off id,id и --on id,id для точечного управления правилами и --rules для вывода полного списка с идентификаторами.
Markdown под защитой
Самая опасная штука в автоматической типографике — сработать там, где не надо. Превратить дефис в примере кода в тире, тронуть URL, испортить синтаксис. Поэтому у CLI встроена защита Markdown: разбирает файл и не трогает то, что трогать нельзя.
Под защитой frontmatter, fenced-блоки в тройных бэктиках, код с отступом, inline-код в одинарных бэктиках, тело ссылок [текст](адрес), HTML-теги и голые URL. Типографятся только «человеческие» куски текста — заголовки, абзацы, списки. Именно поэтому команду из предыдущего раздела можно безбоязненно гонять по всему каталогу статей: код в примерах останется кодом, ссылки — ссылками.
Важная оговорка: защита работает для Markdown. Для .txt, .html и .astro её нет — там весь файл считается текстом, так что с ними нужна аккуратность и осознанный выбор правил.
Навык для Claude Code
Последний способ применения — самый новый. На странице инструмента есть кнопка, которая отдаёт навык (skill) для Claude Code, собранный в zip. Ставишь навык — и можешь причёсывать типографику прямо из терминала, обычной просьбой к AI-агенту: «пройди типографом по статье, покажи, что поменялось». Агент применяет тот же движок с теми же 32 правилами, что и веб-версия, — никакого расхождения между «руками в браузере» и «голосом в терминале».
Для меня это закрыло рабочий цикл. Раньше типографика была отдельным шагом: закончил статью — не забудь прогнать через типограф. Теперь это часть разговора с агентом, который и так помогает мне писать. Кстати, именно этим инструментом причёсывается типографика всех статей вот этого блога, включая ту, что вы сейчас читаете. Инструмент, который я показываю, — не витрина, а мой ежедневный рабочий стол.
Почему это работает надёжно
За 32 правилами стоят 33 теста в test.js. На первый взгляд типографика кажется простой, но дьявол в краевых случаях: дефис на конце строки, кавычки внутри кавычек, число рядом со знаком процента, сокращение в начале предложения. Каждый такой случай зафиксирован тестом, и любое изменение движка сначала проходит через них. Это то, что позволяет спокойно гонять --check в CI и доверять инструменту тексты, которые уйдут в публикацию.
Сложите всё вместе — прозрачность правок, единый движок, защиту Markdown, идемпотентность и тесты, — и получится не «ещё один типограф», а инструмент, которому можно доверять постоянную работу с текстом. Не потому, что он обещает магию, а потому, что показывает каждый свой шаг.
Попробовать
Открыть Типографtipograf.uspeshnyy.ru Исходники на GitHubuspeshnyy-tipografЧитайте также
- Claude Code для нетехнарей: как начать — если хотите разобраться, что за AI-агент в терминале и как ставить навыки.
- Шаблон CLAUDE.md: как объяснить агенту ваш проект — про то, как настроить правила проекта, чтобы агент писал в вашем стиле.
- Куда утекают заявки: 7 дыр — про детали, которые незаметно портят впечатление, только уже не в тексте, а в воронке.
Следующий шаг: если хотите внедрить типограф в свой контент-пайплайн или собрать похожий инструмент под свои правила — напишите мне в Telegram, разберём вашу задачу.








Комментарии
Войдите через Telegram, чтобы оставить комментарий:
Пока нет комментариев. Будьте первым.