Личный проект · 2025

FamilyLog

Семейный дневник, который ведёт себя сам — голос, фото и текст из Telegram превращаются в структурированные заметки в Obsidian

GitHub репозиторий → ← Назад

О проекте

Что это такое

FamilyLog — личный production-пайплайн, который превращает сообщения из Telegram-бота в структурированные Markdown-заметки в Obsidian vault. Члены семьи пишут боту как обычно: голосом, фото или текстом — и всё автоматически оказывается в дневнике.

Система работает полностью локально: распознавание речи, описание фотографий и генерация заметок — всё на локальных моделях через LM Studio. Никаких облачных зависимостей, данные остаются дома.

Как работает

Пайплайн обработки

1. Сбор — Telegram Collector

Бот принимает голосовые, фото и текст. Всё сохраняется в SQLite через async SQLAlchemy. Сессии группируются по типу: дневник, заметка, событие, задача.

2. STT — Распознавание речи

Голосовые транскрибируются через onnx-asr с моделью GigaAM v3 от Сбера, оптимизированной для русского языка. CPU-инференс через ONNX Runtime.

3. Vision — Описание фотографий

Фото описываются локальной мультимодальной моделью Qwen3.5-VL через LM Studio. Описание встраивается в контент вместе с самим фото.

4. LLM Agent — Генерация заметки

LangGraph-агент получает собранный контент сессии и генерирует JSON: заголовок, тело в Markdown, теги, связанные заметки, резюме контекста. Модель — Qwen3.5-35B-A3B.

5. Obsidian Writer — Запись в vault

Готовая заметка с frontmatter записывается в нужную папку через Obsidian Local REST API. Обновляются CURRENT_CONTEXT, TAGS_GLOSSARY. Добавляются backlinks.

Архитектура

Схема системы

Telegram Bot (polling) │ ▼ [Collector] ──── сообщения ────► SQLite DB │ ▼ [STT] ──── голосовые ───► текст (onnx-asr · GigaAM v3) │ ▼ [Vision] ──── фото ────────► описание (Qwen3.5-VL · LM Studio) │ ▼ [Assembler] объединяет части сессии ──► assembled_content │ ▼ [LLM Agent] ── assembled_content ──► JSON (title, tags, content...) │ LangGraph StateGraph · Qwen3.5-35B-A3B ▼ [Obsidian Writer] ── JSON ──► Markdown в vault Obsidian Local REST API

Возможности

Что умеет система

🎙️

Голосовые сообщения

Транскрипция русской речи через GigaAM v3. Работает офлайн, без отправки аудио в облако.

📸

Фотографии

Мультимодальная модель описывает фото, изображение сохраняется в vault и вставляется в заметку.

📝

4 типа записей

Заметки, дневник (один файл на день), события с Google Calendar, задачи с чекбоксами.

🏷️

Умные теги и связи

LLM присваивает теги из глоссария, находит related notes, обновляет контекст для следующих записей.

👨‍👩‍👧

Несколько авторов

Поддержка нескольких членов семьи с определением автора по Telegram ID.

📅

Google Calendar

Записи типа «Событие» автоматически создают события в Google Calendar через API.

Технологии

Стек

Python 3.12 aiogram LangGraph LM Studio Qwen3.5-35B-A3B Qwen3.5-VL onnx-asr GigaAM v3 SQLite async SQLAlchemy Pydantic v2 httpx Obsidian REST API Google Calendar API python-frontmatter Loguru uv

Проект открытый, установка через uv sync

Открыть на GitHub →