Communitygithub.com

ci-story

超初心者向けの理解可能なインプット(Comprehensible Input)のストーリービデオ(イラスト付き、ナレーション付き、反復多め)を生成します。現在は中国語(マンダリン)に対応。学習者が新しいストーリーやレッスン、復習、特定のトピックや単語に関するストーリーを求めたり、単語が難しい・既に知っていると言った場合、コースの語彙や利用可能な音声を確認したい場合、ci-story のセットアップを行いたい場合に使用します。

ci-story とは?

ci-story は、言語学習者、特に中国語(マンダリン)学習者向けに、超初心者でも理解できる「Comprehensible Input」形式のショートストーリービデオを自動生成する AI エージェントスキルです。各レッスンは短い動画で構成され、少数のキャラクターが簡単なストーリーを演じ、穏やかな声で短い文がナレーションされます。各文は、画像で意味が明確になるようにしながら何度も繰り返され、字幕(漢字+ピンイン)が現在話されている単語をハイライト表示します。動画の最後の約15%は字幕なしの純粋なリスニングパートとなります。 このスキルは、Claude Code や Codex などの環境で動作することを想定しており、コースデータと学習者のリクエストに基づいて計画を立案し、学習者の承認を得てから生成を実行します。ワークフローは、コースの読み込み、学習者の発言の記録、教育設計(2~3個の新出単語と既習単語のバランス)、lesson.json のドラフト作成、計画の提示と承認、イラスト(SVGまたは画像生成)の作成、ナレーション音声の生成(ローカルのQwenモデルまたはオンラインのedge-tts)、story.py による動きの振付、レンダリング、検証、というステップで構成されます。 主な特徴として、厳格な反復ルール(新出単語は最低10回聞かせる)、学習者の苦手・得意な単語のタグ付け機能、既存のアセット(キャラクター、小道具)の再利用、そしてGPUやネットワークリソースを効率的に使うための音声キャッシュ機構が挙げられます。このスキルは、学習者のインプットを最大化し、理解を促進するための科学的根拠に基づいた設計になっています。

対応✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/victorblaga/ci-story/tree/HEAD/skills/ci-story

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

ci-story は何をしますか?

各レッスンは短い動画です。少人数のキャストが簡単なストーリーを演じ、落ち着いた声が短い文をナレーションし、各文は画像でその意味を明らかにしながら何度も繰り返されます。対象言語の文字とローマ字表記による字幕は、発話中の単語を強調表示します。最後の約15%は字幕なしで、純粋なリスニングとなります。

コースデータと学習者のリクエストから自分で計画を練り、それを提示し、生成を開始する前に学習者のゴーサインを待ちます(ステップ5)。それ以外では、初回実行時のセットアップと大規模なダウンロードの前を除き、実行中に質問をしないでください。

場所

  • <skill>: このスキルのフォルダ(このファイルを含むもの)。scripts/、references/、assets/ を含みます。

  • 設定: ~/.config/ci-story/config.json には workspace、tts_project(ローカルQwen音声の場合のみ)、およびオプションの env が格納されています。これが存在しない場合、またはその中のパスが存在しない場合は、最初に references/setup.md に従ってください。

  • コース: <workspace>/courses/<lang>/ は以下を保持します:

    • course.json: 音声、フォント
    • notes.md: 学習者のオーバーライド
    • art/drawn/、art/generated/
    • audio-cache/
    • lessons/NNN-slug/

    学習者がコース名を指定せず、コースが1つだけ存在する場合は、そのコースを使用します。

  • TTSプロジェクトで uv lock --upgrade を決して実行せず、そこでtorchパスのソースを変更しないでください。マルチGBのtorch wheelがローカルファイルとして固定されている場合があります。

「新しいストーリー」のワークフロー

  1. コースを読む。 python3 <skill>/scripts/curriculum.py report <course> を実行します。notes.md、および最後の1つまたは2つの lesson.json ファイルとその story.py を読み、再利用できるキャスト、小道具、ヘルパーの連続性を確認します。

  2. 学習者の発言を記録する。

    • 難しい、または忘れた単語: struggling: 给 のような行を追加します。
    • よく知っている単語: solid: 苹果 を追加します。
    • もっと出してほしい単語: focus: … を追加します。

    タグ行は単語のみを保持し、カンマ区切りです。後の行は同じ単語の前の行を上書きし、(括弧)内の備考は無視されます。

  3. 教師のように計画する:

    • 最初にリクエストを尊重します: そのトピック、焦点単語、または復習対象を優先します。
    • 2~3個の新出単語を選びます。それぞれが具体的で提示可能(物体、目に見える動作、数字、色、または「持っている/持っていない」「大きい/小さい」などの対比)であり、日常会話で一般的で、既知の単語と組み合わせて簡単な文を作れるものでなければなりません。コースの最初のレッスンでは、合計で5~7語のみを使用し(例:这 是 一个 プラス 2~3個の名詞)、それぞれ10回以上聞かせます。最初のレッスンではすべての単語が新しいため、それらすべてを new_words にリストします。
    • 期限切れ(due)の単語をそれぞれ少なくとも3回織り込みます。脆弱(fragile) および struggling の単語はより頻繁に使用します。solid の単語は、ストーリーにどうしても必要でない限り除外します。
    • すべての新出単語は少なくとも10回聞かせ、毎回、絵がその意味を示します。
    • ストーリーの構成: 導入(これは…)、対比(ある / ない)、動作または変化、そしてすべてを組み合わせた要約。既存のキャスト(man、woman)を維持しますが、ストーリーに新しい人が必要な場合は例外です。
    • 長さは内容に応じて決まります。 デフォルトでは、各新出単語に10回以上の聴取機会を与え、期限切れの単語をカバーするのに必要なだけの文を使用します。通常、30~50文(各2~6語)、およそ2~4分(1文あたり約4秒)です。学習者がより長いストーリー(「約6分」、「長めのもの」)を求めた場合は、同じ2~3個の新出単語を維持し、シーンを追加します: ストーリーを言い換え、同じ単語を新しい状況に置き、より古い単語を持ち出します。時間を埋めるために新しい単語を追加することは決してありません。
    • バリエーションを発明するよりも、文を正確に繰り返すことを優先します。正確な繰り返しは同一に聞こえ(キャッシュから取得)、リスニングに役立ちます。
  4. <course>/lessons/NNN-slug/lesson.json をドラフトする。 NNN はレポートから取得します。このドラフトが計画の信頼できる情報源であり、学習者が承認するまで修正します。各ビートを1行に配置し、ビート番号がわかりやすいようにします:

    {
    

関連スキル