Автоматический конвертер для преобразования хранилища Obsidian в Hugo wiki с темой PaperMod.
- ✅ Автоматическое преобразование Obsidian заметок в Hugo формат
- ✅ Поддержка темы PaperMod с полной настройкой
- ✅ Конвертация wikilinks в обычные markdown ссылки
- ✅ Обработка тегов из front matter и контента
- ✅ Копирование вложений (изображения, PDF, GLTF 3D модели, и др.)
- ✅ Конвертация callouts в Hugo admonitions
- ✅ Автоматическое создание оглавления
- ✅ Режим наблюдения за изменениями в реальном времени
- ✅ Анализ структуры хранилища Obsidian
- ✅ Готовые конфигурации для развертывания
- Python 3.12+
- Hugo (для просмотра результата)
- Git (для управления темой)
- Клонируйте репозиторий:
git clone <repository-url>
cd obsidian-to-hugo- Установите зависимости:
pip install -e .- Установите Hugo:
# macOS
brew install hugo
# Ubuntu/Debian
sudo apt-get install hugo
# Windows
choco install hugo# Запустите скрипт настройки
./scripts/setup_hugo.sh
# Установите тему PaperMod
git submodule add --depth=1 https://github.com/adityatelange/hugo-PaperMod.git themes/hugo-papermod# Базовое преобразование
python3 -m obsidian_to_hugo convert \
--obsidian-vault /path/to/your/obsidian/vault \
--hugo-content ./content \
--hugo-static ./static
# С дополнительными опциями
python3 -m obsidian_to_hugo convert \
--obsidian-vault /path/to/your/obsidian/vault \
--hugo-content ./content \
--hugo-static ./static \
--include-patterns "*.md" "*.markdown" \
--exclude-patterns "**/draft/*" "**/private/*" \
--attachment-extensions png jpg pdf mp4 \
--toc-max-depth 4# Запуск GUI приложения
python3 -m obsidian_to_hugo --guiGUI предоставляет:
- Визуальную настройку путей и параметров
- Кнопки для быстрого доступа к функциям
- Вкладки для просмотра результатов и логов
- Интерактивный режим наблюдения за файлами
- Автоматический запуск Hugo сервера с открытием браузера
# Через Makefile
make serve
# Через скрипт
./scripts/start_hugo_server.sh# Режим разработки
hugo server -D
# Сборка для продакшена
hugopython3 -m obsidian_to_hugo convert [OPTIONS]Опции:
--obsidian-vault, -i- Путь к хранилищу Obsidian (обязательно)--hugo-content, -c- Путь к директории content Hugo (по умолчанию:./content)--hugo-static, -s- Путь к директории static Hugo (по умолчанию:./static)--hugo-archetypes, -a- Путь к директории archetypes Hugo (по умолчанию:./archetypes)--theme, -t- Название темы Hugo (по умолчанию:hugo-papermod)--include-patterns- Паттерны файлов для включения (можно указать несколько раз)--exclude-patterns- Паттерны файлов для исключения (можно указать несколько раз)--attachment-extensions- Расширения файлов для копирования как вложения--no-wikilinks- Отключить конвертацию wikilinks--no-tags- Отключить конвертацию тегов--no-attachments- Отключить копирование вложений--no-toc- Отключить создание оглавления--toc-max-depth- Максимальная глубина оглавления (по умолчанию: 3)--no-front-matter- Не сохранять оригинальный front matter
python3 -m obsidian_to_hugo watch [OPTIONS]Автоматически отслеживает изменения в хранилище Obsidian и переконвертирует файлы.
python3 -m obsidian_to_hugo analyze --obsidian-vault /path/to/vaultПоказывает статистику хранилища: количество файлов, тегов, ссылок.
python3 -m obsidian_to_hugo convert \
--obsidian-vault ~/Documents/Obsidian/MyVault \
--hugo-content ./content \
--hugo-static ./staticpython3 -m obsidian_to_hugo convert \
--obsidian-vault ~/Documents/Obsidian/MyVault \
--exclude-patterns "**/draft/*" "**/private/*" "**/temp/*" \
--include-patterns "*.md" "*.markdown"python3 -m obsidian_to_hugo watch \
--obsidian-vault ~/Documents/Obsidian/MyVault \
--hugo-content ./contentПрограмма поддерживает множество настроек через параметры командной строки:
- Паттерны файлов: Укажите, какие файлы включать/исключать
- Вложения: Настройте, какие типы файлов копировать
- Wikilinks: Включите/отключите конвертацию внутренних ссылок
- Теги: Настройте обработку тегов
- Оглавление: Настройте автоматическое создание TOC
После установки темы вы можете настроить её в hugo.toml:
[params]
title = "Моя Wiki"
description = "Конвертировано из Obsidian"
author = "Ваше имя"
defaultTheme = "auto"
ShowReadingTime = true
ShowShareButtons = true
ShowPostNavLinks = true
ShowBreadCrumbs = true
ShowCodeCopyButtons = true
ShowWordCount = true
UseHugoToc = true- Включите GitHub Pages в настройках репозитория
- Установите источник на GitHub Actions
- Используйте готовый workflow в
.github/workflows/hugo.yml
- Подключите репозиторий к Netlify
- Установите команду сборки:
hugo - Установите директорию публикации:
public
- Импортируйте репозиторий в Vercel
- Установите команду сборки:
hugo - Установите выходную директорию:
public
# Запуск всех тестов
pytest
# Запуск с покрытием
pytest --cov=src --cov-report=html
# Запуск линтера
ruff check src/
# Проверка типов
mypy src/obsidian-to-hugo/
├── src/obsidian_to_hugo/
│ ├── core/ # Основные модели данных
│ ├── converters/ # Конвертеры
│ ├── watchers/ # Файловые наблюдатели
│ ├── utils/ # Утилиты
│ ├── cli.py # CLI интерфейс
│ └── main.py # Точка входа
├── tests/ # Тесты
├── configs/ # Конфигурации Hugo
├── scripts/ # Скрипты настройки
├── docs/ # Документация
└── README.md
- Markdown файлы с front matter
- Wikilinks
[[filename]]→[filename](/filename/) - Теги из front matter и контента
- Callouts → Hugo admonitions
- Вложения (изображения, PDF, GLTF 3D модели, и др.)
- Структура папок
- Front matter (с сохранением оригинальных полей)
- Интерактивные 3D просмотрщики для GLTF/GLB файлов
- Встроенные PDF просмотрщики с возможностью скачивания
- Dataview запросы не конвертируются
- Canvas файлы не поддерживаются
- Плагины Obsidian не переносятся
- Настройки темы нужно настраивать отдельно
Запустите демонстрационный скрипт для быстрого тестирования:
./scripts/demo.shЭтот скрипт создаст тестовое Obsidian хранилище и покажет процесс конвертации.
Для тестирования поддержки GLTF и PDF файлов:
./scripts/demo_media.shЭтот скрипт создаст примеры с 3D моделями и PDF документами.
Для запуска графического интерфейса:
./scripts/demo_gui.shИли напрямую:
python3 -m obsidian_to_hugo --guiGUI предоставляет удобный интерфейс для всех функций конвертера.
Для автоматического запуска Hugo сервера:
# Через Makefile
make serve
# Через скрипт
./scripts/start_hugo_server.sh
# С указанием директории
./scripts/start_hugo_server.sh /path/to/hugo/siteСкрипт автоматически:
- Проверяет и устанавливает Hugo
- Находит или создает Hugo сайт
- Устанавливает тему PaperMod
- Запускает сервер разработки
- Открывает браузер
- Форкните репозиторий
- Создайте ветку для новой функции
- Внесите изменения
- Добавьте тесты
- Создайте Pull Request
MIT License - см. файл LICENSE.
- Issues: Создайте issue в GitHub
- Discussions: Используйте Discussions для вопросов
- Wiki: Дополнительная документация