Skip to main content
Glama

yt-mem-ai — AIアシスタントのためのローカルYouTubeメモリ

Claude、Codex、Cursor、または任意のMCPホストに、あなたの代わりにYouTubeを視聴する能力を提供します。動画の文字起こし、記憶、購読のフォロー、そしてそれらすべてを要約、タイムスタンプ付きハイライト、Q&A、ダイジェスト、ビデオリールに変換します。すべてはあなたのマシン上で動作します。クラウドサービスもAPIキーも不要です。

Installing the yt skills for Codex in one command

"このビデオからプレゼンテーションを作成" (Andrej Karpathy: From Vibe Coding to Agentic Engineering, Sequoia, 30分) → 13スライド、PDF、 すべての引用がトランスクリプトからタイムスタンプ付き。取り込みからデッキまで1リクエストで完了。

目次

Related MCP server: YouTube MCP Server

機能

  • 🎧 あらゆる動画を文字起こし — YouTubeのキャプションがある場合はそれを使用(高速、任意の言語)、ない場合はオフラインのWhisperを使用。

  • 🧠 視聴した内容を記憶 — すべてのトランスクリプトはローカルに保存・インデックス化されるため、ライブラリは永遠に検索可能。あなたのマシンから何も出て行きません。

  • 🔎 瞬間を見つける — 「あの動画でXについて何と言っていた?」と尋ねると、ジャンプできるタイムスタンプ付きの回答が得られます。

  • 📡 購読をフォロー — 新しいアップロードを取得し、1日のダイジェストにまとめます。

  • ✍️ アシスタントが執筆 — 要約、ハイライト、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は代わりにツールのセットを提供します。迷ったらプラグインから始めてください。もう一方のためにウィザードを再度実行できます。

必要なものをすべてインストールし、すでにあるものにはチェックを付け、チェックを外したものは削除します(計画を表示して先に確認します)。その後、アプリを再起動して試してください: summarize '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 — 設定エントリ1つ、自己インストール

事前インストールは不要: 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.yamlmcp_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-mcpcommand として使用し、"args": [] を指定します (GUIアプリは ~/.local/binPATH に含まないことがよくあります)。

3. Claude Desktop — スキル (アプリ内)

DesktopはプラグインをディスクではなくClaude アカウントに保存するため、誰もあなたのためにインストールできません。アプリ内で1分かかります:

カスタマイズ (左サイドバー) → プラグイン個人用プラグイン+マーケットプレイスを追加リポジトリから追加https://github.com/dasein108/yt-mem-ai追加インストール yt-mem-ai

その後、summarize 'https://youtu.be/…' と尋ねてください。アンインストールも同様です。同じプラグインは claude.aiCowork でも動作します。スキルよりもツールがお好みですか? 上記の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 が必要です。ffmpegsupercut / frame にのみ必要です。

デスクトップUIは別のリポジトリにあります: yt-mem-ai-desktop — これは このパッケージに依存し、独自のローカルREST APIを実行します。

はじめに

インストールしてホストを再起動しましたか? 準備完了です。アシスタントに話しかけるだけです — スキル(またはMCPプロンプト + analyze_video)が取り込みを行います:

"Summarize https://youtu.be/dQw4w9WgXcQ" → 動画を取り込み(キャプション → whisper)、その後、動画の言語でエグゼクティブサマリーと主要ポイントを書きます。

"Give me the highlights of that video with timestamps" → セマンティック検索に基づく3〜8のディープリンク付きモーメント (watch?v=…&t=123s)。

"What did I watch about retrieval-augmented generation?" → ライブラリ内のすべてのトランスクリプトを検索し、モーメントを引用します。

"Process my subscriptions into today's digest" → 新しいアップロードを発見し、取り込み、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 GB ディスク上) を取得し、最初の fetch または search はさらに埋め込みモデルをダウンロードします。動画に キャプションがない場合、Whisperモデル (small、≈ 460 MB) もダウンロードされます — キャプションパスでは不要です。すべてキャッシュされるため、動画ごとではなく一度だけ発生します。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

その後、アシスタントで: "process subscriptions" → 動画ごとの要約と digests/<DATE>.md、そしてオプションで yt-ai compile --out compilations/$(date +%F).md を実行して、その日のハイライトをクリック可能なリンクとして取得します。

使用方法

アシスタントとの会話 (スキルとプロンプト)

プラグインには2つのスキルが付属しています。MCPホストは同じプレイブックをプロンプトとして取得します (yt_summarizeyt_highlightsyt_qayt_presentationyt_digestyt_reviewyt_group)、スキルサポートがなくても失われるものはありません。

スキル

使用目的

yt

エントリポイント — 任意の操作と完全なパイプライン (毎日のルーチン、単一動画); 分析を yt-agent に委ねます

yt-agent

シナリオ — 1動画 → 要約 / ハイライト / Q&A / プレゼンテーション; 購読 → 毎日のダイジェスト; 動画横断レビュー; 動画グループ

あなたが言うこと

何が起こるか

保存先

"summarize <url>"

取り込み → エグゼクティブサマリー + 主要ポイント

チャット、ストア内の save_summary

"highlights for <url>"

3〜8のタイムスタンプ付き、ディープリンクされたモーメント

チャット + ストア

"Q&A about <url>"

3〜6の根拠のある質問/回答ペア

チャット + ストア

"make a presentation from <url>"

--- で区切られたスライドデッキ

slides/<id>.md

"process subscriptions"

発見 → 取り込み → 動画ごとの分析

digests/<DATE>.md

"review what I watched this week"

動画横断テーマのエッセイ

reviews/<DATE>.md

"analyze these videos: <ids/urls/channel>"

セットを取り込み → 動画ごと + 総合

groups/<label>.md

スキルはデータベースに直接触れません — CLIを呼び出すため、同じワークフローが任意のホストで実行されます。手動でインストールまたは貼り付け: skills/README.md

MCPツール

yt-ai-mcp サーバーはエンジン全体を型付きツールとして公開します。analyze_video はワンステップのエントリポイントです: 取り込みを行い、トランスクリプトを返すため、モデルが自分で要約を書くことができます。

カテゴリ

ツール

説明

分析

analyze_video

動画を取り込み、文字起こし(+タイトル、チャンネル、言語、既存の要約)を返します。要約・ハイライト・Q&Aのリクエストでは最初にこれを呼び出します。

取り込み

fetch

1本の動画をダウンロード+文字起こし+埋め込みします(forcecaptions_onlyprefer_whisper)。

discover

登録フィードからの新着アップロード(増分取得。afterdeepmin_duration)。

fetch_pending

指定日以降に検出されたすべての動画を一括取り込みします。

channel_list

チャンネルの最近のアップロードを列挙します(取り込みは行いません)。

ライブラリ

search

すべてのチャンクに対するハイブリッド/ベクトル/全文検索。タイムスタンプ付き。

show

1本の動画のメタデータ+全文文字起こし。

list_videos

保存済み動画をステータス/日付/チャンネルで一覧表示します。

status

ライフサイクルステータスごとの件数。

要約

save_summary

要約+ハイライト+Q&Aを永続化し、compilesupercutが利用できるようにします。

嗜好

like / dislike

1本の動画に対するフィードバックを記録します。

recommend

未評価の動画を、高評価した動画との類似度でランク付けします。

メディア

compile

分単位で予算制約のある、ディープリンク付きハイライトドキュメント。

supercut

ハイライト選択を1本のラベル付きmp4にレンダリングします(ffmpeg+ネットワークが必要)。

frame

指定タイムスタンプの静止フレームを取得します。

設定

config_list / config_get

設定、値、および各値の由来を確認します(シークレットはマスクされます)。

config_set / config_unset

チャットから設定を変更します — プロキシ認証情報、クッキーブラウザ、埋め込みモデルなど。

メンテナンス

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)

使用例

ケース: 10部構成のYouTubeコースから作った完全なPDF教科書。 examples/defi-crypto-options.pdf — シリーズ «DeFi. Бесплатный вводный курс по крипто-опционам»@Menaskop)から構築した96ページのロシア語教育書。

パイプライン: シリーズの10本の動画を特定 → ru-origキャプションを取得(yt-dlp+ ブラウザクッキー。Whisper不要)→ 動画ごとの構造化ダイジェスト → 共通の スパイン(用語集、表記法、図のカタログ)→ 書き直した10章(約28,500語)

  • 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が重いIOを担当しストアを所有します。スキルとMCPツールは薄い呼び出し側です。 動画はdiscovered → downloaded → transcribed → summarizedの順に進みます。 ライブ配信は終端のstreamステータスになり、バッチ取り込みではスキップされます (オンデマンドでyt-ai fetch <url>により1本を文字起こし)。ストレージは 組み込みのLanceDBvideoschannelstranscriptschunkssummariesfeedback)で、チャンクごとのベクトルに加えて全文インデックスを持ちます — これが 検索をハイブリッドにしている理由です。

コマンドの詳細

評価とレコメンド — 取得した動画に高評価/低評価を付け、yt-ai recommendが残りを高評価した動画との類似度でランク付けします(低評価した動画は除外)。 文字起こしの埋め込みを使用します。まだ何も高評価していない場合は 最も最近公開された動画にフォールバックします。

discoverは増分式 — 最新のフィードエントリを1回のフラットな呼び出しで取得し (YT_DISCOVER_FEED_LIMITで上限)、各エントリに概算タイムスタンプを付け、 前回実行時のハイウォーターマークから1時間のオーバーラップ(YT_DISCOVER_OVERLAP_S)を 引いたものより新しいものだけを保持します。これにより、時間単位で丸められた日付でも 境界の動画を取りこぼしません。処理済みの動画は除外されます。--after YYYY-MM-DDで 基準日を上書きできます。

compilesupercutの違いcompileはその日のハイライトをmarkdownの ディープリンク(watch?v=ID&t=<start>s)としてレンダリングします。新しい動画が先頭で、 --max-minutes(デフォルト20)で制限されます。即座に完了し、--outを指定しない限り stdoutに出力します。supercutは各ハイライトのセクションを720pで再ダウンロードし、 ラベルを焼き込み、すべてをsupercuts/<date>.mp4に連結します。さらにソースを一覧した .refs.mdサイドカー(失敗後にスキップされたクリップも含む)も生成します — はるかに遅く、ネットワーク+ffmpegが必要ですが、共有可能です。

埋め込み、プロキシ、その他のチューニング

埋め込み: YT_EMBEDDING_BACKEND=local|openai。ローカルは sentence-transformers(YT_EMBEDDING_MODEL、デフォルトall-MiniLM-L6-v2)を使用 — 非英語ライブラリではparaphrase-multilingual-MiniLM-L12-v2(384次元、50以上の 言語)を設定すると、意味検索が言語横断で機能します。openaitext-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、次に設定を ~/.yt-mem-ai/config.envではなくプロジェクトローカルに置きたい場合はcp .env.example .env

Pythonパッケージとしての利用

yt-mem-aiは通常のライブラリです — CLIはrun_*コアの上にかぶせた薄いTyperシェルで、 直接呼び出せます。すべてローカルで動作します: サーバー不要、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_discoverrun_fetch_pendingrun_channel_listrun_recommendrun_feedbackrun_compilerun_supercutrun_framerun_reembed。より低レベルの部品も インポート可能です — yt_mem_ai.download.downloadyt_mem_ai.transcript.get_transcriptyt_mem_ai.store.embeddings.build_embedder / chunk_segmentsyt_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経由)— 1行に1オブジェクト、{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.env(gitignore済み)からUV_PUBLISH_TOKENをオンデマンドで読み込むため、 毎回エクスポートする必要はありません — .envUV_PUBLISH_TOKEN=pypi-…を一度追加してください (.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