Блог на автопилоте: markdown в статику, выход статьи по дате и пинг в IndexNow только для новых страниц
emil_easy 6 минут назад Объяснить с Блог на автопилоте: markdown в статику, выход статьи по дате и пинг в IndexNow только для новых страниц Средний 10 мин 3 Python * Поисковая оптимизация * Настройка Linux *...
Will Anthropic have the best AI model at the end of October 2026?
Значимый прорыв формирует отрасль ИИ: emil_easy 6 минут назад Объяснить с Блог на автопилоте: markdown в статику, выход статьи по дате и пинг в IndexNow только для новых страниц Средний 10 мин 3 Python * Поисковая оптимизация * Настройка Linux * Веб-разработка * Кейс У меня блог на 78 markdown-файлах, и руками я его не публикую уже больше недели. Статья выходит, когда наступает дата в её шапке: сборщик в тот день включает её в сайт, сервер замечает новую страницу, пишет о ней поисковику и обновляет sitemap с RSS. Ниже разбираю, как это собрано, и три места, где всё ломалось.
Фреймворка тут нет, только один Python-файл примерно на 800 строк, bash-скрипт на 30 строк и cron. Весь код упрощён, домен заменён на example. com, пути на /srv/blog и /srv/www.
Технические детали
Исходная схема и почему она не устроилаСначала блог собирал и выкладывал мой Мак: по расписанию запускалась сборка, потом rsync в вебрут, потом пинг поисковику. Схема продержалась до первого дня, когда Мак вышел из сна позже, чем поднялась сеть. Статья выложилась, а запрос в IndexNow упал на DNS: имя хоста ещё не резолвилось.
Поисковик про страницу не узнал, я заметил это только через день, когда в вебмастере её не оказалось в списке. Из этого получилось два требования. Публикация не должна зависеть от того, включён ли у меня ноутбук.
И пинг должен быть привязан к факту «страница появилась на сайте», а не к тому, что скрипт дошёл до последней строки. Поэтому сборка переехала на сервер, где уже стоит nginx и отдаётся статика. Мак остался подсобным рабочим: рисует картинки и подвозит на сервер исходники (blog/posts/*.
Отраслевые последствия
md, сам сборщик, картинки). Если Мак выключен, статьи всё равно выходят, потому что на сервере лежит всё, что нужно. Мак (по желанию) Сервер (cron, каждый день 07:30 UTC) ───────────────── ───────────────────────────────────── рисует картинки build-blog.
html, sitemap, rss rsync исходников ──────────► diff с вебрутом → список новых страниц cp в вебрут indexnow. py <только новые>Формат статьиСтатья — это один . md с короткой шапкой:--- title: Как выбрать CRM для небольшой команды slug: crm-dlya-komandy date: 2026-10-12 tag: Автоматизация excerpt: Одно-два предложения для списка статей и og:description.
--- Текст в markdown... Шапку разбирает самодельный парсер на четыре строки. Это сознательно: YAML-библиотека ради пяти полей кажется лишней, а «ключ: значение» строка за строкой разбирается partition(": :def parse_post(path): raw = path.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.






