anydoc について
既存のオフィス文書、表計算ファイル、プレゼンテーション、電子書籍、CSV、テキスト PDF を GitHub-Flavored Markdown に変換するスキルと Python ヘルパーです。ローカル変換と一括処理に対応し、ホスト型 OCR は明示的な許可が必要です。
主な機能
- 01対応ファイルをGFMに変換
- 02文書やスライドの構造を抽出
- 03複数ファイルの一括変換
- 04標準入力から文書データを読み込み
- 05スキャンPDF向けのホスト型OCR
- 06dry-runとJSON出力
活用シーン
- 01Wordレポートを要約用に変換
- 02表計算ファイルをMarkdown表に変換
- 03スライドのタイトルと発表者ノートを抽出
- 04検索用に文書フォルダーを一括処理
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ magnus919/ agent-skills --skill anydocインストール後、Claude Code で/anydocを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdevals/evals.jsonfixtures/book.epubempty--errors.docxencrypted--errors.odtfixture-handmade-numbering.docxfixture-handmade-outline.docxfixture-handmade-quoted.csvfixture-handmade-rich.docxfixture-handmade-semicolon.csvfixture-handmade-tables.docxfixture-handmade-utf16.csvfixture-sheet.csvhandmade-merged.xlsxpres.odppres.pptpres.pptxsheet.odssheet.xlssheet.xlsxtext.doctext.odttext.rtfunsupported.xyzreferences/cli-reference.mderrors.mdformats.mdreport-examples.mdsources.mdworkflows.md詳細
Any Doc — オフィス文書を GitHub-Flavored Markdown に変換
anydoc スキルは、ピン留めされた Any Doc CLI(@firecrawl/anydoc v0.2.4)を使用して、オフィス文書、スプレッドシート、プレゼンテーション、電子書籍、CSV、テキストベースの PDF を GitHub-Flavored Markdown に変換します。すべての形式で、共通のドキュメントモデルと GFM シリアライザーを使用し、同じ論理的な出力を生成します。ローカル変換はサービス、API キー、ファイルのアップロードなしで実行でき、ホスト型 OCR は別途明示的に選択する経路です。
概要
エージェントが直接読み取れないドキュメントの 内容 が必要なタスクでは、このスキルを読み込みます。たとえば、要約する Word のレポート、表に変換するスプレッドシート、内容を抽出するスライド資料、分析する CSV、引用する電子書籍や PDF などです。
このスキルには、ピン留めされた CLI をラップし、入力の事前検証、分かりやすいエラーのヒント、バッチ変換、--dry-run/--json 出力を追加する小さな Python ヘルパー(scripts/anydoc)が含まれています。references/workflows.md の各レシピには生の npx 呼び出しも記載されているため、ヘルパーの有無にかかわらずスキルを利用できます。
初回利用時の判断ゲート
anydoc を呼び出す前に、リクエストを分類してください。
| ユーザーが必要としているもの | 対応方法 |
|---|---|
| 既存のサポート対象ドキュメントの内容 | コマンド一覧に進みます。 |
| 生成、編集、検証、EPUB パッケージ化、HTML スクレイピング、またはパスワードの復号 | 停止し、使用しないケースに記載された経路を使用します。 |
| 形式の忠実性や失敗に関する判断 | コマンドを選択する前に、リファレンスの振り分けで該当する項目を読み込みます。 |
| 変換結果 | 標準出力、-o、またはバッチを選択して実行し、検証に従います。 |
厳格な境界: ローカルの anydoc 変換は、サポート対象の既存ドキュメントをアップロードせずに読み取り、Markdown に変換します。ホスト型 OCR はオプトインのみです。OCR が必要な PDF 全体を、設定された Parse サービスに送信します。AnyDoc はドキュメントの作成、編集、検証、パッケージ化、復号、スクレイピングを行いません。
使用するケース
- ドキュメントを Markdown に変換する — Word、PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV、またはテキストベースの PDF。
- 構造を抽出する — 見出し、GFM テーブル、スライドのタイトル、話者ノート(引用ブロックとして)、脚注。
- ドキュメントを LLM に入力する — 要約、抽出、検索用の取り込みに適した、クリーンな Markdown へのワンパス変換。
- フォルダーをバッチ処理する — 保管庫またはナレッジベース用に、複数形式が混在するディレクトリ内のオフィスファイルを変換する。
- 標準入力からドキュメントを読み取る — バイト列を
anydoc -にパイプで渡す。
フォーマット対応状況(概要)
anydoc は、12 種類の標準パーサーを通じて、8 つのフォーマットファミリー/21 の拡張子に対応しています。標準フォーマットは doc, docx, odt, pdf, ppt, pptx, rtf, epub, xlsx, ods, odp, csv です。拡張子の別名はこれらを介して対応付けられます(.docm→docx、
.xls→xlsx、.pptm→pptx など)。
| ファミリー | 拡張子 | 想定される GFM 出力 | 選択の目安 |
|---|---|---|---|
| Word | .doc .docx .docm | #–###### の見出し、GFM テーブル、[^n] の脚注 | コンテンツの抽出で十分な場合に使用してください。レンダリングされたレイアウトが重要な場合は documents を使用してください。 |
| PowerPoint | .ppt .pps .pot .pptx .pptm .ppsx .ppsm | スライドタイトルは通常の段落、箇条書き、発表者ノートは > の引用ブロック、GFM テーブル(PPTX/ODP。旧形式の .ppt ではテーブルがテキスト行に平坦化されます) | テーブルの忠実度が必要ですか?PPTX または ODP を優先してください。旧形式の .ppt はセルのテキストを保持しますが、テーブル構造は保持しません。 |
| Excel | .xls .xlsx .xlsm .xlsb | ワークシートごとに ## <sheet name> の見出しと GFM テーブル。数値書式は削除されます(セルの生の値) | 表示されるパーセンテージ、通貨、または数値書式が必要ですか?ODS を優先してください。XLS/XLSX の出力は生の値です。 |
| OpenDocument | .odt .ods .odp | DOCX/PPTX と同じドキュメント/スライドの形式。ODS では書式設定済みの表示値が保持されます | スプレッドシートの表示書式が意味に関わる場合は、ODS を優先してください。 |
| リッチテキスト形式 | .rtf | DOCX/ODT と同じドキュメント形式 | レイアウトの保持ではなく、テキストの抽出に使用してください。 |
| EPUB | .epub | # の章見出し、GFM テーブル、内部アンカーリンク | 既存の EPUB を読む場合に使用してください。EPUB を作成またはパッケージ化するには epub を使用してください。 |
| CSV | .csv | 1 つの GFM テーブル。ラベルのような先頭行はヘッダーに昇格されます。区切り文字の自動判定に対応。BOM 付き UTF-16 に対応 | 区切り形式の表形式コンテンツに使用してください。出力に問題がある場合は、区切り文字とエンコーディングを確認してください。 |
.pdf | 見出し+インライン強調。ただし、忠実度の低いパイプラインです。テーブルはテキストに平坦化され、脚注やリンクの品質は低下します。テキストベースの PDF はローカルにとどまります。スキャンされた PDF または画像のみの PDF には、明示的なホスト型 OCR または別の OCR ツールが必要です | デフォルトではローカルモードを使用してください。ホスト型モードでは PDF 全体がアップロードされ、ページを選択できません。 |
フォーマットごとの詳細な想定と忠実度に関する注意事項は references/formats.md を、OCR 非対応エラーを含む正確なエラーメッセージは references/errors.md を参照してください。
コマンド一覧
コマンドはリポジトリのルートからの相対パスで示しています。<file> は任意のドキュメントパスです
(例:anydoc/fixtures/fixture-handmade-outline.docx)。- を指定すると、標準入力からドキュメントを読み込みます。
| 必要な操作 | コマンド | このコマンドを選ぶ場面 |
|---|---|---|
| 1 つのファイルを変換し、小さな Markdown を標準出力に出力する | anydoc/scripts/anydoc convert <file> | 呼び出し側がすぐにコンテンツを必要としており、保存された成果物を必要としない場合です。 |
| 1 つのファイルを Markdown ファイルに変換する | anydoc/scripts/anydoc convert <file> -o out.md | 出力が大きい場合、後で確認する必要がある場合、または成果物として保存する場合です。 |
| 複数のファイルをディレクトリに変換する | anydoc/scripts/anydoc batch <file1> <file2> ... --out-dir out/ | 対象が限定された一括処理で、ファイルごとの出力やステータスが役立つ場合です。 |
| ツールと固定された CLI バージョンを表示する | anydoc/scripts/anydoc info | トラブルシューティングや環境の問題を報告する前に、実行ファイルとバージョンを確認する必要がある場合です。 |
| 固定バージョンの生の CLI で 1 つのドキュメントを処理する | npx -y @firecrawl/[email protected] <file> [-o out.md] | ラッパーが利用できない場合に、固定された CLI と文書化されたセマンティクスを維持します。 |
| 固定バージョンの生の CLI で標準入力を読み込む | cat data.csv | npx -y @firecrawl/[email protected] - --format csv | データがすでに標準入力に届いており、形式が分かっている場合です。生成側のパイプラインとコンバーターは分けてください。 |
OCR が必要な PDF の場合、まずローカルのデフォルト設定を使い、失敗が分かるようにしてください。
anydoc/scripts/anydoc convert scan.pdf --ocr reject
ユーザーが PDF 全体を Firecrawl Parse に送信することを明示的に許可した場合、必要に応じてラッパーへの確認オプションと、信頼できる FIRECRAWL_API_KEY 環境変数を使用してください。
anydoc/scripts/anydoc convert scan.pdf --ocr hosted --allow-hosted-upload
ラッパーはコマンドラインにキーを指定しません。ホスト型 OCR ではページを選択できず、ホスト型の処理が失敗しても、黙ってエンドポイントを切り替える許可にはなりません。
注意事項:
scripts/anydocは実行可能な Python 3 スクリプトです(シバンは#!/usr/bin/env python3)。実行ビットが利用できない場合は、python3 anydoc/scripts/anydoc ...としても同じです。- 生の
npx -y @firecrawl/[email protected]の行が変換動作の基準です。ラッパーはまさに同じコマンドに処理を委譲します。 - 再現可能な変換のため、常に
@0.2.4を固定してください。-yは npx の「Ok to proceed?」というプロンプトに非対話で応答します。CLI 自体がプロンプトを表示することはありません。 - どちらの形式も同じ仕様に従います。1 回の実行につき 1 つのドキュメントを処理し、終了コードは成功が
0、変換または IO の失敗が1、使用方法のエラーが2です。診断は stderr にanydoc: <message>の 1 行のみを出力し、プロンプトは表示しません。
ホスト型 OCR は 0.2.4 のライブラリと CLI でサポートされていますが、ラッパーではアップロードが暗黙に選択されないよう、--ocr hosted と --allow-hosted-upload の両方が必要です。ページを選択できないため、ホスト型の経路では PDF 全体を Firecrawl Parse に送信します。API キーをコマンドラインに指定しないでください。
リファレンスの使い分け
直近の質問に答える行だけを読み込みます。コマンド例と検証の取り決めはこのファイルに記載されています。
| 必要なこと | 読み込むファイル | わかること |
|---|---|---|
| 形式を選択する、または忠実度を予測する | references/formats.md | 対応する形式のファミリー、出力形式、および XLSX の生の値、ODS の表示値、旧式 .ppt の表のフラット化、PDF の品質低下などの注意事項。 |
| フラグ、stdin の構文、出力動作、またはバージョンの詳細を確認する | references/cli-reference.md | ヘルプの原文、使用可能なオプション、stdin の規則、stdout/stderr の動作、バージョンの固定、実行時の要件。 |
| 失敗を分類する、または再試行するか判断する | references/errors.md | 終了コード、正確なエラー用語、OCR 非対応/暗号化に関する制限、および次に進むべき方法。 |
| 単一ファイル、stdin、バッチ、Vault、または大容量出力のレシピを選択する | references/workflows.md | 最初から最後までのレシピ、安全な出力処理、ファイルごとの失敗時の対応、リソース制限の動作。 |
| 文書化された上流の情報またはフィクスチャに関する記述を検証する | references/sources.md | ソース URL、アクセス日、フィクスチャの出所、文書化された記述の検証根拠。 |
| 最終的なエビデンスレポートを作成する | references/report-examples.md | Verification に従った後に参考にできる、成功時、想定された失敗時、忠実度の制限に関するレポートの完全な例。 |
使用しないケース
変換コマンドを使う前に、このルーティング表を確認してください。
| ユーザーの依頼 | 使用するもの | 理由 |
|---|---|---|
| PDF/Word/Excel/PowerPoint ファイルの生成、編集、レンダリングされたレイアウトの確認、または検証 | documents skill | anydoc は既存の文書内容を Markdown に抽出しますが、ファイルの作成、レンダリングされたレイアウトの保持、ファイルの検証は行いません。 |
| EPUB のパッケージ化または作成 | epub skill | anydoc は既存の EPUB を Markdown に読み込みますが、EPUB コンテナの書き込みや検証は行いません。 |
| スキャンされた PDF、または画像のみの PDF の OCR | ローカル OCR ツール、または明示的な許可を得た後に AnyDoc のホステッド OCR | ローカルモードではアップロードせず、OCR が必要なことを示すエラーを返します。ホステッドモードでは PDF 全体が Firecrawl Parse に送信されます。 |
| HTML またはその他のウェブコンテンツのスクレイピング | ウェブスクレイピング用スキル | HTML は anydoc が対応する入力形式ではありません。 |
| 画像、動画、音声などのバイナリメディアの文字起こし | メディアまたは文字起こし用ツール | 埋め込み画像は代替テキストになります。anydoc はメディアの文字起こしを行えません。 |
| ページ割り、フォント、テンプレート、またはレンダリングされたレイアウトの保持 | 文書/レイアウト用ツール | 出力の取り決めは GitHub-Flavored Markdown のみです。 |
| パスワードで保護されたファイルの変換 | 文書の所有者から入手した、暗号化されていないコピー | anydoc にはパスワードまたは復号化のオプションがありません。 |
検証
成功したことだけでなく、エビデンスを報告してください。 変換を試みるたびに、入力、正確なコマンドまたはラッパーのパス、確認された終了コード、出力先(stdout またはファイル)、確認した構造マーカー、および文書化された注意事項または次に進むべき方法を報告してください。
簡潔なレポート形式:
Input: <path or stdin source>
Command: <exact wrapper or pinned CLI path>
Exit: <observed code>
Output: <stdout or destination file>
Checks: <markers or fidelity facts observed>
Caveat/route: <documented limitation or next action>
共通の停止条件
| 条件 | してはいけないこと | 次の手順 |
|---|---|---|
| スキャン済みまたは画像のみの PDF/OCR が必要というエラー | 変更せずに再試行する、または暗黙にアップロードする | ローカル OCR を使用するか、明示的に許可して --ocr hosted --allow-hosted-upload を実行します。ページ選択は利用できません。 |
| 暗号化されたドキュメントまたはパスワード保護されたドキュメント | パスワードを推測する、または変更せずに再試行する | 暗号化されていないコピー、または所有者が許可した再エクスポートを依頼します。 |
| サポート対象外、不正な形式、またはリソース制限のエラー | パーサーを推測する、または部分的な成功を主張する | references/errors.md でエラーと完全に一致する項目を確認し、定められた手順に従います。 |
| 終了コードが 0 でも、想定される構造マーカーがない | 終了コードだけで成功を報告する | 出力の構造とソースの忠実性を確認してから、完了を報告します。 |
完了を報告する前に、変換結果を確認します。
- 終了コードを確認します。
0は、CLI が Markdown を生成したことを意味します。1は、ドキュメントを読み取れなかったか変換できなかったことを意味します。stderr に出力された単一のanydoc: <message>行を読み、references/errors.md と照合します。2は、コマンド自体の使用方法に誤りがあったことを意味します(不正なフラグ、入力の欠落、無効な--format)。 - 出力の構造を確認します。 Markdown に、実際にその形式で生成される構造マーカーが含まれている必要があります。
- Word/ODT/RTF/テキストベースの PDF:
#/##見出し。PDF では GFM テーブルや[^1]:形式の脚注定義を想定しないでください。このパイプラインでは平坦化されます。 - スプレッドシート(xlsx/xls/ods)と CSV:
|で区切られた GFM テーブル。xlsx/xls ではセルの生の値(0.155、1234.5)、ODS では書式設定された表示値(15.5%、$1,234.50)が表示されます。 - プレゼンテーション(pptx/odp):スライドのタイトルは通常の段落、
>は引用形式の発表者ノート、GFM テーブルが含まれます。旧形式の.pptではテーブルは平坦化され、テキスト行のみになります。 - EPUB:
#形式の章見出しと内部アンカーリンク。
- Word/ODT/RTF/テキストベースの PDF:
- 大きな出力は
-oを使ってファイルに書き込みます。-o out.mdを指定すると標準出力は空のままになり、ドキュメント全体をコンテキストに流し込まずに確認可能なファイルが得られます。 - テーブルが保持されていることを確認します。 ソースにテーブルがあったのに出力に
|行がない場合は、形式ごとの注意事項を確認します。PDF と旧形式の.pptでは、エラーではなく仕様としてテーブルが平坦化されます。
次の場合は停止します。 変換が終了コード 0 で終了し、構造マーカーがソース形式に合致している場合です。入力を変更せずに、記載済みの失敗モード(暗号化、不正な形式、スキャン済み/画像のみ、サポート対象外)で再実行または再試行しないでください。エラーメッセージと、その対処手順として references/errors.md に記載されている内容を報告します。