LightStaticSite

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

Основные возможности

🚀 Инкрементальная сборка

Генератор отслеживает изменения в файлах с помощью алгоритма SHA-256. Если контент статьи или шаблоны не менялись, страница не пересобирается. Имеется поддержка версионирования кэша и автоматической очистки устаревших записей.

🖼️ Автоматическая оптимизация изображений

  • Конвертация в WebP: Автоматический перевод в современный формат для экономии трафика.
  • Умный ресайз: Ограничение ширины до 1600px для ускорения загрузки.
  • Lazy Loading: Автоматическое добавление loading="lazy" ко всем картинкам.

📝 Поддержка черновиков (Drafts)

Просто добавьте draft: true в метаданные (front-matter) статьи, и она будет проигнорирована при сборке сайта.

🔍 Встроенное SEO и Локализация

  • Sitemap / RSS / Robots: Автоматическая генерация всех необходимых для поисковиков файлов.
  • Мультиязычность: Поддержка поля lang для автоматического переключения интерфейса (навбара, футера).
  • Stuctured Logging: Замена обычных принтов на модуль logging с временными метками.

📤 Умный шейринг (Sharing)

  • Native Share API: Использование системного меню «Поделиться» на мобильных устройствах.
  • Улучшенное копирование: Кнопка «Копировать ссылку» на базе Clipboard API с надежным фолбэком.
  • Чистые заголовки: Устранение HTML-сущностей (вроде &) при репосте в соцсети.

Архитектура проекта

Код разделен на специализированные модули: build.py, build_config.py, build_cache.py, build_parser.py, build_image.py, build_seo.py и build_utils.py.

Схема работы

graph TD A[Markdown Files] --> B[build.py] C[Templates] --> B D[.build_cache.json] <--> B B --> E[HTML Pages] B --> F[Sitemap / RSS] B --> G[Images / Assets] B --> B1 subgraph "Phase 1: Analysis" B1[Check Hash Changes] B2[Parse Metadata] end subgraph "Phase 2: Processing" B3[Slug Translation] B4[Image Optimization] B5[Markdown to HTML] end subgraph "Phase 3: Generation" B6[SEO Elements] B7[Cleanup Old Files] end %% Flow connections to ensure order B2 --> B3 B5 --> B6

Как пользоваться

Требования: Python 3.x, зависимости (markdown, Pillow, beautifulsoup4, transliterate).

Сборка сайта: ./gen.sh или python3 build.py

Метаданные (Front-matter):

---
title: Заголовок статьи
date: 2026-01-09
tags: AI, Python, Web
description: Краткое описание для SEO
image: cover.png # конвертируется в .webp
slug: custom-path
lang: ru # или en
aliases: old-post-name, test-path
draft: false
---

Решение проблем (Troubleshooting)

Проблема Решение
Не обновляются шаблоны Удалите .build_cache.json.
Ошибка оптимизации Нужен Pillow иначе будет просто копирование.
Слаги не на том языке Нужен интернет для API или будет транслит.