mirror of
https://github.com/EDeev/declaude.git
synced 2026-10-07 20:49:57 +03:00
README на русском и английском, скриншоты архива
Установка через pipx/pip (пакет claude-export-html), команда declaude, использование из Python; README.en.md служит описанием пакета на PyPI.
This commit is contained in:
parent
2855096065
commit
6064e7db46
5 changed files with 190 additions and 66 deletions
107
README.en.md
Normal file
107
README.en.md
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
# declaude
|
||||
|
||||
[Русский](https://github.com/EDeev/declaude/blob/main/README.md) · **English**
|
||||
|
||||
[](https://github.com/EDeev/declaude/actions/workflows/ci.yml)
|
||||
[](https://pypi.org/project/claude-export-html/)
|
||||
[](https://pypi.org/project/claude-export-html/)
|
||||
[](https://github.com/EDeev/declaude/blob/main/LICENSE)
|
||||
|
||||
Turns a Claude.ai data export into a static HTML archive: browse, search and read all your chats and
|
||||
projects in a browser, offline, with no servers or databases.
|
||||
|
||||
**Status:** personal project, maintained · online version at [fe0.ru/declaude](https://fe0.ru/declaude/)
|
||||
|
||||

|
||||
|
||||
**Stack:** Python 3.9+ (standard library only) · HTML · CSS · vanilla JS
|
||||
|
||||
## Features
|
||||
|
||||
- A page per chat and project, a home page with stats and recent chats
|
||||
- Markdown: headings, lists, tables, quotes, code with highlighting (Python, JS/TS, SQL, Bash, Go, Rust)
|
||||
- Search and filter across all chats, light and dark themes, Russian and English UI
|
||||
- Assign chats to projects right in the browser and export `mapping.json`
|
||||
- Incremental update from a new export: only changed chats are rebuilt
|
||||
- Links from chats are safe: `javascript:` and similar schemes never reach the archive
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
pipx install claude-export-html # or: pip install claude-export-html
|
||||
```
|
||||
|
||||
Don't want to install anything? Upload the zip at [fe0.ru/declaude](https://fe0.ru/declaude/). If
|
||||
privacy matters, run it locally.
|
||||
|
||||
## Usage
|
||||
|
||||
1. Claude.ai → **Settings → Privacy → Export data**, download the zip from the email and unpack it.
|
||||
2. Build the archive and open `claude_archive/index.html`:
|
||||
|
||||
```bash
|
||||
declaude --build --source ./claude-export
|
||||
declaude --build --source ./claude-export --output ./my-archive # custom folder
|
||||
declaude --update new_export.zip # add a newer export
|
||||
declaude --map <conversation_uuid> <project_uuid> && declaude --remap
|
||||
```
|
||||
|
||||
| Option | Purpose |
|
||||
|---|---|
|
||||
| `--build` | full build from an unpacked export |
|
||||
| `--source PATH` | export folder (default `claude-backup-v1`) |
|
||||
| `--output PATH` | archive folder (default `claude_archive`) |
|
||||
| `--update ZIP` | add data from a new zip, project assignments are kept |
|
||||
| `--map CHAT PROJECT`, `--remap` | assign a chat to a project and rebuild the home and project pages |
|
||||
| `--mapping PATH` | assignments file (default `./mapping.json`) |
|
||||
|
||||
`python -m declaude` works as well as the `declaude` command.
|
||||
|
||||
> [!NOTE]
|
||||
> The archive is plain HTML files; no data is sent anywhere. Theme and language choices are stored in
|
||||
> the browser's localStorage.
|
||||
|
||||
## Screenshots
|
||||
|
||||
| Chat | Project |
|
||||
|---|---|
|
||||
|  |  |
|
||||
|
||||
## Using from Python
|
||||
|
||||
```python
|
||||
from pathlib import Path
|
||||
from declaude import DataLoader, MappingManager, SiteBuilder
|
||||
|
||||
loader = DataLoader(Path("claude-export")); loader.load()
|
||||
mapping = MappingManager(Path("mapping.json")); mapping.load()
|
||||
SiteBuilder(Path("archive"), loader, mapping).build_all()
|
||||
```
|
||||
|
||||
This is how the web version on fe0.ru uses it; FastAPI integration notes (in Russian):
|
||||
[docs/fastapi-integration.md](https://github.com/EDeev/declaude/blob/main/docs/fastapi-integration.md).
|
||||
|
||||
## Development
|
||||
|
||||
```bash
|
||||
pip install -e . -r requirements-dev.txt
|
||||
ruff check . && pytest
|
||||
```
|
||||
|
||||
The tests build an archive from a fictional export in `tests/fixtures` and check pages, Markdown,
|
||||
escaping and link safety. CI runs them on Python 3.9–3.13; every `v*` tag publishes the package to PyPI.
|
||||
|
||||
## License
|
||||
|
||||
MIT — see [LICENSE](https://github.com/EDeev/declaude/blob/main/LICENSE).
|
||||
|
||||
## Author
|
||||
|
||||
**Egor Deev** — [GitHub](https://github.com/EDeev) · [Telegram](https://t.me/DeevEgor) · [egor@deev.space](mailto:egor@deev.space)
|
||||
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
<sub>⭐ If you find this project useful, give it a star on GitHub!</sub>
|
||||
<p><sub>Made with ❤️ — <a href="https://deev.space">deev.space</a></sub></p>
|
||||
</div>
|
||||
149
README.md
149
README.md
|
|
@ -1,91 +1,108 @@
|
|||
# declaude
|
||||
|
||||
Автономная утилита для преобразования официального экспорта данных Claude.ai в интерактивный статический HTML-архив.
|
||||
**Русский** · [English](README.en.md)
|
||||
|
||||
Позволяет локально хранить, просматривать и быстро искать диалоги без внешних зависимостей и необходимости поднимать базы данных или веб-серверы.
|
||||
[](https://github.com/EDeev/declaude/actions/workflows/ci.yml)
|
||||
[](https://pypi.org/project/claude-export-html/)
|
||||
[](https://pypi.org/project/claude-export-html/)
|
||||
[](LICENSE)
|
||||
|
||||
## Онлайн-версия
|
||||
Превращает экспорт данных Claude.ai в статический HTML-архив: все чаты и проекты можно листать,
|
||||
искать и читать в браузере без интернета, серверов и баз данных.
|
||||
|
||||
Не хочется устанавливать Python и разбираться руками — есть готовая веб-версия:
|
||||
**https://fe0.ru/declaude/**. Загружаете zip-экспорт, получаете готовый архив — без установки
|
||||
чего-либо. Если важна приватность данных, запустите скрипт локально по инструкции ниже.
|
||||
**Статус:** личный проект, работает · онлайн-версия на [fe0.ru/declaude](https://fe0.ru/declaude/)
|
||||
|
||||

|
||||
|
||||
**Стек:** Python 3.9+ (только стандартная библиотека) · HTML · CSS · vanilla JS
|
||||
|
||||
## Возможности
|
||||
|
||||
- **Полная автономность:** генерирует чистые HTML-страницы для каждого диалога, которые открываются в любом браузере.
|
||||
- **Страницы проектов:** рендеринг контекстных документов и шаблонов системных промптов для каждого проекта.
|
||||
- **Полноценная поддержка Markdown:** заголовки, списки, таблицы, цитаты, блоки кода.
|
||||
- **Подсветка синтаксиса без сторонних библиотек:** встроенная поддержка Python, JavaScript, TypeScript, SQL, Bash, Go и Rust.
|
||||
- **Темы оформления и языки:** переключение между светлой и тёмной темой, а также интерфейс на русском и английском языках (выбор сохраняется в LocalStorage).
|
||||
- **Маппинг проектов:** возможность связывать диалоги с проектами прямо в браузере с выгрузкой файла `mapping.json` и быстрой пересборкой.
|
||||
- **Инкрементальные обновления:** режим `--update` обновляет только добавленные или изменённые диалоги.
|
||||
- **Нулевые зависимости:** работает исключительно на стандартной библиотеке Python 3.8+.
|
||||
- Отдельная страница на каждый чат и проект, главная со статистикой и последними чатами
|
||||
- Markdown: заголовки, списки, таблицы, цитаты, код с подсветкой (Python, JS/TS, SQL, Bash, Go, Rust)
|
||||
- Поиск и фильтр по всем чатам, светлая и тёмная тема, интерфейс на русском и английском
|
||||
- Привязка чатов к проектам прямо в браузере с выгрузкой `mapping.json`
|
||||
- Инкрементальное обновление из нового экспорта: пересобираются только изменённые чаты
|
||||
- Ссылки из чатов безопасны: `javascript:` и подобные схемы не попадают в архив
|
||||
|
||||
## Подготовка данных
|
||||
## Установка
|
||||
|
||||
1. Откройте **claude.ai → Settings → Privacy → Export data**.
|
||||
2. Дождитесь письма со ссылкой и скачайте zip-архив с выгрузкой.
|
||||
3. Распакуйте архив в отдельную папку. Внутри находятся файлы `conversations.json`, `users.json` и каталог `projects/`.
|
||||
```bash
|
||||
pipx install claude-export-html # или: pip install claude-export-html
|
||||
```
|
||||
|
||||
Не хочется ничего ставить — загрузите zip на [fe0.ru/declaude](https://fe0.ru/declaude/). Если важна
|
||||
приватность, запускайте локально.
|
||||
|
||||
## Использование
|
||||
|
||||
### Первая сборка архива
|
||||
1. Claude.ai → **Settings → Privacy → Export data**, скачайте zip из письма и распакуйте.
|
||||
2. Соберите архив и откройте `claude_archive/index.html`:
|
||||
|
||||
```bash
|
||||
python declaude.py --build --source ./claude-export
|
||||
declaude --build --source ./claude-export
|
||||
declaude --build --source ./claude-export --output ./my-archive # своя папка
|
||||
declaude --update new_export.zip # добавить новый экспорт
|
||||
declaude --map <conversation_uuid> <project_uuid> && declaude --remap
|
||||
```
|
||||
|
||||
После завершения откройте файл `claude_archive/index.html` в браузере.
|
||||
| Параметр | Назначение |
|
||||
|---|---|
|
||||
| `--build` | полная сборка из распакованного экспорта |
|
||||
| `--source ПУТЬ` | папка с экспортом (по умолчанию `claude-backup-v1`) |
|
||||
| `--output ПУТЬ` | куда сложить архив (по умолчанию `claude_archive`) |
|
||||
| `--update ZIP` | добавить данные из нового zip, привязки к проектам сохраняются |
|
||||
| `--map ЧАТ ПРОЕКТ`, `--remap` | привязать чат к проекту и пересобрать главную и проекты |
|
||||
| `--mapping ПУТЬ` | файл привязок (по умолчанию `./mapping.json`) |
|
||||
|
||||
### Указание своей папки для архива
|
||||
Вместо команды `declaude` можно запускать `python -m declaude`.
|
||||
|
||||
> [!NOTE]
|
||||
> Архив — обычные HTML-файлы, данные никуда не отправляются. Выбор темы и языка хранится в
|
||||
> localStorage браузера.
|
||||
|
||||
## Как выглядит
|
||||
|
||||
| Чат | Проект |
|
||||
|---|---|
|
||||
|  |  |
|
||||
|
||||
## Использование из Python
|
||||
|
||||
```python
|
||||
from pathlib import Path
|
||||
from declaude import DataLoader, MappingManager, SiteBuilder
|
||||
|
||||
loader = DataLoader(Path("claude-export")); loader.load()
|
||||
mapping = MappingManager(Path("mapping.json")); mapping.load()
|
||||
SiteBuilder(Path("archive"), loader, mapping).build_all()
|
||||
```
|
||||
|
||||
Так библиотека встроена в веб-версию на fe0.ru — заметки об интеграции в FastAPI:
|
||||
[docs/fastapi-integration.md](docs/fastapi-integration.md).
|
||||
|
||||
## Разработка
|
||||
|
||||
```bash
|
||||
python declaude.py --build --source ./claude-export --output ./my-archive
|
||||
pip install -e . -r requirements-dev.txt
|
||||
ruff check . && pytest
|
||||
```
|
||||
|
||||
### Инкрементальное обновление из нового архива
|
||||
|
||||
```bash
|
||||
python declaude.py --update new_export.zip
|
||||
```
|
||||
|
||||
Регенерируются только новые и отредактированные страницы, текущая привязка диалогов к проектам в `mapping.json` сохраняется.
|
||||
|
||||
### Назначение диалога проекту через консоль
|
||||
|
||||
```bash
|
||||
python declaude.py --map <conversation_uuid> <project_uuid>
|
||||
python declaude.py --remap
|
||||
```
|
||||
|
||||
Быстрая пересборка страниц проектов (`--remap`) занимает секунды, так как не пересобирает неизменённые диалоги.
|
||||
|
||||
## Структура сгенерированного архива
|
||||
|
||||
```
|
||||
claude_archive/
|
||||
├── index.html # Главная страница: статистика, проекты, последние чаты
|
||||
├── all_conversations.html # Полный список диалогов с поиском и фильтрацией
|
||||
├── conversations/
|
||||
│ └── <uuid>.html # Страницы отдельных диалогов
|
||||
├── projects/
|
||||
│ └── <uuid>/
|
||||
│ └── index.html # Страницы проектов с документами и диалогами
|
||||
└── assets/
|
||||
├── style.css
|
||||
└── app.js
|
||||
```
|
||||
|
||||
## Параметры командной строки
|
||||
|
||||
- `--build` — полная сборка архива из исходного каталога.
|
||||
- `--source ПУТЬ` — путь к каталогу с распакованным экспортом (по умолчанию: `claude-backup-v1`).
|
||||
- `--output ПУТЬ` — каталог для сохранения HTML-архива (по умолчанию: `claude_archive`).
|
||||
- `--update АРХИВ.ZIP` — добавление данных из нового zip-архива с сохранением маппинга.
|
||||
- `--remap` — быстрая пересборка индексной страницы и страниц проектов.
|
||||
- `--map CONV_ID PROJ_ID` — ручное сопоставление диалога с проектом.
|
||||
- `--mapping ПУТЬ` — путь к файлу сопоставлений (по умолчанию: `./mapping.json`).
|
||||
Тесты собирают архив из вымышленного экспорта в `tests/fixtures` и проверяют страницы, Markdown,
|
||||
экранирование и защиту ссылок. CI гоняет их на Python 3.9–3.13; на каждый тег `v*` пакет публикуется
|
||||
на PyPI.
|
||||
|
||||
## Лицензия
|
||||
|
||||
MIT
|
||||
MIT — см. [LICENSE](LICENSE).
|
||||
|
||||
## Автор
|
||||
|
||||
**Деев Егор Викторович** — [GitHub](https://github.com/EDeev) · [Telegram](https://t.me/DeevEgor) · [egor@deev.space](mailto:egor@deev.space)
|
||||
|
||||
---
|
||||
|
||||
<div align="center">
|
||||
<sub>⭐ Если проект оказался полезным, поставьте звёздочку на GitHub!</sub>
|
||||
<p><sub>Сделано с ❤️ — <a href="https://deev.space">deev.space</a></sub></p>
|
||||
</div>
|
||||
|
|
|
|||
BIN
docs/screenshots/conversation.png
Normal file
BIN
docs/screenshots/conversation.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 80 KiB |
BIN
docs/screenshots/index.png
Normal file
BIN
docs/screenshots/index.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 90 KiB |
BIN
docs/screenshots/project.png
Normal file
BIN
docs/screenshots/project.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 84 KiB |
Loading…
Add table
Reference in a new issue