Communityコーディング&開発github.com

docx

プロフェッショナルな文書(.docx)の作成、編集、分析を包括的にサポート。変更履歴、コメント、書式保持、テキスト抽出に対応。

docx とは?

このスキルは、Claude CodeなどのAIエージェントが.docxファイルを扱うための包括的な機能を提供します。ドキュメントの作成、編集、分析を目的に、状況に応じた最適なワークフローを選択できます。例えば、テキスト抽出にはpandocを使用してドキュメントをMarkdown形式に変換し、構造や変更履歴を保持します。編集時には、Document Library(Pythonライブラリ)を使い、OOXMLを直接操作して変更履歴やコメントを追加できます。また、`docx-js`ライブラリを用いてJavaScript/TypeScriptで新しいWord文書を作成することも可能です。特に、法律文書や学術文書など、変更履歴が重要な場面では、変更点を計画し、3~10件のバッチ単位で実装する「Redliningワークフロー」が推奨されます。さらに、ドキュメントを画像に変換して視覚的な分析を行う機能も備えており、PDF変換ツール(LibreOffice、Poppler)を利用します。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ComposioHQ/awesome-claude-skills/tree/master/document-skills/docx

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

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

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

ドキュメント

DOCXの作成、編集、分析

概要

ユーザーが.docxファイルの作成、編集、または内容の分析を依頼することがあります。.docxファイルは基本的にXMLファイルやその他のリソースを含むZIPアーカイブであり、読み取りや編集が可能です。タスクごとにさまざまなツールとワークフローが用意されています。

ワークフロー判断ツリー

読み取り/分析

以下の「テキスト抽出」または「生XMLアクセス」セクションを使用してください。

新しいドキュメントを作成

「新しいWord文書の作成」ワークフローを使用してください。

既存のドキュメントを編集

  • 自分自身のドキュメント + 簡単な変更 「基本的なOOXML編集」ワークフローを使用してください。

  • 他の人のドキュメント 「Redliningワークフロー」(推奨デフォルト)を使用してください。

  • 法務、学術、ビジネス、政府文書 「Redliningワークフロー」(必須)を使用してください。

読み取りと内容分析

テキスト抽出

ドキュメントのテキスト内容を読み取るだけの場合は、pandocを使用してドキュメントをMarkdownに変換してください。Pandocはドキュメント構造を保持する優れたサポートを提供し、変更履歴も表示できます。

# 変更履歴を含めてドキュメントをMarkdownに変換
pandoc --track-changes=all path-to-file.docx -o output.md
# オプション: --track-changes=accept/reject/all

生XMLアクセス

次の機能には生XMLアクセスが必要です:コメント、複雑な書式設定、ドキュメント構造、埋め込みメディア、メタデータ。これらの機能のいずれかについては、ドキュメントを解凍して生のXML内容を読み取る必要があります。

ファイルの解凍

python ooxml/scripts/unpack.py <office_file> <output_directory>

主要なファイル構造

  • word/document.xml - メインドキュメントの内容
  • word/comments.xml - document.xmlで参照されるコメント
  • word/media/ - 埋め込まれた画像とメディアファイル
  • 変更履歴は<w:ins>(挿入)および<w:del>(削除)タグを使用します

新しいWord文書の作成

新しいWord文書を新規作成する場合は、docx-jsを使用してください。これにより、JavaScript/TypeScriptを使用してWord文書を作成できます。

ワークフロー

  1. 必須 - ファイル全体を読む: docx-js.md(約500行)を最初から最後まで完全に読んでください。このファイルを読む際には範囲制限を設定しないでください。文書作成に進む前に、詳細な構文、重要な書式設定ルール、ベストプラクティスについてファイルの全内容を読んでください。
  2. Document、Paragraph、TextRunコンポーネントを使用してJavaScript/TypeScriptファイルを作成します(すべての依存関係はインストール済みと仮定できますが、インストールされていない場合は以下の依存関係セクションを参照してください)。
  3. Packer.toBuffer()を使用して.docxとしてエクスポートします。

既存のWord文書の編集

既存のWord文書を編集する場合は、Document Library(OOXML操作用のPythonライブラリ)を使用してください。このライブラリは自動的にインフラストラクチャを設定し、ドキュメント操作用のメソッドを提供します。複雑なシナリオでは、ライブラリを通じて基盤となるDOMに直接アクセスできます。

ワークフロー

  1. 必須 - ファイル全体を読む: ooxml.md(約600行)を最初から最後まで完全に読んでください。このファイルを読む際には範囲制限を設定しないでください。Document LibraryのAPIとドキュメントファイルを直接編集するためのXMLパターンについてファイルの全内容を読んでください。
  2. ドキュメントを解凍します:python ooxml/scripts/unpack.py <office_file> <output_directory>
  3. Document Libraryを使用してPythonスクリプトを作成して実行します(ooxml.mdの「Document Library」セクションを参照)。
  4. 最終的なドキュメントをパックします:python ooxml/scripts/pack.py <input_directory> <office_file>

Document Libraryは、一般的な操作のための高レベルメソッドと、複雑なシナリオのための直接DOMアクセスの両方を提供します。

ドキュメントレビューのためのRedliningワークフロー

このワークフローでは、Markdownを使用して包括的な変更履歴を計画してから、OOXMLで実装できます。重要: 完全な変更履歴を実現するには、すべての変更を体系的に実装する必要があります。

バッチ戦略: 関連する変更を3~10個のバッチにグループ化します。これにより、デバッグが管理しやすくなり、効率を維持できます。各バッチをテストしてから次のバッチに進みます。

原則: 最小限で正確な編集 変更履歴を実装する際は、実際に変更されるテキストのみをマークしてください。変更されていないテキストを繰り返すと、編集がレビューしにくくなり、プロフェッショナルではないように見えます。置換は次のように分割します:[変更なしのテキスト] + [削除] + [挿入] + [変更なしのテキスト]。変更なしのテキストの元のランのRSIDは、元の<w:r>要素を抽出して再利用することで保持します。

例 - 文中の「30日」を「60日」に変更する場合:

# 悪い例 - 文全体を置換
'<w:del><w:r><w:delText>期間は30日です。</w:delText></w:r></w:del><w:ins><w:r><w:t>期間は60日です。</w:t></w:r></w:ins>'

# 良い例 - 変更された部分のみをマークし、変更なしのテキストには元の<w:r>を保持
'<w:r w:rsidR="00AB12CD"><w:t>期間は</w:t></w:r><w:del><w:r><w:delText>30</w:delText></w:r></w:del><w:ins><w:r><w:t>60</w:t></w:r></w:ins><w:r w:rsidR="00AB12CD"><w:t>日です。</w:t></w:r>'

変更履歴ワークフロー

  1. Markdown表現を取得: 変更履歴を保持したままドキュメントをMarkdownに変換します:

    pandoc --track-changes=all path-to-file.docx -o current.md
    
  2. 変更を特定してグループ化: ドキュメントをレビューし、必要なすべての変更を特定して、論理的なバッチに整理します:

    位置特定方法(XML内の変更を見つけるため):

    • セクション/見出し番号(例:「セクション3.2」、「第4条」)
    • 番号付きの段落識別子
    • 一意の周囲テキストを使用したgrepパターン
    • ドキュメント構造(例:「最初の段落」、「署名欄」)
    • Markdownの行番号を使用しないでください - XML構造にマッピングされません

    バッチ整理(1バッチあたり3~10の関連変更をグループ化):

    • セクション別:「バッチ1:セクション2の修正」、「バッチ2:セクション5の更新」
    • 種類別:「バッチ1:日付の修正」、「バッチ2:当事者名の変更」
    • 複雑性別:単純なテキスト置換から始め、複雑な構造変更に取り組みます
    • 順次:「バッチ1:1~3ページ」、「バッチ2:4~6ページ」
  3. ドキュメントを読んで解包:

    • 必須 - ファイル全体を読む: ooxml.md(約600行)を最初から最後まで完全に読んでください。このファイルを読む際には範囲制限を設定しないでください。「Document Library」と「Tracked Change Patterns」セクションに特に注意してください。
    • ドキュメントを解凍: python ooxml/scripts/unpack.py <file.docx> <dir>
    • 提案されたRSIDを書き留める: 解凍スクリプトは、変更履歴に使用するRSIDを提案します。このRSIDをコピーして手順4bで使用します。
  4. バッチで変更を実装: 変更を論理的にグループ化し(セクション別、種類別、近接性別)、単一のスクリプトでまとめて実装します。このアプローチ:

    • デバッグが容易になります(バッチが小さいほどエラーの特定が容易)
    • 段階的な進捗が可能
    • 効率を維持します(3~10個の変更のバッチサイズが適切)

    推奨バッチグループ化:

    • ドキュメントセクション別(例:「セクション3の変更」、「定義」、「終了条項」)
    • 変更タイプ別(例:「日付の変更」、「当事者名の更新」、「法的用語の置換」)
    • 近接性別(例:「1~3ページの変更」、「前半の変更」)

    関連する各変更バッチについて:

    a. テキストをXMLにマッピング: word/document.xml内のテキストをgrepして、テキストがどのように<w:r>要素に分割されているかを確認します。

    b. スクリプトを作成して実行: get_nodeを使用してノードを見つけ、変更を実装し、doc.save()を実行します。パターンについては、ooxml.mdの**「Document Library」**セクションを参照してください。

    注: スクリプトを作成する直前に必ずword/document.xmlをgrepして、現在の行番号を取得し、テキスト内容を確認してください。行番号はスクリプト実行後に変わります。

  5. ドキュメントをパック: すべてのバッチが完了したら、解凍したディレクトリを.docxに戻します:

    python ooxml/scripts/pack.py unpacked reviewed-document.docx
    
  6. 最終検証: 完全なドキュメントの包括的なチェックを行います:

    • 最終ドキュメントをMarkdownに変換:
      pandoc --track-changes=all reviewed-document.docx -o verification.md
      
    • すべての変更が正しく適用されたことを確認:
      grep "元のフレーズ" verification.md  # 見つからないはず
      grep "置換フレーズ" verification.md  # 見つかるはず
      
    • 意図しない変更が導入されていないことを確認します

ドキュメントを画像に変換

Word文書を視覚的に分析するために、2段階のプロセスで画像に変換します:

  1. DOCXをPDFに変換:

    soffice --headless --convert-to pdf document.docx
    
  2. PDFページをJPEG画像に変換:

    pdftoppm -jpeg -r 150 document.pdf page
    

    これにより、page-1.jpg、page-2.jpgなどのファイルが作成されます。

オプション:

  • -r 150: 解像度を150 DPIに設定(品質/サイズのバランスを調整)
  • -jpeg: JPEG形式で出力(必要に応じて-pngでPNGに)
  • -f N: 変換開始ページ(例:-f 2で2ページ目から開始)
  • -l N: 変換終了ページ(例:-l 5で5ページ目で停止)
  • page: 出力ファイルのプレフィックス

特定範囲の例:

pdftoppm -jpeg -r 150 -f 2 -l 5 document.pdf page  # 2~5ページのみ変換

コードスタイルガイドライン

重要: DOCX操作用のコードを生成する場合:

  • 簡潔なコードを書くこと
  • 冗長な変数名や不要な操作を避けること
  • 不要なprint文を避けること

依存関係

必要な依存関係(利用できない場合はインストール):

  • pandoc: sudo apt-get install pandoc(テキスト抽出用)
  • docx: npm install -g docx(新しい文書作成用)
  • LibreOffice: sudo apt-get install libreoffice(PDF変換用)
  • Poppler: sudo apt-get install poppler-utils(pdftoppmでPDFを画像に変換するため)
  • defusedxml: pip install defusedxml(安全なXML解析用)

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

ably-automation

Automate Ably tasks via Rube MCP (Composio). Always search tools first for current schemas.

abstract-automation

Automate Abstract tasks via Rube MCP (Composio). Always search tools first for current schemas.

abuselpdb-automation

Automate Abuselpdb tasks via Rube MCP (Composio). Always search tools first for current schemas.

abyssale-automation

Automate Abyssale tasks via Rube MCP (Composio). Always search tools first for current schemas.

accelo-automation

Automate Accelo tasks via Rube MCP (Composio). Always search tools first for current schemas.

accredible-certificates-automation

Automate Accredible Certificates tasks via Rube MCP (Composio). Always search tools first for current schemas.

acculynx-automation

Automate Acculynx tasks via Rube MCP (Composio). Always search tools first for current schemas.

active-campaign-automation

Automate ActiveCampaign tasks via Rube MCP (Composio). Always search tools first for current schemas.

addresszen-automation

Automate Addresszen tasks via Rube MCP (Composio). Always search tools first for current schemas.

adobe-automation

Automate Adobe tasks via Rube MCP (Composio). Always search tools first for current schemas.

adrapid-automation

Automate Adrapid tasks via Rube MCP (Composio). Always search tools first for current schemas.

adyntel-automation

Automate Adyntel tasks via Rube MCP (Composio). Always search tools first for current schemas.

aeroleads-automation

Automate Aeroleads tasks via Rube MCP (Composio). Always search tools first for current schemas.

aero-workflow-automation

Automate Aero Workflow tasks via Rube MCP (Composio). Always search tools first for current schemas.

affinda-automation

Automate Affinda tasks via Rube MCP (Composio). Always search tools first for current schemas.

affinity-automation

Automate Affinity tasks via Rube MCP (Composio). Always search tools first for current schemas.

agencyzoom-automation

Automate Agencyzoom tasks via Rube MCP (Composio). Always search tools first for current schemas.

agent-mail-automation

Automate Agent Mail tasks via Rube MCP (Composio). Always search tools first for current schemas.

agentql-automation

Automate Agentql tasks via Rube MCP (Composio). Always search tools first for current schemas.

agenty-automation

Automate Agenty tasks via Rube MCP (Composio). Always search tools first for current schemas.

関連スキル