Community画像github.com

nature-image2ppt

スライド画像、スクリーンショット、スキャンしたPDF、画像のみのPPTXファイルを、オブジェクト単位で編集可能なPowerPointに再構築します。

nature-image2ppt とは?

このスキルは、画像化されたスライド(スクリーンショット、スキャンPDF、画像のみのPPTXなど)を解析し、テキスト、図形、画像が個別に編集可能なPowerPointファイルに再構築するためのツールです。元のスライドの視覚的なレイアウトや構成要素を可能な限り保持しながら、PowerPointのネイティブオブジェクトとして復元します。主なユースケースは、会議のスライド画像から編集可能なPPTXを作成したり、複雑なダイアグラムやフローチャートを含む画像を構造化されたオブジェクトとして再現することです。このスキルは、Claude CodeやCodexなどのAIエージェントのランタイム上で動作し、CLIコマンドによってワークフローが管理されます。画像のバックエンドとしてビルトインの画像生成機能やOpenAI互換APIを利用でき、OCRエンジンとしてPaddleOCR(Baidu AI Studio)をオプションで使用します。各ページは、領域分解、アロー(矢印)の再現、アセット管理などの契約に従って段階的に再構築され、最終的に品質チェックを経てPPTXファイルとして出力されます。

対応~Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/JaneJanne/nature-skills-cc/tree/HEAD/skills/nature-image2ppt

Installed? Explore more 画像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

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

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

ドキュメント

Nature Image2PPT

このディレクトリを完全なランタイムとして使用します。決定論的なアクションは以下のコマンドでのみ実行してください:

python <image2ppt-root>/cli/image2ppt/cli.py <command> ...

Python 3.10以降を使用し、requirements.txtをインストールしてください。専用の環境が存在する場合は、以下のすべてのpythonコマンドについて、macOS/Linuxでは<image2ppt-root>/.venv/bin/pythonを、Windowsでは<image2ppt-root>/.venv/Scripts/python.exeを代わりに使用してください。doctorが失敗した場合は続行せず、報告された不足している依存関係のみをインストールしてから再実行してください。

他のスキル、CLI、プロンプト、スキーマ、モジュール、またはステートマシンを発見したり呼び出したりしないでください。

ローカル契約を段階的に読む

常にreferences/workflow.mdを読んでください。references/runtime-dependencies.mdはセットアップ時またはdoctorの失敗時にのみ読み、references/ocr-text-hints-contract.mdはOCRの選択またはトラブルシューティング時にのみ読んでください。

ページマニフェストを書く前に、references/page-decision-tree.mdとreferences/manifest-schema.mdを読んでください。そのページに必要なリファレンスのみを追加してください:

  • 構造化ページまたは複合ページ: references/region-decomposition.md と references/object-routing.md;
  • 矢印: references/manifest-arrow-extension.md;
  • ラスターアセットまたは画像バックエンド作業: references/assets-provenance-contract.md。

出力を受け入れる前または配信する前に、references/qa-contract.mdを読んでください。

単一の信頼できる情報源を維持する

  • page_jobs.jsonを唯一のページ状態ソースとして扱います。
  • 各pages/page_NNN/manifest.jsonを唯一のページコンテンツソースとして扱います。
  • deck_manifest.jsonを最終アセンブリソースとして扱います。
  • ステートフルなライフサイクル操作には、ローカルCLIのprepare、run next/dispatch/record/reset/hints/finalize、およびページコマンドのみを使用します。
  • セマンティック領域の証拠はmanifest.json.image2ppt_region_decompositionに保持します。
  • 2番目のジョブファイル、再構築計画、OCRノーマライザー、ページコントローラー、パッケージャー、またはファイナライズパスを作成しないでください。
  • 補足QAに失敗を報告させますが、ライフサイクル状態を変更させることは決してありません。

すべての書き込みをその所有者ディレクトリ内に保持する

  • ページのビルド、検証、ヒント、QAは、そのページディレクトリ内でのみ読み取りと書き込みを行うことができます。マニフェストパス、記録されたアセット、数式、レポート、プレビュー、および--outオーバーライドは、..、シンボリックリンク、または絶対パスを使用してそれをエスケープしてはなりません。唯一の外部入力例外は、image importまたはprocess-sheet --asset-sheet-sourceに提供される明示的な画像ツールの結果であり、ビルド依存関係になる前にページにコピーされます。
  • 実行レベルのマニフェストと最終出力は、準備された実行ディレクトリ内に残らなければなりません。ファイナライズは同じディレクトリ内の一時ファイルに再構築され、ビルドが成功した後にのみアトミックに公開されます。
  • 境界拒否はハード障害として扱います。拒否されたファイルをスコープ内にコピーしてランタイム出力として提示しないでください。

移行前の動作を維持する

  • 自己完結性をパス/インポート/エントリポイントの移行として扱い、再構築動作の再設計としては扱いません。
  • 各ワーカープロンプトを、完全なローカルベースレイヤーと保存されたImage2PPTプロファイルレイヤーから生成します。いずれかのレイヤーを圧縮、再解釈、または置き換えないでください。
  • 複数のルートが契約を満たす場合は、以前に検証された視覚戦略を優先します。単純な測定オブジェクトはネイティブのままにし、ネイティブの再描画が忠実度を低下させる場合は、境界のある複雑なアセットを保持します。
  • ランタイムの独立性を証明するためだけに、受け入れられたベースラインページを再作成しないでください。

ワークフローを実行する

画像バックエンドの選択

エージェントランタイムがimage_gen.imagegenを公開している場合はbuiltin-imagegenを使用します。これはワーカーが編集入力を検査し、明示的なローカル結果をインポートできるため、推奨されるバックエンドです。ビルトインツールが利用できない場合、エラーが発生した場合、入力を読み取れない場合、または有効なローカル出力を返さない場合にのみ、CLIイメージ契約を使用します。モデル、マスク、サイズ、品質、出力パスなどのオプションの引数が欠落している場合でも、フォールバックは許可されません。実際のプロデューサーと許可されたフォールバック理由をimagegen-jobs.jsonに記録します。

CLIイメージ契約は、トランスポート境界ではプロバイダーニュートラルです。codex-oauthはGPT ImageモデルIDに対してのみ選択します。エンドポイントがOpenAI Images互換の/images/generationsおよび/または/images/editsスキーマを実装しているプロバイダー固有のモデルには、openai-compatible-apiを選択します。タスクの言語モデルから画像バックエンドを推測しないでください。証明が重要な場合は明示的なバックエンドを使用してください。autoは互換性のあるGPT Image IDに対してのみCodex OAuthを使用し、それ以外の場合はCodex OAuthクレデンシャルをサードパーティに送信せずに設定済みのAPIを選択します。

1. 事前チェックとOCRの選択

python <image2ppt-root>/cli/image2ppt/cli.py doctor --json

設定されている場合はBaidu AI StudioのPADDLE_OCR_TOKENを使用します。存在しない場合は、ローカルのbuiltin-inkフォールバックがテキストのジオメトリを測定するが文字を認識しないことをユーザーに一度通知し、references/ocr-text-hints-contract.mdの設定パスを提供します。オフラインのみの選択を尊重します。

2. 1回の実行を準備する

python <image2ppt-root>/cli/image2ppt/cli.py prepare <input...> \
  --out-root output/image2ppt --image-backend builtin-imagegen

監査可能な証明のために設定済みのサードパーティプロバイダー/モデルを固定するには、--image-backend openai-compatible-apiを指定して準備します。実行契約は、アクティブなプロジェクト設定または環境から正確なIMAGE2PPT_IMAGE_MODELを記録します。--modelフラグが渡されなかったという理由だけで、GPT Imageのデフォルトを代わりに使用することはありません。

OCR処理を意図的に無効にする場合にのみ--no-text-hintsを使用します。新しい実行を作成せずにヒントを再生成する必要がある場合:

python <image2ppt-root>/cli/image2ppt/cli.py run hints <run-dir>

3. ページを進めて取得する

python <image2ppt-root>/cli/image2ppt/cli.py run next <run-dir> --json
python <image2ppt-root>/scripts/build_page_worker_prompt.py \
  <run-dir> --page <page-id> --out <absolute-page-dir>/worker-prompt.md
python <image2ppt-root>/cli/image2ppt/cli.py run dispatch \
  <run-dir> --page <page-id> --agent-id <id> --prompt-file <absolute-prompt>

正確に1ページの場合は、--localを指定して現在のエージェントで取得し再構築します。複数ページの場合は、page_jobs.jsonの容量まで独立したページワーカーをディスパッチします。ワーカーが遅いという理由だけでリセットしないでください。

4. 各ページを再構築してゲートする

構造化ページを3~5のセマンティック領域として計画し、各領域を独立してルーティングします。測定された複合図を使用します: すべてのノード、リレーション、保護されたアンカーを測定します。測定可能な円、カード、直線/破線のリレーション、単純なコネクタはネイティブのままにします。複雑なローカルサブパートにのみ、境界のある透明アセットを使用します。

細い矢印は、1つのコネクタとその矢じりを同じオブジェクト上に持つものとして表現します。塗りつぶされた矢印は、1つのArrowオートシェイプとして、中央に配置されたラベルテキストを同じオブジェクト内に持つものとして表現します。通常の矢印を線と三角形から構成したり、ナレッジグラフ全体を1つの画像にフラット化したりしないでください。

新しいページマニフェストはschema_version: 2で記述します。明示的なkindとrepresentationの値を持つ構造化されたvisual_inventoryアイテムを使用し、必須の品質チェックごとに具体的なquality_evidenceの観察結果を記述します。数式レンダリングはハードゲートです: エンジンがない、コンバーターがない、またはコンパイルに失敗した場合は、ユーザーがその正確な数式の例外を明示的に承認し、マニフェストがuser_approved_exception: trueと具体的なapproval_noteの両方を記録しない限り、ページは失敗したままにしておく必要があります。

ワーカープロンプトは決定論的なシーケンスを実行します。その最終ゲートは以下のとおりです:

python <image2ppt-root>/cli/image2ppt/cli.py page build <page-dir>
python <image2ppt-root>/scripts/run_image2ppt_qa.py <page-dir>
# 最初の実行はvisual-review-evidence.template.jsonを書き込み、保留中のままになります。
# source.pngをrender/rendered.pngと比較して検査し、テンプレートをコピーして
# visual-review-evidence.jsonとして完成させ、必要に応じて修正してから:
python <image2ppt-root>/scripts/run_image2ppt_qa.py <page-dir> \
  --visual-review-status reviewed \
  --visual-review-evidence <page-dir>/visual-review-evidence.json
python <image2ppt-root>/cli/image2ppt/cli.py page contact-sheet <page-dir>

証拠ファイルは、現在のソース/レンダリングハッシュと、特定の観察結果を伴う必要なすべてのチェックをカバーする必要があります。--visual-review-notesはオプションのコンテキストであり、証拠ファイルの代わりにはなりません。

標準の検証とImage2PPT領域、矢印、レンダリングゲートがすべて通過した後にのみ記録します:

python <image2ppt-root>/cli/image2ppt/cli.py run record \
  <run-dir> --page <page-id> --agent-id <id>

同じrun reset → dispatch → recordライフサイクルを使用して、拒否されたページを修復します。

5. 再構築されたデッキをファイナライズして再検証する

run nextがfinalizeを報告したら、以下を実行します:

python <image2ppt-root>/cli/image2ppt/cli.py run finalize <run-dir>
python <image2ppt-root>/scripts/run_final_image2ppt_qa.py <run-dir>
# 最初の実行はfinal/visual-review-evidence.template.jsonを書き込み、保留中のままになります。
# レンダリングされたすべてのスライドを検査し、final/visual-review-evidence.jsonを完成させてから:
python <image2ppt-root>/scripts/run_final_image2ppt_qa.py <run-dir> \
  --visual-review-status reviewed \
  --visual-review-evidence <run-dir>/final/visual-review-evidence.json

ファイナライズはページマニフェストから再構築し、ソースのスピーカーノートを保持し、パッケージを検証し、deck_manifest.jsonによって記録された出力を書き込みます。最終QAはマニフェストの矢印を再適用し、矢印のアトミック性と複合構造を検証し、すべてのスライドをレンダリングし、スピーカーノートの整合性をチェックし、final/image2ppt_qa.jsonを書き込みます。

配信

最終的なPPTXパス、標準の最終検証、およびfinal/image2ppt_qa.jsonを返します。どの複雑なビジュアルが置き換え可能なビットマップアセットのままかを報告します。ページ/ファイナルゲートが保留中または失敗している間は、デッキが完了したと呼び出さないでください。

関連スキル