Навіщо?
Я вирішив отримати практичний досвід роботи з 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



Немає коментарів:
Дописати коментар