Communitygithub.com

nolan

ソフトウェアデモのために、機能をストーリーボード化し、実際のアプリを操作して、各シーンをクリーンな動画としてキャプチャするスキルです。

nolan とは?

このスキルは、AIエージェント(Claude Code, Cursor, Codexなど)が、ソフトウェアのデモ動画を自動生成するためのフレームワークです。開発者がデモを計画する際、ストーリーボードの作成、実際のアプリ上での操作録画、ナレーションの追加、動画の仕上げまでを一貫して行います。従来のE2Eテストとは異なり、人間が見て理解できる「製品価値を伝える動画」の生成に特化しています。対応プラットフォームは特に限定されず、PythonとPlaywrightがインストールされた環境であれば、任意のWebアプリケーションで動作します。スキルは三つの段階(ストーリーボード作成、録画、ポリッシュ)で構成され、各シーンは独立した.webmファイルとして出力されるため、再撮影や編集が容易です。ナレーションはオプションで、ElevenLabsやOpenAIのTTSを利用して人間らしい音声を追加できます。

対応~Claude Code✓Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/pur4v/nolan/tree/main/skills/nolan

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

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

ドキュメント

nolan は何をしますか?

監督はカメラを回して願うだけでは終わらない。彼らはショットを絵コンテにし、フレーミングし、完全なテイクを撮影する。nolanはソフトウェアデモに対してそれを行う。機能をストーリーボードに変え、画面上の実際のアプリを操作し、製品マネージャーがユーザーに製品を見せるようにすべてのステップをナレーションし、シーンごとにクリーンな動画をキャプチャする。

出力はデモであり、スモークテストではない ― ランディングページに載せたり、顧客に送ったりできる種類のクリップであり、初めて見る人でも「何が」起こっているのか、そして「なぜそれが重要なのか」を理解できる。

このスキルを使うタイミング

実際の仕事が「このプロダクトが何かを行っている様子を、これまで見たことのない人のために、視聴可能な動画として制作する」ことである場合に使用する。それには、ローンチクリップ、機能紹介、ランディングページのヒーロービデオ、オンボーディングチュートリアル、リリースノートのGIFが含まれる。

フローをテストするためにはこれを使わない ― それはE2Eテストであり、簡潔でヘッドレスであるべきだ。nolanはその逆、つまり人間の視聴者のための可読性、ペース配分、ナレーションを最適化する。

ワークフロー ― 3つの段階

段階あなたが依頼する内容…nolanが生成するもの参考資料
🎬 ストーリーボード"機能Xのデモを計画して"シーンごとのストーリーボード(JSON): タイトルカード、キャプション、正確なクリック/タイピング、待つべきものreference/storyboard.md
🎥 録画"録画して"シーンごとに1つの.webm、実行中のアプリに対してライブで操作、タイトルカードと字幕キャプションを重ねて生成reference/recording.md
✨ ポリッシュ"これを視聴可能にして"レビューされ、再撮影されたテイク: 修正されたペース、完全なアクション、読みやすいキャプション、修正されたフレーミングreference/polish.md

段階は連鎖する: ストーリーボード → 録画 → 確認 → ポリッシュ → 再録画。ストーリーボードが正本であり、録画はそれに基づいて決定論的に行われる。

4つの指針(非交渉、すべての動画で必須)

これらがデモをスクリーングラブから区別する。必須である。

  1. プロダクトマネージャーの声であって、スモークテストではない。 ユーザーにとっての価値をナレーションする ― これにより何ができるようになり、なぜ良いのか ― 決してテストの仕組みについて語らない。すべてのキャプションは、PMが顧客に製品を案内しているように読める。reference/pm-voice.md 参照。

  2. 画面上の日常的で親しみやすいコンテンツ。 一般の視聴者がすでに理解しているインプットだけをUIに入力する ― 通常の質問、実世界の例(「オートミルクを買う」「同僚へのお礼状」)。ニッチな専門用語、内部コード名、視聴者が解読しなければならない「異質な」概念は決して使わない。親しみやすさが最優先。

  3. まず見せて、それから語る。 すべてのシーンは全画面のタイトルカード(製品+シーン名)で始まり、組み込まれた字幕キャプション(上部バナー)が各ステップをリアルタイムでナレーションするため、どの視聴者も迷うことがない。reference/captions.md 参照。

  4. 実際のアプリでの完全なテイク。 実際の製品をライブで操作する ― 目に見える人間らしいペースのタイピングと実際のクリック ― そして各アクションが完全に終了するのを待ってから次に進み、その後読み取れるようにポーズする。途中で回答を切り取ったり、遷移を中断したりしない。長さは完全性に奉仕する。

標準手順

  1. デモの範囲を決める。 どの製品、どの機能、どのURLで提供されているか、視聴者は誰か?アプリが実行中で到達可能であることを確認する(nolanはライブアプリを撮影する。モックはしない)。
  2. ストーリーボード。 storyboard.json をドラフトする ― アイデアごとに1シーン、それぞれにタイトルカード、順序付けられたステップ(type / click / select / wait)、PMの声でのキャプションを含める。assets/storyboard-template.json を雛形として使用する。プロンプトは一般的に保つ(§2)。
  3. セレクタのドライラン。 本番撮影の前に、ストーリーボードがターゲットとするプレースホルダー/ロール/テキストが実際にDOMに存在することを確認する(間違ったセレクタはテイク全体を無駄にする)。reference/recording.md で堅牢な選択について説明している。
  4. 録画。 scripts/record.py storyboard.json [scene ...] を実行する。キャプション/タイトルカードのオーバーレイを注入し、各シーンを操作し、完了を待ち、シーンごとに1つの.webmをストーリーボードの out_dir に保存する。
  5. 確認してポリッシュする。 各指針を reference/polish.md に対して確認する ― クリップされているものはないか、キャプションに専門用語はないか、タイピングは人間らしく読めるか、すべてのアクションは完了しているか?ストーリーボードを修正し、影響を受けたシーンのみを再撮影する。
  6. 納品する。 ファイルがどこに配置されたか、サイズ/時間、シーンごとの1行説明を報告する。必要に応じてポスターフレームやGIFを提供する。

nolanが想定するセットアップ

  • Python + Playwright (pip install playwright && playwright install chromium)。scripts/record.py は同期APIと record_video_dir を使用して .webm をキャプチャする。
  • 実行中のアプリ がマシンから到達可能なURLにある(ローカル開発サーバー、または撮影許可のあるデプロイ環境)。
  • 現実的で機密性のないデモデータがアプリにロードされている ― 指針§2と SECURITY.md のデータに関する注記を参照。実際の顧客データや機密情報を決して撮影しない。
  • オプション ― 音声ナレーション。 デフォルトではデモは無音(キャプションが担う)。人間らしい音声のナレーションを追加するには、ストーリーボードに voice ブロックを追加し、ステップに vo 行を追加する。これには ffmpeg (brew install ffmpeg) とTTSプロバイダーが必要 ― ElevenLabs / OpenAI / Deepgram(APIキー、最も人間らしい)、Piper(オフライン、オープンソース)、macOS say(無料、ロボット的)、または command テンプレートを使った任意のツール。reference/narration.md 参照。

詳細は reference/recording.md を参照。ハーネスの詳細、オーバーレイ技術、ストーリーボードのステップリファレンスについて説明している。

ナレーションの追加(オプション)

ストーリーボードに voice ブロックがない限り、ナレーションはオフである。誰かがオーディオ/ナレーション/「人間らしく聞こえるように」を依頼した場合:

  1. どのプロバイダーを使うか尋ねる。 本当に人間らしいオーディオには、クラウドプロバイダーを使い、ユーザーがAPIキーを持っている(または追加する)ことを確認する: ELEVENLABS_API_KEY、OPENAI_API_KEY、または DEEPGRAM_API_KEY。また、command を自身のTTSツールに指定することもできる。
  2. キーがない場合、無料/オフラインのフォールバックを提供する(Piperは品質良好、macOS say はゼロセットアップだがロボット的)― または "provider": "auto" を使用して利用可能な最良のものを使用する。
  3. どちらも希望しない場合、voice を省略する(または "provider": "none")― 動画は従来通り無音で録画される。

その後、キャプションと同じPMの声で vo 行を書き、通常通り録画する。record.py が音声を合成し、シーンごとにミックスする。詳細: reference/narration.md。

出力の原則

  • シーンごとに1つの動画、NN-slug.webm という名前で、シーンを個別に再撮影できるようにする。
  • ハンドオフでは、視聴可能な結果(各クリップが何を示すか)を最初に示し、その後に仕組み(パス、サイズ、再録画方法)を示す。
  • 1つの長いクリップより、いくつかの短く完全なシーンを優先する ― 再撮影や再利用が容易。
  • テイクを短く切らざるを得なかった場合やキャプションがプレースホルダーの場合は、その旨を正直に伝える ― 「シーン3はまだ再撮影が必要」という正直な報告の方が、クリップされたデモを納品するより優れている。

関連スキル