Skip to main content
Glama

yt-mem-ai — локальная память YouTube для вашего ИИ-ассистента

Дайте Claude, Codex, Cursor или любому MCP-хосту возможность смотреть YouTube за вас: транскрибировать видео, запоминать их, следить за подписками и превращать всё это в саммари, таймкод-выжимки, Q&A, дайджесты и видеонарезки. Всё работает на вашей машине — никакого облака, никаких API-ключей.

Установка навыков yt для Codex одной командой

Пример«сделай презентацию из этого видео» (Andrej Karpathy: From Vibe Coding to Agentic Engineering, Sequoia, 30 мин) → 13 слайдов, PDF, каждая цитата с таймкодом из транскрипта. От загрузки до слайдов — один запрос.

Содержание

Related MCP server: YouTube MCP Server

Возможности

  • 🎧 Транскрибирует любое видео — субтитры YouTube, если они есть (быстро, любой язык), офлайн-Whisper, если их нет.

  • 🧠 Помнит, что вы смотрели — каждый транскрипт сохраняется и индексируется локально, так что ваша библиотека остаётся доступной для поиска навсегда. Ничего не покидает вашу машину.

  • 🔎 Находит нужный момент — спросите «что то видео говорило про X» и получите ответ с таймкодом, к которому можно перейти.

  • 📡 Следит за вашими подписками — подхватывает новые загрузки и превращает день в один дайджест.

  • ✍️ Ваш ассистент пишет сам — саммари, выжимки, Q&A, слайды — всё на языке видео, используя модель, за которую вы уже платите.

  • ❤️ Учится вашим вкусам — ставьте лайки или дизлайки видео и получайте рекомендации из собственной библиотеки.

  • 🎬 Создаёт и медиа — кликабельные документы с выжимками, кадры и отрендеренные суперкат-нарезки.

  • 🔌 Работает с вашими инструментами — Claude Code, Claude Desktop, Codex, Cursor, Antigravity, OpenClaw, Hermes: навыки или MCP — на ваш выбор.

Как установить

1. Подключите своего ассистента ⭐

curl -LsSf https://raw.githubusercontent.com/dasein108/yt-mem-ai/main/install.sh | sh

Откроется интерактивный мастер. Выберите, что вам нужно, отметьте свои приложения, нажмите Enter:

step 1/2 — what (pick one)     step 2/2 — where (tick any)
> Plugin  skills + CLI         [x] Claude Code    [ ] Claude Desktop
  MCP     typed tools          [x] Codex          [ ] Cursor
                               [ ] Antigravity    [ ] OpenClaw   [ ] Hermes

Плагин учит ассистента действовать по обычным запросам — «сделай саммари этого видео». MCP вместо этого даёт ему набор инструментов. Не уверены? Начните с плагина; мастер можно запустить снова для другого варианта.

Он установит всё необходимое, отметит то, что у вас уже есть, и удалит всё, что вы снимете (сначала покажет план и спросит). Затем перезапустите приложение и попробуйте: сделай саммари 'https://youtu.be/…'.

Уже знаете, что хотите? Пропустите вопросы:

curl -LsSf https://raw.githubusercontent.com/dasein108/yt-mem-ai/main/install.sh \
  | sh -s -- --plugin --claude-code --codex
curl -LsSf https://raw.githubusercontent.com/dasein108/yt-mem-ai/main/install.sh \
  | sh -s -- --mcp --claude-desktop --cursor

Хосты: --claude-code --claude-desktop --codex --cursor --antigravity --openclaw --hermes или --all. Полный список флагов и инструкции по удалению: integrations/README.md. Предпочитаете, чтобы это сделал агент? Вставьте integrations/PROMPT.md в любого ассистента.

2. MCP вручную — одна запись в конфиге, самоустанавливающийся

Предварительная установка не нужна: uvx загрузит пакет при первом запуске сервера хостом и будет хранить его в кеше. Вставьте это в MCP-конфиг вашего хоста:

{
  "mcpServers": {
    "yt-mem-ai": {
      "command": "uvx",
      "args": ["--from", "yt-mem-ai[mcp]", "yt-ai-mcp"]
    }
  }
}

Это вся настройка — никаких путей, никакого блока env. Настройки хранятся в ~/.yt-mem-ai/config.env, и агент может записать их сам с помощью инструмента config_set (или вы — командой yt-ai config set).

Хост

Куда вставлять этот JSON

Claude Desktop

macOS ~/Library/Application Support/Claude/claude_desktop_config.json · Windows %APPDATA%\Claude\claude_desktop_config.json — перезапустите приложение

Claude Code

claude mcp add -s user yt-mem-ai -- uvx --from 'yt-mem-ai[mcp]' yt-ai-mcp

Cursor

~/.cursor/mcp.json (перезагрузите Cursor)

Antigravity

~/.gemini/config/mcp_config.json (перезапустите)

Codex

~/.codex/config.toml — TOML, см. ниже (или codex mcp add yt-mem-ai -- uvx --from 'yt-mem-ai[mcp]' yt-ai-mcp)

OpenClaw

openclaw mcp add yt-mem-ai --command uvx --arg --from --arg 'yt-mem-ai[mcp]' --arg yt-ai-mcp (или ~/.openclaw/openclaw.jsonmcp.servers)

Hermes

~/.hermes/config.yaml в разделе mcp_servers: — YAML, см. ниже

# ~/.codex/config.toml
[mcp_servers.yt-mem-ai]
command = "uvx"
args = ["--from", "yt-mem-ai[mcp]", "yt-ai-mcp"]
# ~/.hermes/config.yaml
mcp_servers:
  yt-mem-ai:
    command: "uvx"
    args: ["--from", "yt-mem-ai[mcp]", "yt-ai-mcp"]
    enabled: true

Перезапустите приложение — и инструменты появятся. Что они делают, см. в Использование.

Ничего не появилось или хост вышел по таймауту? Первый запуск скачивает зависимости и может превысить время проверки запуска хоста. Выполните uvx --from 'yt-mem-ai[mcp]' yt-ai-mcp --help один раз, затем снова откройте приложение. Если хост всё ещё не может его запустить, укажите абсолютные пути — uv tool install 'yt-mem-ai[mcp]' и используйте which yt-ai-mcp как command с "args": [] (GUI-приложения часто не видят ~/.local/bin в своём PATH).

3. Claude Desktop — навыки (в приложении)

Desktop хранит плагины в вашем аккаунте Claude, а не на диске, поэтому никто не может установить их за вас. Это займёт минуту в приложении:

Customize (левая боковая панель) → PluginsPersonal plugins+Add marketplaceAdd from a repositoryhttps://github.com/dasein108/yt-mem-aiAddInstall yt-mem-ai

Затем спросите: сделай саммари 'https://youtu.be/…'. Удаляется так же. Тот же плагин работает и на claude.ai, и в Cowork. Предпочитаете инструменты навыкам? MCP-настройка выше подходит и для Desktop — и её можно автоматизировать.

Каждый хост загружает файлы SKILL.md из каталога уровня пользователя: Codex ~/.codex/skills/ (CLI и IDE используют его совместно, v0.117.0+), Cursor ~/.cursor/skills/, Antigravity ~/.gemini/skills/, OpenClaw ~/.agents/skills/, Hermes ~/.hermes/skills/ (где они становятся /yt и /yt-agent).

# from a checkout
cp -R skills/yt skills/yt-agent ~/.codex/skills/

# without a checkout
for s in yt yt-agent; do
  mkdir -p ~/.codex/skills/$s
  curl -LsSf "https://raw.githubusercontent.com/dasein108/yt-mem-ai/main/skills/$s/SKILL.md" \
    -o ~/.codex/skills/$s/SKILL.md
done

Дополнительно для Codex: промпты /yt-* (integrations/codex/prompts/*.md~/.codex/prompts/) и integrations/codex/AGENTS.md~/.codex/AGENTS.md. Полное руководство: skills/README.md.

4. CLI сам по себе

Навыки управляют им, но это вполне самостоятельный инструмент:

uvx yt-mem-ai --help          # zero-install run
uv tool install yt-mem-ai     # or install the persistent `yt-ai` command

Требуется Python 3.11+ и uv; ffmpeg — только для supercut / frame.

Десктопный интерфейс живёт в отдельном репозитории: yt-mem-ai-desktop — он зависит от этого пакета и запускает собственный локальный REST API.

Начало работы

Установили и перезапустили хост? Вы готовы. Просто говорите со своим ассистентом — навыки (или MCP-промпты + analyze_video) сделают загрузку за вас:

«Сделай саммари https://youtu.be/dQw4w9WgXcQ» → загружает видео (субтитры → whisper), затем пишет executive summary и ключевые пункты на языке видео.

«Дай мне выжимку этого видео с таймкодами» → 3–8 моментов с глубокими ссылками (watch?v=…&t=123s), найденных семантическим поиском.

«Что я смотрел про retrieval-augmented generation?» → ищет по всем транскриптам в вашей библиотеке и цитирует моменты.

«Обработай мои подписки в сегодняшний дайджест» → находит новые загрузки, загружает их, пишет digests/<DATE>.md.

Предпочитаете терминал? Тот же первый запуск:

yt-ai fetch 'https://www.youtube.com/watch?v=VIDEO_ID'   # ingest one video
yt-ai search "what was said about embeddings"            # search your library
yt-ai status                                             # what's in the store

Всё сохраняется в ~/.yt-mem-ai/ (библиотека, логи, загрузки).

Первый запуск медленный — это нормально. Установка подтягивает ML-стек (torch, LanceDB, sentence-transformers ≈ 1 ГБ на диске), а ваш первый fetch или search дополнительно скачивает модель эмбеддингов. Если у видео нет субтитров, скачается и модель Whisper (small, ≈ 460 МБ) — путь с субтитрами в ней не нуждается. Всё это кешируется, так что происходит один раз, а не для каждого видео. На GUI-хосте первый запуск MCP может превысить время проверки запуска приложения по той же причине: выполните uvx --from 'yt-mem-ai[mcp]' yt-ai-mcp --help один раз в терминале, чтобы прогреть кеш, затем снова откройте приложение.

Ежедневная рутина

yt-ai discover               # what's new in your subscriptions
yt-ai fetch-pending          # transcribe today's batch

затем в ассистенте: «обработай подписки» → саммари по каждому видео и digests/<DATE>.md, и при желании yt-ai compile --out compilations/$(date +%F).md для дневной выжимки в виде кликабельных ссылок.

Использование

Общение с ассистентом (навыки и промпты)

С плагином поставляются два навыка. MCP-хосты получают те же сценарии в виде промптов (yt_summarize, yt_highlights, yt_qa, yt_presentation, yt_digest, yt_review, yt_group), так что без поддержки навыков ничего не теряется.

Навык

Для чего

yt

точка входа — любая операция и полные конвейеры (ежедневная рутина, одно видео); передаёт анализ навыку yt-agent

yt-agent

сценарии — одно видео → саммари / выжимки / Q&A / презентация; подписки → ежедневный дайджест; кросс-видео обзор; группа видео

Что вы говорите

Что происходит

Куда сохраняется

«сделай саммари <url>»

загрузка → executive summary + ключевые пункты

чат, save_summary в хранилище

«выжимку для <url>»

3–8 моментов с таймкодами и глубокими ссылками

чат + хранилище

«Q&A по <url>»

3–6 пар вопрос/ответ с опорой на источник

чат + хранилище

«сделай презентацию из <url>»

слайды, разделённые ---

slides/<id>.md

«обработай подписки»

поиск → загрузка → анализ каждого видео

digests/<DATE>.md

«сделай обзор того, что я смотрел на этой неделе»

эссе по темам между видео

reviews/<DATE>.md

«проанализируй эти видео: <ids/urls/channel>»

загрузка набора → по каждому + синтез

groups/<label>.md

Навыки никогда не обращаются к базе данных напрямую — они вызывают CLI, так что один и тот же процесс работает на любом хосте. Установите или вставьте их вручную: skills/README.md.

MCP-инструменты

Сервер yt-ai-mcp предоставляет весь движок в виде типизированных инструментов. analyze_video — точка входа в один шаг: он загружает видео и возвращает транскрипт, чтобы модель сама написала саммари.

Категория

Инструмент

Описание

Анализ

analyze_video

Принять видео и вернуть его транскрипт (+ заголовок, канал, язык, существующее резюме). Вызывайте это первым для любого запроса на резюме / выделение / Q&A.

Загрузка

fetch

Скачать + транскрибировать + встроить одно видео (force, captions_only, prefer_whisper).

discover

Новые загрузки из вашей ленты подписок (инкрементально; after, deep, min_duration).

fetch_pending

Пакетная загрузка всего, что было обнаружено с определённой даты.

channel_list

Перечислить недавние загрузки канала (без загрузки).

Библиотека

search

Гибридный / векторный / полнотекстовый поиск по всем фрагментам, с временными метками.

show

Метаданные + полный транскрипт для одного видео.

list_videos

Список сохранённых видео по статусу / дате / каналу.

status

Количество по статусам жизненного цикла.

Резюме

save_summary

Сохранить резюме + выделенные моменты + Q&A, чтобы compile и supercut могли их использовать.

Вкус

like / dislike

Записать отзыв для одного видео.

recommend

Ранжировать неоценённые видео по схожести с тем, что вам понравилось.

Медиа

compile

Документ с глубокими ссылками на выделенные моменты, ограниченный по бюджету минут.

supercut

Собрать выделенные фрагменты в один размеченный mp4 (требуется ffmpeg + сеть).

frame

Извлечь кадр в указанный момент времени.

Конфигурация

config_list / config_get

Просмотр настроек, значений и источника каждого (секреты скрыты).

config_set / config_unset

Изменение настроек из чата — учётные данные прокси, браузер для cookies, модель встраивания.

Обслуживание

reembed

Пере-встроить всю библиотеку после смены модели встраивания.

Детали сервера, список промптов и сырая конфигурация: integrations/mcp/README.md.

Команды CLI

yt-ai fetch <url>            # download + transcribe + embed + store one video
yt-ai fetch <url> --captions-only  # captions only: no audio download / no whisper (fails if none)
yt-ai transcript <url>       # same pipeline
yt-ai discover               # new subscription uploads (--after/--deep/--min-duration/--json); incremental by default
yt-ai fetch-pending          # batch-fetch pending 'discovered' videos (since --since, default today; --limit)
yt-ai list                   # list stored videos (--status/--since/--json)
yt-ai show <video_id>        # metadata + transcript (--json)
yt-ai status                 # counts by status
yt-ai search "<query>"       # semantic search (--hybrid/--fts/--vector, -k N)
yt-ai save-summary <id> "<summary>" --highlights '<json>' --qa '<json>'  # persist a summary (used by skills)
yt-ai like <video_id>        # mark liked (feeds recommendations)
yt-ai dislike <video_id>     # mark disliked
yt-ai recommend              # rank your unrated fetched videos by taste (--limit/--json)
yt-ai compile                # deep-linked highlights doc, budget-bounded (--since/--max-minutes/--json/--out)
yt-ai supercut               # video reel of highlights, re-downloaded + labeled (--since/--max-minutes/--out/--keep-clips)
yt-ai frame <video_id> --at <ts>  # still frame at a timestamp (seconds or H:M:S) → frames/<id>_<s>s.png
yt-ai reembed                # re-embed all chunks with the current YT_EMBEDDING_* config
yt-ai channel-list <url>     # list a channel's recent uploads (--limit/--from/--to/--json); enumerate only
yt-ai config list            # get/set any .env setting: config get/set/unset/path (reconfigure from CLI or chat)

Примеры

Кейс: полный PDF-учебник из 10-частного курса на YouTube. examples/defi-crypto-options.pdf — это 96-страничная русская образовательная книга, созданная из серии «DeFi. Бесплатный вводный курс по крипто-опционам» (@Menaskop).

Конвейер: определить 10 видео серии → извлечь субтитры ru-orig (yt-dlp + cookies браузера; Whisper не нужен) → структурированные дайджесты по каждому видео → один общий каркас (глоссарий, обозначения, каталог рисунков) → 10 переписанных глав (~28,5 тыс. слов)

  • 47 перерисованных векторных рисунков → собраны и отрендерены с помощью Typst. Это не резюме — главы с нуля, с проработанными примерами, диаграммами, глоссарием и глубокими ссылками на каждое видео в конце каждой главы.

Конфигурация

Для начала ничего не требуется — по умолчанию хранилище, логи и загрузки находятся в ~/.yt-mem-ai/ и используется локальная модель встраивания. Настройте, когда понадобится:

Настройка

Что делает

YT_STORE_PATH

Каталог LanceDB

YT_EMBEDDING_BACKEND

local (sentence-transformers) или openai

YT_EMBEDDING_MODEL

например, paraphrase-multilingual-MiniLM-L12-v2 для неанглийских библиотек

OPENAI_API_KEY

только для бэкенда встраивания openai

YT_COOKIES_BROWSER

chrome/firefox/… — исправляет «подтвердите, что вы не бот» от YouTube

YT_CAPTION_LANGS

предпочтительные языки субтитров (по умолчанию en, откат на любую дорожку)

WEBSHARE_PROXY_*, YT_USE_WEBSHARE

опциональный ротационный прокси

YT_CHUNK_TARGET_S

длина фрагмента для встраивания

Настройка из CLI или агента — вместо ручного редактирования .env используйте yt-ai config (или инструменты MCP config_*, чтобы агент мог перенастроить себя из чата):

yt-ai config list                  # every setting, value, and source
yt-ai config set WEBSHARE_PROXY_USERNAME <user>
yt-ai config set WEBSHARE_PROXY_PASSWORD <pass>
yt-ai config set YT_EMBEDDING_MODEL paraphrase-multilingual-MiniLM-L12-v2
yt-ai config get OPENAI_API_KEY    # secrets masked (--reveal to show)

set по умолчанию записывает глобальный файл конфигурации (~/.yt-mem-ai/config.env), чтобы MCP-сервер подхватывал его независимо от рабочего каталога; --project записывает ./.env. Приоритет: переменные окружения процесса > проектный .env > глобальный файл конфигурации, и config list показывает, откуда взялось каждое значение.

Под капотом

Всё ниже — необязательное чтение: внутренности, настройка и заметки для разработчиков.

Как это работает

yt-dlp → captions (or Whisper) → chunks → embeddings → LanceDB
                                                          ↓
                     your assistant reads + writes summaries back

CLI выполняет тяжёлый ввод-вывод и владеет хранилищем; навыки и инструменты MCP — тонкие вызовы. Видео проходит через discovered → downloaded → transcribed → summarized; прямые трансляции получают конечный статус stream и пропускаются пакетной загрузкой (транскрибируйте одну по запросу с помощью yt-ai fetch <url>). Хранилище — встроенная LanceDB (videos, channels, transcripts, chunks, summaries, feedback), с векторами для каждого фрагмента плюс полнотекстовый индекс — именно это делает поиск гибридным.

Детали команд

Оценка и рекомендации — ставьте лайки/дизлайки загруженным видео, затем yt-ai recommend ранжирует остальные по схожести с тем, что вам понравилось (минус то, что не понравилось), используя их транскрипционные встраивания. Пока вы ничего не оценили, используется откат к самым недавно опубликованным.

discover инкрементален — он получает новые записи ленты одним плоским вызовом (ограничен YT_DISCOVER_FEED_LIMIT), помечает каждую приблизительной временной меткой и сохраняет только те, что новее отметки последнего запуска минус 1 час перекрытия (YT_DISCOVER_OVERLAP_S), чтобы округлённые до часа даты никогда не пропускали пограничное видео. Уже обработанные видео отфильтровываются. --after YYYY-MM-DD переопределяет порог.

compile против supercutcompile рендерит дневные выделенные моменты как markdown глубокие ссылки (watch?v=ID&t=<start>s), сначала новые видео, ограничено --max-minutes (по умолчанию 20); это мгновенно и выводит в stdout, если не передать --out. supercut пере-скачивает каждый выделенный фрагмент в 720p, накладывает метку на него и объединяет всё в supercuts/<date>.mp4 плюс .refs.md sidecar со списком источников (и любые клипы, пропущенные после сбоя) — гораздо медленнее, требует сеть + ffmpeg, но доступно для обмена.

Встраивания, прокси и другие настройки

Встраивания: YT_EMBEDDING_BACKEND=local|openai. Локальный использует sentence-transformers (YT_EMBEDDING_MODEL, по умолчанию all-MiniLM-L6-v2) — для неанглийских библиотек установите paraphrase-multilingual-MiniLM-L12-v2 (384-мерный, 50+ языков), чтобы семантический поиск работал на разных языках. openai использует text-embedding-3-small|large (требуется OPENAI_API_KEY). После смены модели запустите yt-ai reembed, чтобы перенести существующую библиотеку (пере-встраивает все фрагменты; без повторной загрузки).

Прокси / VLESS: YT_USE_WEBSHARE по умолчанию выключен. Если у вас уже есть системный прокси/VPN (VLESS/Xray и т.п.), оставьте его выключенным — трафик идёт через этот туннель. Наложение прокси Webshare поверх ломает аутентифицированную ленту подписок (его CONNECT-туннель возвращает 405). Устанавливайте YT_USE_WEBSHARE=true только если у вас нет другого прокси и YouTube ограничивает ваш сырой IP. Настройка discover: YT_DISCOVER_FEED_LIMIT (ограничение последних N, по умолчанию 60), YT_DISCOVER_OVERLAP_S (инкрементальное перекрытие, по умолчанию 3600), YT_DISCOVER_TIMEOUT_S.

Работаете из репозитория? uv sync --extra dev, затем cp .env.example .env если предпочитаете хранить настройки локально для проекта, а не в ~/.yt-mem-ai/config.env.

Использование как Python-пакет

yt-mem-ai — обычная библиотека: CLI — тонкая оболочка Typer над ядрами run_*, которые можно вызывать напрямую. Всё локально: нет сервера, нет ключа API (если не выберете бэкенд встраивания openai).

pip install yt-mem-ai     # or: uv add yt-mem-ai
from dataclasses import replace
from pathlib import Path

from yt_mem_ai.config import load_config
from yt_mem_ai.cli import open_store, run_fetch, run_search, run_list, run_save_summary
from yt_mem_ai.store import db as store

# Config comes from ~/.yt-mem-ai/config.env < ./.env < process env.
# Override any field in code (Config is a frozen dataclass):
cfg = replace(load_config(), store_path=Path("~/.yt-mem-ai/lance").expanduser())

db = open_store(cfg)          # opens LanceDB + creates tables/indexes once
                              # pass db=... to every run_* call to reuse it

# 1. Ingest: download → transcribe (captions → whisper) → chunk → embed → store
video_id = run_fetch("https://www.youtube.com/watch?v=dQw4w9WgXcQ", cfg, db=db)
# captions only (no audio download, no whisper):
# video_id = run_fetch(url, cfg, db=db, captions_only=True)

# 2. Read what was stored
video = store.get_video(db, video_id)
text = store.get_transcript_text(db, video_id)
print(video.title, video.channel, video.duration_s, len(text or ""))

for c in store.list_chunks(db, video_id)[:3]:
    print(f"[{c['start_s']:.0f}s] {c['text'][:80]}")

# 3. Semantic search across the whole library (hybrid | vector | fts)
for hit in run_search(cfg, "retrieval augmented generation", mode="hybrid", k=5, db=db):
    print(hit["video_id"], hit["start_s"], hit["text"][:100])

# 4. Bring your own LLM: summarize the transcript however you like, then persist
summary_md = my_llm(text)                       # any model / provider
run_save_summary(
    cfg, video_id, summary_md,
    highlights_json='[{"t": 42, "text": "key moment"}]',
    qa_json='[{"q": "What is it about?", "a": "..."}]',
    db=db,
)
print(store.get_summary(db, video_id))

# 5. Library queries
for v in run_list(cfg, status="transcribed", since="2026-01-01", db=db):
    print(v.video_id, v.published_at, v.title)

Другие ядра, той же формы (run_x(cfg, ..., db=db)): run_discover, run_fetch_pending, run_channel_list, run_recommend, run_feedback, run_compile, run_supercut, run_frame, run_reembed. Низкоуровневые части также импортируемы — yt_mem_ai.download.download, yt_mem_ai.transcript.get_transcript, yt_mem_ai.store.embeddings.build_embedder / chunk_segments, yt_mem_ai.store.db (LanceDB CRUD + search_chunks).

Хранилище — обычная LanceDB, так что вы можете открыть его напрямую:

import lancedb
from pathlib import Path
tbl = lancedb.connect(Path("~/.yt-mem-ai/lance").expanduser()).open_table("chunks")
df = tbl.to_pandas()      # video_id, start_s, end_s, text, vector

Логирование

CLI записывает структурированные JSON-события в logs/common.jsonl (через obs.log_event/blog) — один объект на строку, {ts, source, level, event, msg, ...ctx}. Переопределите путь с помощью YT_LOG_FILE; он в .gitignore. Просмотр с помощью jq:

jq -c 'select(.level=="error")' logs/common.jsonl   # every error
tail -f logs/common.jsonl | jq -c '{ts,event,msg}'  # live tail, compact

Тесты

uv run pytest -q                       # offline unit tests (fake embedder)
YT_RUN_INTEGRATION=1 uv run pytest -q  # + real sentence-transformers integration

Релиз (для мейнтейнеров)

Версия берётся из git-тега (hatch-vcs). Тег, сборка и публикация:

git tag -a vX.Y.Z -m "vX.Y.Z" && git push origin vX.Y.Z
uv build                                # → dist/ (sdist + wheel)
sh scripts/publish.sh dist/yt_mem_ai-X.Y.Z*   # uploads to PyPI

scripts/publish.sh загружает UV_PUBLISH_TOKEN из .env (gitignored) по запросу, так что вам не нужно экспортировать его каждый раз — добавьте UV_PUBLISH_TOKEN=pypi-… в .env один раз (см. .env.example). Эквивалентно: set -a; . ./.env; set +a; uv publish dist/*. Ротируйте токен на PyPI, если он когда-либо был раскрыт.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

UpdatingMaintainers
UpdatingResponse time
Release cycle
0Releases (12mo)
Commit activity

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • An MCP server that gives your AI access to the source code and docs of all public github repos

  • Cloud-hosted MCP server for durable AI memory

  • Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dasein108/yt-mem-ai'

If you have feedback or need assistance with the MCP directory API, please join our Discord server