MYCSS

2026-03-04

Blogger to GitHub Pages Sync Tool (blog2ghp)

Навіщо?

Я вирішив отримати практичний досвід роботи з GitHub Actions та GitHub Pages.

Мій блог має RSS-стрічку, і це дало ідею: якщо автоматично обробляти RSS-сторінки, можна отримати повну резервну копію блогу у форматі Markdown.
А вже цей Markdown легко опублікувати в репозиторії GitHub Pages / Jekyll.

Таким чином я отримую:
  • автоматичний бек-ап контенту
  • контроль над контентом у Git
  • можливість міграції з Blogger без втрат
  • статичну версію блогу

Приклад використання

Блоґ котрий копіюється

Результат копіювання на GitHub pages


Опис продукту

Це Python-утиліта, яка синхронізує пости з RSS-стрічки Blogger у репозиторій GitHub Pages / Jekyll.

Вона автоматично:
  • завантажує зображення,
  • переписує внутрішні посилання,
  • генерує коректно оформлені Markdown-файли з YAML frontmatter.

Можливості

  • Automated Sync
    Отримує пости з RSS-стрічки Blogger та синхронізує їх із репозиторієм.
  • Image Handling
    Завантажує зображення блогу та зберігає їх локально в:
    assets/images/blog/
  • Link Rewriting
    Оновлює старі доменні посилання, замінюючи їх на нову адресу GitHub Pages.
  • Jekyll-compatible Output
    Генерує Markdown-файли з правильно оформленим YAML frontmatter, сумісним із Jekyll.
  • Dry Run Mode
    Дозволяє попередньо переглянути зміни без фактичного створення або перезапису файлів.
  • Configurable
    Гнучка конфігурація через змінні середовища.

Як це працює

Утиліта працює як простий пайплайн обробки даних:

Отримання RSS

Скрипт підключається до RSS-стрічки Blogger та отримує список постів.
З RSS витягується:
  • заголовок
  • дата публікації
  • HTML-контент
  • категорії (labels)
  • постійне посилання (permalink)

Обробка HTML-контенту

Отриманий HTML проходить декілька етапів трансформації:
  • очищення зайвих тегів
  • конвертація HTML → Markdown
  • переписування внутрішніх посилань на новий GitHub Pages домен
  • пошук усіх зображень

Завантаження зображень

Усі знайдені зображення:
  • завантажуються локально
  • зберігаються у assets/images/blog/
  • перейменовуються за безпечним шаблоном
  • їхні шляхи автоматично оновлюються в Markdown-файлі
  • Таким чином блог стає повністю автономним і не залежить від зовнішнього CDN Blogger.

Генерація Markdown-файлу

Для кожного поста створюється файл у форматі: YYYY-MM-DD-post-slug.md

Файл містить:
  • YAML frontmatter (title, date, tags, layout)
  • основний Markdown-контент
  • оновлені локальні шляхи до зображень
  • Формат повністю сумісний з Jekyll.

Dry Run режим

У режимі dry-run:
  • файли не записуються
  • зображення не зберігаються
  • показується список змін, які будуть виконані
Це дозволяє безпечно перевірити результат перед реальною синхронізацією.


Інтеграція з GitHub Actions

Скрипт можна запускати:
  • локально
  • через cron
  • автоматично через GitHub Actions
У випадку GitHub Actions:
  • Виконується запуск утиліти
  • Генеруються / оновлюються Markdown-файли
  • Зміни комітяться у репозиторій
  • GitHub Pages автоматично перебудовує сайт
У результаті отримуємо повністю автоматизований процес резервного копіювання та публікації.

 GitHub Actions

Підсумок процесу

RSS → HTML → Markdown → Download Images → Rewrite Links → Commit → GitHub Pages Build



Посилання

Немає коментарів:

Коли забув ти рідну мову, біднієш духом ти щодня...
When you forgot your native language you would become a poor at spirit every day ...

Д.Білоус / D.Bilous
Рабів до раю не пускають. Будь вільним!

ipv6 ready