Skip to main content

git2blog

Generator bloga z historii Git używający lokalnego modelu Ollama LLM.

Funkcje

  • AI-powered: Używa Ollama do generowania interesujących postów z commitów Git
  • Automatyczna konwersja: Przekształca suche commity w angażujące posty blogowe
  • Gotowe szablony: Generuje kompletny blog HTML gotowy do publikacji
  • Konfigurowalne: Pełna personalizacja przez plik YAML
  • Inteligentne filtrowanie: Pomija merge commity i spam
  • Polski interface: Wszystko po polsku

Wymagania

  1. Python 3.7+
  2. Git - repozytorium z historią commitów
  3. Ollama - lokalny serwer LLM
    # Instalacja Ollama (Linux/macOS)
    curl -fsSL https://ollama.ai/install.sh | sh
    
    # Uruchom model (np. llama3.2)
    ollama run llama3.2
    

Szybki start

  1. Zainstaluj zależności:
    pip install -r requirements.txt
    
  2. (Opcjonalnie) Zainstaluj narzędzia deweloperskie:
    make install-dev
    
  3. Skonfiguruj projekt:
    python git2blog.py init
    # lub przez menu:
    python git2blog.py menu
    
  4. Wygeneruj bloga:
    python git2blog.py run
    # lub przez Makefile:
    make run
    

Instalacja

  1. Sklonuj/pobierz projekt:

    mkdir git2blog && cd git2blog
    # Skopiuj git2blog.py do tego katalogu
    
  2. Zainstaluj zależności:

    pip install -r requirements.txt
    
  3. Utwórz konfigurację:

    python git2blog.py --init
    

Użycie

  1. Przejdź do swojego repozytorium Git:

    cd /ścieżka/do/twojego/projektu
    
  2. Uruchom generator:

    python /ścieżka/do/git2blog.py
    
  3. Otwórz wygenerowany blog:

    open blog/index.html
    

Testowanie

Aby uruchomić testy:

make test
# lub bezpośrednio:
pytest

Najważniejsze cele Makefile

  • make install – instalacja zależności
  • make install-dev – instalacja narzędzi deweloperskich
  • make run – generowanie bloga
  • make test – uruchomienie testów
  • make clean – usunięcie plików tymczasowych

Konfiguracja

Edytuj git2blog.yaml aby dostosować:

# Ollama settings
ollama_url: 'http://localhost:11434'
model: 'llama3.2'  # lub codellama, mistral, itp.
timeout: 120  # (opcjonalnie) czas oczekiwania na odpowiedź Ollama w sekundach

# Blog settings
blog_title: 'Mój Blog Projektowy'
blog_description: 'Blog generowany automatycznie z historii Git'
author: 'Twoje Imię'
output_dir: 'blog'

# Linki do projektu (opcjonalnie)
repo_url: 'https://github.com/uzytkownik/projekt'   # link do repozytorium (GitHub/GitLab)
issues_url: 'https://github.com/uzytkownik/projekt/issues'  # link do issues (opcjonalnie)
pages_url: 'https://uzytkownik.github.io/projekt'   # link do GitHub Pages/GitLab Pages (opcjonalnie)

# Generation settings
commit_limit: 50              # Ile commitów przetworzyć
posts_per_page: 10           # Posty na stronę (przyszła funkcja)
ignore_merge_commits: true   # Pomijaj merge commity

Nowości

  • Domyślny timeout zapytań do Ollama został zwiększony do 120 sekund (wcześniej 30s). Jeśli generacja posta trwa dłużej, nie przerywaj procesu od razu – większe modele mogą potrzebować więcej czasu.
  • Dodano obsługę linków do profilu autora (GitHub/GitLab), historii commitów (po dacie), commita, repozytorium, issues i GitHub Pages/GitLab Pages w wygenerowanych stronach HTML (na podstawie konfiguracji repo_url/issues_url/pages_url).

Przykładowe użycie

# W katalogu z twoim projektem Git
cd ~/moje-projekty/awesome-app

# Wygeneruj blog (domyślna konfiguracja)
python ~/git2blog/git2blog.py

# Użyj własnej konfiguracji
python ~/git2blog/git2blog.py --config custom-config.yaml

# Blog zostanie utworzony w katalogu ./blog/
ls blog/
# index.html  post_1.html  post_2.html  ...

Struktura wyjściowa

blog/
├── index.html      # Strona główna z listą postów
├── post_1.html     # Najnowszy commit jako post
├── post_2.html     # Drugi commit
└── ...

Dostępne modele Ollama

Popularne modele do wyboru:

  • llama3.2 - Szybki i dobry (domyślny)
  • codellama - Specjalizuje się w kodzie
  • mistral - Mały i efektywny
  • gemma - Od Google

Zmień model w git2blog.yaml:

model: 'codellama'

Troubleshooting

"Nie można połączyć się z Ollama"

# Sprawdź czy Ollama działa
curl http://localhost:11434/api/tags

# Jeśli nie, uruchom:
ollama serve

"Nie znajdujesz się w repozytorium Git"

# Upewnij się że jesteś w katalogu z .git
ls -la | grep .git

"Nie znaleziono żadnych commitów"

# Sprawdź historię Git
git log --oneline -10

"Timeout podczas generowania posta lub długi czas oczekiwania"

Zwiększono domyślny timeout do 120 sekund. Jeśli nadal pojawia się timeout, sprawdź czy Twój model Ollama nie wymaga jeszcze więcej czasu lub zasobów.

Możesz też ustawić własny timeout (w pliku konfiguracyjnym lub przez zmienną środowiskową, jeśli obsługiwane):

timeout: 180

lub:

export OLLAMA_TIMEOUT=180

Planowane funkcje

  • Obsługa markdown zamiast HTML
  • Paginacja dla dużych blogów
  • Kategorie i tagi na podstawie ścieżek plików
  • RSS feed
  • Ciemny motyw
  • Export do platform blogowych

Licencja

Licencja: Apache 2.0

Autor

Tom Sapletta — DevOps Engineer & Systems Architect

Metadata

Release files for git2blog 1.0.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for git2blog 1.0.8
File Size Uploaded
git2blog-1.0.8.tar.gz 11.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for git2blog 1.0.8
File Interpreter ABI Platform
git2blog-1.0.8-py3-none-any.whl Python 3 none any Details

Total release size: 23.8 kB

Release files / git2blog-1.0.8.tar.gz

Download URL git2blog-1.0.8.tar.gz
Size 11.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4c34c8bc69157767b3c16643cf1d7925f9aac52b0483252bbb4eab53d9d18b21
BLAKE2b-256 checksum
How to use checksums
8ad1b39dbf96cdc11cfb4e4f900fa744cae8772d2170efca7f6e5d9ac4dc029e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release files / git2blog-1.0.8-py3-none-any.whl

Download URL git2blog-1.0.8-py3-none-any.whl
Size 12.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cd66d4f068f8de1cda4555ab80dc43ac3b2865b5fefe5fd2477f120f1ec12a9c
BLAKE2b-256 checksum
How to use checksums
75de32d9ca1e02f8db9f25b0d4a3c0ee357429756d9abd74f66477e3920faabe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.3

Release history Release notifications | RSS feed

This release

1.0.8 This release

2 release files

1.0.7

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page