Hermes Agent Wiki 非公式・日本語wiki
この skill をそのまま使う: GitHub で原文を見る

英語原文・frontmatter 込みで、Hermes が読み込む実体そのままです(このページの本文は日本語版)。

Memento Flashcards

目次

間隔反復の暗記カードを作り、復習し、クイズにして、書き出します。

skill の情報

提供元 追加インストール — hermes skills install official/productivity/memento-flashcards で入れます
パス optional-skills/productivity/memento-flashcards
バージョン 1.0.0
作者 Memento AI
ライセンス MIT
対応プラットフォーム macos, linux
タグ Education, Flashcards, Spaced Repetition, Learning, Quiz, YouTube

参考: SKILL.md 全文

Memento Flashcards — 間隔反復の暗記カード skill

概要

Memento は、間隔反復のスケジュールを持った、ファイルベースの暗記カードをローカルに用意します。 使う人は自由な文章で答えられ、エージェントがその答えを採点してから次の復習日を決めます。 次のようなときに使います。

  • 事実を覚えたい — どんな文でも Q/A のカードに変えます
  • 間隔反復で勉強したい — 期限が来たカードを、間隔を調整しながら、自由記述をエージェントが採点する形で復習します
  • YouTube の動画からクイズを出したい — 字幕を取ってきて、5 問のクイズを作ります
  • デッキを整理したい — カードをまとまりごとに分け、CSV で書き出し・読み込みします

カードのデータは、すべて1つの JSON ファイルに入ります。外部の API キーは不要です。カードの中身もクイズの問題も、エージェントであるあなたが直接作ります。

Memento Flashcards での返答の書き方:

  • プレーンテキストだけを使います。返答に Markdown の書式を使ってはいけません。
  • 復習やクイズのフィードバックは短く、淡々と。褒めすぎや励まし、長い説明は避けます。

使いどころ

次のようなときに使います。

  • あとで復習するために事実をカードとして保存したい
  • 期限の来たカードを間隔反復で復習したい
  • YouTube の字幕からクイズを作りたい
  • カードのデータを読み込む・書き出す・確認する・削除する

一般的な質問応答、コーディングの相談、記憶に関係のない作業には使いません。

早見表

相手のしたいこと すること
「X を覚えておいて」「これをカードにして」 Q/A のカードを作り、memento_cards.py add を呼ぶ
カードに触れずに事実だけを送ってきた 「これを Memento のカードとして保存しますか?」と聞き、了解が取れたときだけ作る
「カードを作って」 質問・答え・まとまりの名前を聞き、memento_cards.py add を呼ぶ
「カードを復習したい」 memento_cards.py due を呼び、1枚ずつ出す
「[YouTube URL] でクイズを出して」 youtube_quiz.py fetch VIDEO_ID を呼び、5 問を作り、memento_cards.py add-quiz を呼ぶ
「カードを書き出して」 memento_cards.py export --output PATH を呼ぶ
「CSV からカードを読み込んで」 memento_cards.py import --file PATH --collection NAME を呼ぶ
「統計を見せて」 memento_cards.py stats を呼ぶ
「カードを消して」 memento_cards.py delete --id ID を呼ぶ
「まとまりごと消して」 memento_cards.py delete-collection --collection NAME を呼ぶ

カードの保存先

カードは次の JSON ファイルに保存されます。

~/.hermes/skills/productivity/memento-flashcards/data/cards.json

このファイルを直接編集してはいけません。 必ず memento_cards.py のサブコマンドを使ってください。スクリプトのほうは、一時ファイルに書いてから置き換える形で、壊れないように書き込みます。

ファイルは、初回に使ったときに自動で作られます。

手順

事実からカードを作る

発動のルール

事実を述べた文が、すべてカードになるべきとは限りません。次の3段階で判断します。

  1. はっきりした意思 — 「memento」「フラッシュカード」「これを覚えて」「このカードを保存」「カードを追加」など、カードを求めているのが明らかな言い方 → 確認なしでそのまま作ります
  2. 暗黙の意思 — カードに触れずに事実だけを送ってきた場合(例:「光の速さは秒速 299,792 km」)→ 先に聞きます。「これを Memento のカードとして保存しますか?」 了解が取れたときだけ作ります。
  3. 意思なし — コーディングの依頼、質問、指示、ふつうの会話など、覚えるべき事実ではないことが明らかなもの → この skill をまったく使いません。ほかの skill や通常の動きに任せます。

発動すると決まったら(1 なら直接、2 なら確認のあとで)、カードを作ります。

手順 1: その文を Q/A の組に変えます。内部では次の形式を使います。

Turn the factual statement into a front-back pair.
Return exactly two lines:
Q: <question text>
A: <answer text>

Statement: "{statement}"

ルール:

  • 質問は、肝心の事実を思い出せるかを試すものにします
  • 答えは短く、ずばりと書きます

手順 2: スクリプトを呼んでカードを保存します。

python3 ~/.hermes/skills/productivity/memento-flashcards/scripts/memento_cards.py add \
  --question "What year did World War 2 end?" \
  --answer "1945" \
  --collection "History"

まとまりの指定がなければ、既定の "General" を使います。

スクリプトは、作られたカードを示す JSON を出力します。

手動でカードを作る

カードを作ってほしいとはっきり言われたときは、次を聞きます。

  1. 質問(カードの表)
  2. 答え(カードの裏)
  3. まとまりの名前(任意。既定は "General"

そのうえで、上と同じように memento_cards.py add を呼びます。

期限の来たカードを復習する

復習したいと言われたら、期限の来たカードをすべて取ってきます。

python3 ~/.hermes/skills/productivity/memento-flashcards/scripts/memento_cards.py due

next_review_at <= now のカードが JSON の配列で返ります。まとまりで絞りたいときは次のようにします。

python3 ~/.hermes/skills/productivity/memento-flashcards/scripts/memento_cards.py due --collection "History"

復習の流れ(自由記述の採点):

以下が、必ず守ってほしいやりとりの見本です。相手が答え、あなたが採点し、正解を伝え、そのうえでカードを評価します。

やりとりの例:

> エージェント: ベルリンの壁が崩壊したのは何年ですか? > > 相手: 1991 年 > > エージェント: 惜しいです。ベルリンの壁が崩壊したのは 1989 年です。次の復習は明日です。 > *(エージェントが呼ぶコマンド: memento_cards.py rate --id ABC --rating hard --user-answer "1991")* > > 次の問題です。人類で最初に月面を歩いたのは誰ですか?

ルール:

  1. 質問だけを見せ、相手の答えを待ちます。
  2. 答えを受け取ったら、想定していた答えと比べて採点します。
  • correct → 肝心の事実が合っている(言い回しが違っていても可)
  • partial → 方向は合っているが、核心が抜けている
  • incorrect → 間違い、または的外れ
  1. 正解と出来ばえを必ず伝えます。 短く、プレーンテキストで。次の形式を使います。
  • correct: 「正解です。答え: &#123;answer&#125;。次の復習は 7 日後です。」
  • partial: 「惜しいです。答え: &#123;answer&#125;。&#123;what they missed&#125;。次の復習は 3 日後です。」
  • incorrect: 「惜しいです。答え: &#123;answer&#125;。次の復習は明日です。」
  1. そのうえで rate コマンドを呼びます。correct→easy、partial→good、incorrect→hard です。
  2. それから次の問題を出します。
python3 ~/.hermes/skills/productivity/memento-flashcards/scripts/memento_cards.py rate \
  --id CARD_ID --rating easy --user-answer "what the user said"

手順 3 を飛ばしてはいけません。 次に進む前に、正解とフィードバックを必ず見せます。

期限の来たカードがなければ、こう伝えます。「今すぐ復習するカードはありません。またあとで見てください。」

打ち切りの指示: 「このカードは終わりにして」と言われたら、いつでもそのカードを復習から完全に外せます。その場合は --rating retire を使います。

間隔反復のアルゴリズム

評価によって、次の復習までの間隔が決まります。

評価 間隔 ease_streak 状態の変化
hard +1 日 0 に戻る learning のまま
good +3 日 0 に戻る learning のまま
easy +7 日 +1 ease_streak >= 3 なら retired へ
retire 恒久 0 に戻る retired へ
  • learning: 復習の対象に入っているカード
  • retired: 復習に出てこないカード(覚えきったか、手動で外したもの)
  • 「easy」が 3 回続くと、そのカードは自動で retired になります

YouTube のクイズを作る

YouTube の URL を送られ、クイズを求められたときの手順です。

手順 1: URL から動画 ID を取り出します(例: https://www.youtube.com/watch?v=dQw4w9WgXcQ から dQw4w9WgXcQ)。

手順 2: 字幕を取得します。

python3 ~/.hermes/skills/productivity/memento-flashcards/scripts/youtube_quiz.py fetch VIDEO_ID

{"title": "...", "transcript": "..."} かエラーが返ります。

スクリプトが missing_dependency を返したら、次を入れてもらうよう伝えます。

pip install youtube-transcript-api

手順 3: 字幕から 5 問を作ります。ルールは次のとおりです。

You are creating a 5-question quiz for a podcast episode.
Return ONLY a JSON array with exactly 5 objects.
Each object must contain keys 'question' and 'answer'.

Selection criteria:
- Prioritize important, surprising, or foundational facts.
- Skip filler, obvious details, and facts that require heavy context.
- Never return true/false questions.
- Never ask only for a date.

Question rules:
- Each question must test exactly one discrete fact.
- Use clear, unambiguous wording.
- Prefer What, Who, How many, Which.
- Avoid open-ended Describe or Explain prompts.

Answer rules:
- Each answer must be under 240 characters.
- Lead with the answer itself, not preamble.
- Add only minimal clarifying detail if needed.

字幕の先頭 15,000 文字を材料にします。問題を作るのは、LLM であるあなた自身です。

手順 4: 出力が正しい JSON で、ちょうど 5 件あり、それぞれの questionanswer が空でない文字列かを確認します。確認に失敗したら、1 回だけやり直します。

手順 5: クイズのカードを保存します。

python3 ~/.hermes/skills/productivity/memento-flashcards/scripts/memento_cards.py add-quiz \
  --video-id "VIDEO_ID" \
  --questions '[{"question":"...","answer":"..."},...]' \
  --collection "Quiz - Episode Title"

スクリプトは video_id で重複を弾きます。その動画のカードがすでにあれば、作成を飛ばして既存のカードを返します。

手順 6: 同じ自由記述の採点の流れで、問題を1問ずつ出します。

  1. 「Question 1/5: ...」と見せて、相手の答えを待ちます。答えそのものや、答えを見せてもらえそうなヒントを含めてはいけません。
  2. 相手が自分の言葉で答えるのを待ちます
  3. 採点の手引き(「期限の来たカードを復習する」の節)に沿って採点します
  4. 重要: 次に進む前に、必ずフィードバックを返します。 評価、正解、次の復習日を見せます。黙って次の問題に進んではいけません。短く、プレーンテキストで。例: 「惜しいです。答え: &#123;answer&#125;。次の復習は明日です。」
  5. フィードバックを見せたあとで、rate コマンドを呼び、同じメッセージの中で次の問題を出します。
python3 ~/.hermes/skills/productivity/memento-flashcards/scripts/memento_cards.py rate \
  --id CARD_ID --rating easy --user-answer "what the user said"
  1. これを繰り返します。どの答えにも、次の問題の前に必ず目に見えるフィードバックを返します。

CSV の書き出しと読み込み

書き出し:

python3 ~/.hermes/skills/productivity/memento-flashcards/scripts/memento_cards.py export \
  --output ~/flashcards.csv

question,answer,collection の 3 列の CSV ができます(ヘッダー行はありません)。

読み込み:

python3 ~/.hermes/skills/productivity/memento-flashcards/scripts/memento_cards.py import \
  --file ~/flashcards.csv \
  --collection "Imported"

question、answer、そして任意で collection(3 列目)を持つ CSV を読みます。collection の列がなければ、--collection の引数を使います。

統計

python3 ~/.hermes/skills/productivity/memento-flashcards/scripts/memento_cards.py stats

次を含む JSON が返ります。

  • total: カードの総数
  • learning: 復習の対象に入っているカード
  • retired: 覚えきったカード
  • due_now: 今まさに期限が来ているカード
  • collections: まとまりごとの内訳

つまずきやすいところ

  • cards.json を直接編集しないこと — データが壊れないよう、必ずスクリプトのサブコマンドを使います
  • 字幕が取れないことがある — 英語の字幕がない動画や、字幕が無効になっている動画があります。そのことを伝えて、別の動画を提案してください
  • 任意の依存パッケージyoutube_quiz.py には youtube-transcript-api が必要です。入っていなければ pip install youtube-transcript-api を実行してもらいます
  • 大きな読み込み — 数千行の CSV でも問題なく読めますが、JSON の出力が長くなります。結果は要約して伝えてください
  • 動画 ID の取り出しyoutube.com/watch?v=IDyoutu.be/ID の両方の形式に対応します

動作確認

補助スクリプトを直接動かして確かめます。

python3 ~/.hermes/skills/productivity/memento-flashcards/scripts/memento_cards.py stats
python3 ~/.hermes/skills/productivity/memento-flashcards/scripts/memento_cards.py add --question "Capital of France?" --answer "Paris" --collection "General"
python3 ~/.hermes/skills/productivity/memento-flashcards/scripts/memento_cards.py due

リポジトリのチェックアウトから試すときは、次を実行します。

pytest tests/skills/test_memento_cards.py tests/skills/test_youtube_quiz.py -q

エージェントとしての確認:

  • 復習を始めて、フィードバックがプレーンテキストで短く、次のカードの前に必ず正解が入っているかを確かめます
  • YouTube のクイズを一通り流して、どの答えにも次の問題の前に目に見えるフィードバックが返るかを確かめます