flashcard-creator について
flashcard-creatorは、語学学習者向けにウェブページから文法・語彙・用法を抽出し、間隔反復用のフラッシュカードに整理するスキルです。指定のMarkdown形式を使い、Anki用テキストファイルへ変換できます。
主な機能
- 01ウェブページから語学学習内容を抽出
- 02文法・語彙・練習カードを作成
- 03カテゴリ別に複数形式のカードを整理
- 04指定形式のMarkdownをAnki用ファイルに変換
活用シーン
- 01文法レッスンを復習カードにする
- 02語彙リストから用例付きカードを作る
- 03練習問題から穴埋め・翻訳カードを作る
- 04Ankiに読み込めるデッキを準備する
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ blazewicz/ claude-flashcards --skill flashcard-creatorインストール後、Claude Code で/flashcard-creatorを入力して読み込まれたか確認します。
詳細
フラッシュカード作成ツール
概要
このスキルは、ウェブページから語学学習コンテンツを抽出し、Anki のような間隔反復ソフトウェアに最適化された構造化フラッシュカードに変換します。あらゆる言語(スペイン語、日本語、アラビア語、中国語など)に対応し、さまざまな文字体系や文法構造に適応します。1つのソースから複数種類のカード(文法規則、ドリル、翻訳、Q&A)を作成し、反復学習の効果を最大化します。
前提条件
- ブラウザーを開き、Claude の Chrome 拡張機能を有効にしておく必要があります
- 対象ページには、体系的な学習コンテンツ(文法レッスン、語彙、練習問題)が含まれている必要があります
- Anki 変換用の Python スクリプト
parse_flashcards.pyがプロジェクトのルートにある必要があります
⚠️ 重要:Markdown 形式の要件
Python パーサーはキーワードの完全一致に依存します。必ずこの形式を使用してください:
**Front:** Question, prompt, or term here
**Back:** Answer, explanation, or definition here
厳守する要件:
**Front:**をそのまま使用してください。太字の Markdown(**)とコロンを含めます**Back:**をそのまま使用してください。太字の Markdown(**)とコロンを含めます- Front と Back は、連続する別々の行に記述してください
- どちらのキーワードも大文字と小文字が区別されます
- コロンの後にスペースを入れてください
次の形式は使用しないでください:
- ❌
Front:(太字なし) - ❌
Question:またはQ: - ❌
**Front**:(コロンが太字の外にある) - ❌
**Front :**(コロンの前にスペースがある) - ❌ その他の形式
重要な理由:
Python パーサー(parse_flashcards.py)では、次のコードが使用されています:
if line.startswith('**Front:**'):
front = line.replace('**Front:**', '').strip()
この形式から少しでも逸脱すると、解析時にカードが警告なしでスキップされます。
ブロックの例(正しい形式)
## Grammar Rules
**Front:** Cuando + presente de subjuntivo (futuro)
**Back:** Cuando me jubile, me iré a vivir a la costa.
**Front:** antes de que + presente de subjuntivo
**Back:** Los pájaros emigran a lugares más cálidos antes de que empiece el invierno.
## Fill-in-the-Blank Exercises
**Front:** Cuando _____ (tener - yo) vacaciones, _____ (soler) viajar a destinos exóticos.
**Back:** Cuando tengo vacaciones, suelo viajar a destinos exóticos.
手順
ステップ 1:ウェブコンテンツにアクセスする
tabs_context_mcpを使用して、利用可能なタブを取得しますread_pageまたはget_page_textを使用して、現在のページからコンテンツを抽出します- 視覚的な情報が役立つ場合は、スクリーンショットを撮ります
ステップ 2:コンテンツの構成を分析する
ページ上の次の要素を特定します:
- 文法規則(さまざまな時制・法の例を含む)
- 語彙リスト(定義、翻訳、または文脈を含む)
- 例文(用法のパターンを示すもの)
- 練習問題(穴埋め、翻訳、マッチング)
- 解説(規則、ヒント、記憶補助)
ステップ 3:コンテンツを抽出して構成する
Markdown の見出し(##、###)を使って、カテゴリ別にフラッシュカードを作成します。
推奨カテゴリ(言語の種類に応じて調整してください):
- 文法パターン/規則(語順、助詞、接続詞など)
- 応用練習(穴埋め、文の組み立てなど)
- 語彙(定義、翻訳、または使用時の文脈を含む)
- 翻訳練習(双方向)
- クイックリファレンス Q&A(文法/用法の規則)
- よくある間違い/訂正
- 記憶補助(文法パターンの語呂合わせ)
注: 屈折語(スペイン語、ロシア語、アラビア語)では、「活用/格変化ドリル」を追加します。声調言語(標準中国語、ベトナム語)では、「声調練習」を追加します。表語文字を使う言語(日本語、中国語)では、「文字認識」を追加します。
避けるカテゴリ:
- ❌ ストーリー/あらすじの要約(語彙や構文そのものが学習目標の場合を除く)
- ❌ 文化に関する雑学や事実(言語の用法を示す場合を除く)
- ❌ 言語と無関係なトピック固有の知識(歴史上の日付、科学的事実など)
- ❌ 著者情報やウェブサイトのメタデータ
ステップ 4:反復学習を最大化するために複数種類のカードを作成する
各文法概念や語彙項目について、複数種類のカードを作成します。対象言語に合わせて調整してください。
例 1:スペイン語の文法(屈折語)
-
規則カード - 文法パターンを提示する
**Front:** Cuando + presente de subjuntivo (futuro) **Back:** Cuando me jubile, me iré a vivir a la costa. -
穴埋めカード - 活用/応用をテストする
**Front:** Cuando _____ (jubilarse - yo), me _____ (ir) a vivir a la costa. **Back:** Cuando me jubile, me iré a vivir a la costa. -
翻訳カード - 文脈の中で適用する
**Front:** When I retire, I will go live on the coast. **Back:** Cuando me jubile, me iré a vivir a la costa. -
クイックリファレンスカード - 規則の知識をテストする
**Front:** ¿Cómo se expresa el futuro con "cuando"? **Back:** Cuando + presente de subjuntivo
例 2:日本語の語彙(表語文字+音節文字)
-
認識カード
**Front:** 食べる **Back:** たべる (taberu) - to eat [ru-verb] -
産出カード
**Front:** How do you write "to eat" (ru-verb)? **Back:** 食べる (たべる / taberu) -
文脈カード
**Front:** 私は寿司を_____ (I ___ sushi) **Back:** 私は寿司を食べる (I eat sushi)
例 3:アラビア語の文法(語根・語形パターン体系)
-
語根カード
**Front:** What is the root of كَتَبَ (kataba - "he wrote")? **Back:** ك-ت-ب (k-t-b) - root meaning "writing" -
語形パターンカード
**Front:** Form I past tense of root ك-ت-ب with "he" **Back:** كَتَبَ (kataba) - he wrote
ステップ 5:言語学習のベストプラクティスを適用する
文法について:
- 複数の文脈でパターンを示します
- (該当する場合)肯定形と否定形の両方を含めます
- 境界ケースや例外を示します
- 「よくある間違い」の訂正カードを作成します
語彙について:
- 定義だけでなく、文脈を示す例文を含めます
- コロケーションや使用パターンを示します
- 意味的に関連する単語をグループ化します
- 該当する場合は、文体(フォーマル/インフォーマル)を記載します
言語固有の特徴について:
- 屈折語(スペイン語、ロシア語、アラビア語):人称、時制、格をまたいで活用・曲用を練習します
- 声調言語(中国語、ベトナム語):声調記号とミニマルペアを含めます
- 文字ベースの言語(日本語、中国語):文字認識カード(文字 → 読み方/意味)を作成します
- 膠着語(トルコ語、フィンランド語):接尾辞の組み合わせを練習します
- 分析的な言語(英語、中国語の文法):語順と助詞に重点を置きます
応用ドリルについて:
- ヒント(不定詞、声調、文字の読み方など)付きの穴埋め形式を使用します
- 易しいものから難しいものへと進めます
- 後半のセクションでは異なる概念を組み合わせます
ステップ 6:品質を確認する
最終化する前に、以下を確認してください:
- すべてのカードで
**Front:**と**Back:**の形式が正確に使用されている - Front と Back が連続する行に配置されている
- 見出しを付けて、内容が論理的なカテゴリに分類されている
- 文法規則が正確である
- 例文で適切な使用パターンが示されている
- 穴埋め問題に適切なヒント(動詞の不定詞、声調記号、読み方など)が含まれている
- 難易度が段階的に上がっている(基本 → 応用)
- カードの種類が混在している(規則、ドリル、翻訳、Q&A)
- 特殊文字(アクセント記号、声調記号、ダイアクリティカルマークなど)が対象言語に適した形で正しく使用されている
- 総合的なトピックの場合、カードが少なくとも 50 枚以上ある
ステップ 7:出力ファイルを保存する
- わかりやすい名前を使用します:
<topic>.md flashcards/ディレクトリに書き込みます- タイトルと説明を含むヘッダーを追加します
- ソースページの URL を含めます
- 最後に学習戦略のセクションを追加します
ステップ 8:Anki 形式に変換する(必須)
重要:このステップは省略できません。必ず自動的に完了してください。
Markdown ファイルの作成後:
-
すぐに変換スクリプトを実行します:
python3 parse_flashcards.py flashcards/<filename>.md- ユーザーに実行するよう伝えるだけではなく、自分で実行してください
- タスクを完了するために必須のステップです
-
出力を確認します:
wc -l flashcards/<filename>.txt- カードが正常に作成されたことを確認します
重要な理由:ユーザーは、すぐに使える完全な Anki デッキファイルを期待しています。Markdown ファイルだけを作成するのは、作業が未完了です。必ず変換まで完了してください。
ステップ 9:結果をユーザーに報告する
Anki 形式への変換が正常に完了したら、次の内容をユーザーに伝えます:
-
作成したファイル:
- Markdown ソース:
flashcards/<filename>.md - Anki デッキファイル:
flashcards/<filename>.txt(フラッシュカード [X] 枚)
- Markdown ソース:
-
次のステップ:
- インポート準備完了:
.txtファイルは Anki に直接インポートできます - 文法チェック(任意):「文法を確認するには、サブエージェントに Markdown ファイルのレビューを依頼してください」
- インポート準備完了:
コンテンツ抽出の方針
⚠️ 重要:内容ではなく言語に注目してください
再利用可能な言語要素(文法、語彙、用法のパターン)のみを抽出してください。
自問してください:「このカードは言語の使い方を身につけるのに役立つか、それとも内容についての事実を覚えるだけか?」
✅ 抽出するもの:
- 文法のパターンと規則
- 翻訳や定義を添えた語彙
- 用法の例とコロケーション
- 言語固有の慣習(丁寧さのレベル、レジスターなど)
❌ 抽出しないもの:
- あらすじや物語の内容(ただし、語彙や構文自体が学習目標の場合を除く)
- ついでに触れられている文化・歴史的な事実
- 他の文脈では応用できない、トピック固有の知識
- ウェブサイトのナビゲーションやコースの構成情報
含めないものの例:
- 「[物語の概念]の段階には何がありますか?」— 内容の知識であり、言語ではありません
- 「[理論]を発明したのは誰ですか?」— 雑学であり、言語学習ではありません
- 「[トピック固有の用語]はどういう意味ですか?」— 広く使われている語彙である場合を除きます
含めるものの例:
- 「Cuando + 現在接続法」— 文法のパターン(スペイン語)
- 「食べる (taberu) - 食べる」— 読み方付きの語彙(日本語)
- 「cuando を使って未来の時間を表す方法」— 言語の用法規則
優先する項目
- 例文付きの文法パターン — 言語学習に最も役立ちます
- 活用表 — 穴埋め問題に変換します
- 語彙やフレーズ — 翻訳と文脈を添えます
- 例文 — そのまま使うか、翻訳問題に変換します
- 言語の規則と解説 — 質疑応答形式に変換します
- よくある間違いの項目 — 誤り訂正カードを作成します
- 慣用表現 — 用法の例を添えます
省略または最小限にする項目
- ❌ 長い読解文(フラッシュカードには適していません)
- ❌ 複雑な複数段落の解説(言語に関する要点のみを要約します)
- ❌ ナビゲーション要素、広告、サイトのメタデータ
- ❌ 著者の経歴、コースの宣伝
- ❌ 内容に固有の情報(物語、あらすじ、文脈として使われている文化的な事実)
- ❌ 言語そのものの学習に役立たないトピックに関する知識
コンテンツの種類ごとの扱い方
文法レッスンの場合:
- 規則の記述を抽出します
- 例文をすべて集めます
- 異なる時制のバリエーションを作成します
- 例外を明記します
語彙リストの場合:
- 単語と定義・翻訳
- 文脈の中で使われている単語
- コロケーション
演習問題の場合:
- 選択問題を穴埋め問題に変換します
- 正解を抽出します
- 解説があれば含めます
Markdown 出力の構成例
# [Topic Name] - Flashcards for Spaced Repetition
**Source:** [URL of the original page]
**Topics Covered:**
- [List of grammar/vocabulary topics]
---
## Grammar Patterns - [Concept Name]
**Front:** [Pattern description or rule]
**Back:** [Example demonstrating usage]
**Front:** [Variation or related pattern]
**Back:** [Example showing difference]
**Key rule:** [Important note or exception]
---
## Application Exercises
**Front:** [Prompt with blank or transformation task]
**Back:** [Correct answer with explanation if needed]
**Front:** [Another exercise]
**Back:** [Answer]
---
## Vocabulary
**Front:** [Word/phrase in target language]
**Back:** [Definition/translation + example sentence]
**Front:** [Another word]
**Back:** [Definition + context]
---
## Translation Practice
**Front:** [Sentence in native language]
**Back:** [Sentence in target language]
**Front:** [Another sentence]
**Back:** [Translation]
---
## Quick Reference
**Front:** [Question about usage/grammar]
**Back:** [Rule or explanation]
---
## Common Mistakes
**Front:** ❌ [Incorrect usage] → ✅ ?
**Back:** ✅ [Correct usage] ([explanation])
---
## Memory Aids
**Front:** [Question about remembering pattern]
**Back:** [Mnemonic or memory trick]
---
## Study Notes
- Study strategy tips
- Recommended order
- Focus areas
Good luck with your studies! 🎯
避けるべきよくある落とし穴
- キーワードの誤り —
**Front:**と**Back:**を正確に使っていない - 行の結合 — Front と Back を同じ行に書いている
- テキストが多すぎる — カードが長すぎる(2〜3文以内に収める)
- 整理されていない — カードを分類する見出しを使っていない
- ヒントがない — 動詞や時制のヒントがない穴埋め問題
- バリエーションがない — カードの種類が1つだけ(ドリル、質疑応答、翻訳などが必要)
- 確認を省略している — アクセント記号や文法を確認していない
- 順序が無作為 — 難易度やカテゴリー別に整理していない
例
例:ワークフロー全体
ユーザーのリクエスト:「時間表現に関するスペイン語文法のページから単語カードを作成してください」
Claude の処理:
- コンテンツにアクセス:
tabs_context_mcpとget_page_textを使用します - 分析:時間を表す接続詞のレッスンを特定し、主な概念を6つ見つけます
- 言語要素を抽出:
- ✅ 文法パターン(cuando、antes de、mientras など)
- ✅ 用法を示す例文
- ✅ 語彙(valiente、cruel など)
- ❌ 省略:例として使われている物語の内容(筋書きではなく、言語を抽出します)
- ❌ 省略:ページ内で言及されている理論や概念に関する豆知識
- コンテンツを構成:
- 異なる時制での例を含む文法規則
- 翻訳付きの語彙
- 空欄補充の練習問題
- 翻訳の練習
- クイックリファレンス形式のQ&A
- よくある間違い
- 記憶の補助
- ファイルを作成:
flashcards/temporal-connectors.md - 変換:
python3 parse_flashcards.py flashcards/temporal-connectors.mdを実行します - 確認:作成された単語カードが153件と表示されることを確認します
- 報告:「インポート可能な153件の単語カードを含む temporal-connectors.txt を作成しました」
例:単語カードの形式
正確に必要な形式については、上記の「重要:Markdown 形式の要件」セクションを参照してください。
主な原則
反復の価値を最大化する:同じ概念について、異なる角度から複数のカードを作成します(規則、練習問題、翻訳、Q&A)。
段階的な難易度:基本的なパターンから始め、複雑な応用へと進みます。
暗記より文脈を重視する:孤立した規則や定義だけでなく、必ず例文を含めます。