eyeball について
Eyeballは、分析結果と出典のスクリーンショットをデスクトップ上のWord文書にまとめる文書分析スキルです。事実の主張ごとに出典画像を添え、根拠となる箇所を黄色で強調して確認できるようにします。
主な機能
- 01Word・PDF・RTFファイルの読み取り
- 02公開ウェブページの分析
- 03全文とページ番号の抽出
- 04主張に対応する出典アンカーの指定
- 05強調表示付きスクリーンショットのWord文書作成
活用シーン
- 01契約書分析で具体的な条項を確認
- 02文書の分析結果に視覚的な根拠を付与
- 03ウェブ内容を確認し根拠箇所を強調
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ github/ awesome-copilot --skill eyeballインストール後、Claude Code で/eyeballを入力して読み込まれたか確認します。
同梱ファイルtools/eyeball.py
詳細
Eyeball
視覚的な証拠を用いてドキュメントを分析します。起動すると、Eyeball はユーザーのデスクトップに Word ドキュメントを作成します。そこでは、すべての事実に関する主張に、引用テキストを黄色でハイライトした元資料のスクリーンショットがインラインで含まれます。
起動
ユーザーがこのスキルを呼び出したとき(例:「eyeball を使って」「これに eyeball を実行して」「このドキュメントを eyeball で分析して」)、次のように応答します。
Eyeball が有効になりました。 ドキュメントを分析し、元資料のスクリーンショットをインラインで含む Word ドキュメントを作成します。これにより、すべての主張をご自身の目で確認できます。
その後、以下のワークフローに従います。
対応するソース
- ローカルファイル: Word ドキュメント(.docx、.doc)、PDF、RTF ファイル
- Web URL: 公開アクセス可能なあらゆる Web ページ
ツールの場所
Eyeball の Python ユーティリティは次の場所にあります。
<plugin_dir>/skills/eyeball/tools/eyeball.py
実際のパスを確認するには、次を実行します。
find ~/.copilot/installed-plugins -name "eyeball.py" -path "*/eyeball/*" 2>/dev/null
見つからない場合は、プロジェクトディレクトリまたはユーザーのホームディレクトリで eyeball リポジトリを探します。
初回セットアップ
初めて使用する前に、依存関係がインストールされていることを確認します。
python3 <path-to>/eyeball.py setup-check
不足しているものがあれば、必要な依存関係をインストールします。
pip3 install pymupdf pillow python-docx playwright
python3 -m playwright install chromium
Windows では、Word の自動化用に pywin32 もインストールします。
pip install pywin32
ワークフロー
以下の手順に正確に従ってください。順序が重要です。
手順 1:ソーステキストを読む
分析を書く前に、ソースドキュメントの全文を抽出して読みます。
python3 <path-to>/eyeball.py extract-text --source "<path-or-url>"
出力を注意深く読みます。実際のセクション番号、見出し、ページ番号、重要な文言を確認します。
重要: この手順を省略しないでください。ドキュメントの構成を推測して分析を書いてはいけません。実際のテキストを読んでください。
手順 2:正確な引用を用いて分析を書く
分析の各項目では、次のことを必ず行ってください。
- ドキュメントに記載された正しいセクション番号を参照します(例:番号を推測して「Section 8」とするのではなく、「Section 9」とします)。
- 抽出されたテキスト内で該当セクションが記載されている正しいページ番号を参照します。
- 主張を直接裏付ける、ソースからの逐語的なフレーズをアンカーとして選びます。
手順 3:アンカーを正しく選ぶ
これは最も重要な手順です。スクリーンショットでハイライトされる箇所は、アンカーによって決まります。
推奨事項:
- ソースに記載された逐語的なフレーズのうち、主張を直接裏付けるものを使用します
- 読者に見せるべきテキスト全体をカバーするため、複数のアンカーを使用します
- 意図した箇所にのみ出現する、具体的で一般的ではないフレーズを選びます
禁止事項:
- ドキュメント全体に出現する一般的なトピック名(例:「Confidentiality」)を使用しないでください
- 他の箇所で相互参照として使われているセクションタイトルだけを使用しないでください
- 多くの箇所に一致する、単独のよくある単語を使用しないでください
例:
誤り — どこにでも一致する一般的なトピック名を使用:
{"anchors": ["User-Generated Content"], "target_page": 8}
正しい — 主張を裏付ける具体的な文言を使用:
{"anchors": ["retain ownership", "Ownership of Content, Right to Post"], "target_page": 8}
誤り — セクションタイトルが前のページで相互参照として出現:
{"anchors": ["LIMITATION OF LIABILITY"]}
正しい — 正確なセクション番号を含め、対象ページを指定:
{"anchors": ["12. LIMITATION OF LIABILITY", "INDIRECT", "CONSEQUENTIAL"], "target_page": 13}
手順 4:分析ドキュメントを作成する
セクションの JSON 配列を作成し、ビルドコマンドを呼び出します。
python3 <path-to>/eyeball.py build \
--source "<path-or-url>" \
--output ~/Desktop/<title>.docx \
--title "Analysis Title" \
--subtitle "Source description" \
--sections '[
{
"heading": "1. Section Title",
"analysis": "Your analysis text here. Reference Section X on page Y...",
"anchors": ["verbatim phrase 1", "verbatim phrase 2"],
"target_page": 5,
"context_padding": 40
},
{
"heading": "2. Another Section",
"analysis": "More analysis...",
"anchors": ["exact quote from source"],
"target_pages": [10, 11],
"context_padding": 50
}
]'
セクションオブジェクトのフィールド:
heading(必須):出力ドキュメント内のセクション見出しanalysis(必須):分析テキストanchors(必須):ソース内を検索してハイライトする、逐語的なフレーズのリストtarget_page(任意):検索対象とする単一のページ番号(1 から始まる)target_pages(任意):検索対象とするページ番号のリスト(スクリーンショットは縦方向に連結されます)context_padding(任意):アンカー領域の上下に追加する余白(PDF ポイント単位、既定値:40)。より広い範囲を表示するには値を大きくします。
手順 5:出力を渡す
出力をユーザーのデスクトップに保存します。ファイル名と、ハイライトされた元資料のスクリーンショットと照らし合わせて各主張を確認できることをユーザーに伝えます。
提出前のセルフチェック
最終ドキュメントを保存する前に、次の点を頭の中で確認してください。
- 各セクションの分析テキストでは、ソース内の正しいセクション番号を参照していますか?
- アンカーは、対象ページに記載されている語句と一字一句同じですか?
- 各アンカーは、単に同じトピックに関連しているだけでなく、分析の主張を直接裏付けていますか?
- スクリーンショットが分析と一致しない場合、分析とアンカーのどちらが間違っていますか?間違っているほうを修正してください。
注意事項
- 出力ドキュメントには、サイズが動的に変わるハイライト付きスクリーンショットが含まれます。複数のアンカーを指定すると、スクリーンショットはすべてのアンカーをカバーするように拡大されます。
- 検索語が見つからない場合は、出力ドキュメントにその旨が記載されます。その場合、アンカーが原文と十分に一致していない可能性があります。修正して再生成してください。
- ウェブページの場合、Playwright はまずページを PDF にレンダリングします。その結果、ページ番号がブラウザーで表示されるものと異なる場合があります。正しいページ番号を特定するには、抽出したテキスト出力(ステップ 1)を使用してください。
- ユーザーがすでにソーステキストを提供している場合、または現在の会話内ですでに読んでいる場合は、ステップ 1 を省略できます。ただし、分析を書く前に、実際のテキストでセクション番号とページ参照を必ず確認してください。