mcpField
E
extract-axure-data

extract-axure-data

github.com/lintendoデザイン・UI137194 回インストール3 日前に更新
リポジトリ

extract-axure-data について

ページの再構築、コンテンツ分析、デザインレビュー向けに、Axureプロトタイプから構造化データを抽出するツールです。静的なページデータを直接解析し、Playwrightでスクリーンショットやデザイントークンも取得します。

主な機能

  1. 01ページ階層とサイトマップの抽出
  2. 02スクリーンショットとデザイントークンの出力
  3. 03操作、注釈、ページテキストの収集
  4. 04指定ページに絞ったエクスポート
  5. 05認証済みChromeセッションの再利用

活用シーン

  1. 01プロトタイプをWebページとして再構築
  2. 02プロトタイプの構造と内容を確認
  3. 03デザイントークンと操作を分析
  4. 04動的パネルの状態を追加取得

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/lintendo/axhub-skills --skill extract-axure-data

インストール後、Claude Code で/extract-axure-dataを入力して読み込まれたか確認します。

同梱ファイルscripts/extract.mjsscripts/routing.mjs

詳細

Axure データの抽出

Axure プロトタイプから構造化データを抽出し、ページの再構築、コンテンツ分析、デザインレビューに活用できます。このスクリプトは依存関係を自動でインストールするため、URLを指定するだけで実行できます。

こんなときに使用します

  • ユーザーが Axure プロトタイプの URL を共有し、抽出または再構築を希望している場合
  • ワイヤーフレームやプロトタイプの複製、再構築、分析を依頼された場合
  • AxShare、Axure Cloud、または start.html#p= や start.html?id=...&p=... を含むプロトタイプ URL について言及された場合
  • プロトタイプからデザイントークン、スクリーンショット、インタラクションデータを取得したい場合

仕組み

Axure はページデータを静的 JS ファイル(data/document.js、files/{page}/data.js)に保存します。このスクリプトはブラウザーを使わずに Node.js でこれらを直接解析するため、高速で、サイトマップ、インタラクション、注釈の取得に対応しています。スクリーンショットとデザイントークンの取得にはレンダリングが必要なため、Playwright が Chromium のインスタンスを起動します。start.html?id=...&p=... を経由する Axure プレビュー URL の場合、スクリプトはまずレンダリングされたフレームの URL を解決し、ページデータ、スクリーンショット、テキストを正しいページリソースディレクトリから抽出します。

クイックスタート

このスキルディレクトリを基準に、scripts/extract.mjs の抽出スクリプトを実行します。

# Basic extraction — screenshot + design tokens (default)
node scripts/extract.mjs <AXURE_URL> --all

# Full extraction — add interactions, annotations, page text
node scripts/extract.mjs <AXURE_URL> --all --advanced

# Specific pages only
node scripts/extract.mjs <AXURE_URL> --pages login,dashboard

初回実行時に、Playwright と Chromium が ~/.cache/axure-extractor/ に自動インストールされます。所要時間は1~2分で、インストールは一度だけです。

パラメーター

フラグ説明デフォルト
<url>Axure プロトタイプの URL(必須)—
--allすべてのページを処理最初のページのみ
--advancedインタラクション、注釈、ページテキストを追加オフ
-o DIR出力ディレクトリ./axure-export
--pages P1,P2名前を指定したページのみ処理—
--no-screenshotスクリーンショットをスキップスクリーンショットを取得
--no-headlessブラウザーウィンドウを表示ヘッドレス
--connect-cdp URL起動中の Chrome に接続(認証用)—
--verbose詳細なログを表示オフ

出力構成

axure-export/
├── sitemap.json           # Page tree and hierarchy (always produced)
└── pages/{pageName}/
    ├── screenshot.png      # Page screenshot
    ├── theme.json          # Design tokens (colors, fonts, spacing, radii)
    ├── data.json           # Page metadata and diagram        (--advanced)
    ├── notes.json          # Component annotations            (--advanced)
    ├── interactions.json   # Event map (clicks, navigations)  (--advanced)
    └── content.md          # Rendered page text as Markdown   (--advanced)

おすすめのワークフロー:ページの再構築

Axure プロトタイプを実際の Web ページとして再構築する場合は、2段階で進めます。スクリーンショットとテーマトークンがあれば、視覚的な忠実度の約80%を実現でき、追加データは細部の調整にのみ役立つため、最初からすべてを抽出すると、基本的な仕上がりが十分な場合に時間を浪費することになります。

ステップ1 — 基本的な抽出:

node scripts/extract.mjs <URL> --pages <target>

視覚的な参照として screenshot.png を、正確な色、フォント、間隔の参照として theme.json を使用します。ページを作成します。

ステップ2 — 必要に応じて調整:

node scripts/extract.mjs <URL> --pages <target> --advanced

インタラクションが不足している場合や注釈に誤りがある場合は、追加ファイル(interactions.json、notes.json、content.md)に詳細が含まれているため、修正に役立ちます。

認証が必要なプロトタイプ

一部の Axure プロトタイプではログインが必要です(AxShare、企業の SSO)。方法は2つあります。

既存の Chrome セッションに接続する(推奨 — Cookie を再利用します):

macOS:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222

Windows:

start chrome --remote-debugging-port=9222

その Chrome ウィンドウからログインして、次を実行します:

node scripts/extract.mjs <URL> --all --connect-cdp http://localhost:9222

ブラウザーウィンドウを表示する(抽出中に手動でログイン):

node scripts/extract.mjs <URL> --all --no-headless

依存関係のインストール

スクリプトは初回実行時に自動でインストールします。失敗した場合:

# Manual install
cd ~/.cache/axure-extractor   # macOS/Linux
# or: cd %USERPROFILE%\.cache\axure-extractor   (Windows)

npm install playwright
npx playwright install chromium

# If Chromium download is slow (e.g. behind GFW):
PLAYWRIGHT_DOWNLOAD_HOST=https://npmmirror.com/mirrors/playwright npx playwright install chromium

Playwright をまったくインストールできない場合、スクリプトは機能を制限して処理を続行します。サイトマップ、ページデータ、注釈、インタラクション(ブラウザーを必要としないもの)は引き続き抽出しますが、スクリーンショットとテーマトークンの取得はスキップします。

出力データ形式

theme.json

計算済みスタイルから抽出したデザインシステムのトークン:

{
  "colors": {
    "background": [{"value": "rgb(255,255,255)", "count": 42, "tags": ["div"]}],
    "text": [{"value": "rgb(51,51,51)", "count": 28, "tags": ["p","span"]}],
    "border": [{"value": "rgb(221,221,221)", "count": 12}]
  },
  "typography": {
    "families": [{"value": "\"PingFang SC\", sans-serif", "count": 56}],
    "textStyles": [{"size": "14px", "lineHeight": "22px", "weight": "400", "count": 20}]
  },
  "spacing": [{"value": "16px", "count": 15}],
  "radius": [{"value": "4px", "count": 8}]
}
notes.json

Axure で作成されたコンポーネントの注釈:

{
  "page": {"description": "User login page"},
  "id-username-input": {"description": "Username field", "placeholder": "Enter username"},
  "id-submit-btn": {"description": "Login button", "action": "Submit form"}
}
interactions.json

Axure のインタラクションデザイナーで定義されたイベントのマッピング:

{
  "onClick": {"targetPage": "dashboard", "action": "navigate"}
}

Playwright で不足分を補う

エクスポートデータは静的 JS の解析とスナップショットの取得に基づいているため、一部の動的コンテンツ(インタラクションの状態、条件付きパネル、動的パネルの切り替えなど)が不完全な場合があります。Playwright CLI を使用してプロトタイプページに戻り、追加のデータを取得できます。

# 打开 Axure 原型
playwright-cli open <AXURE_URL>
playwright-cli snapshot

# 点击交互元素查看动态面板切换
playwright-cli click e12
playwright-cli screenshot --filename=panel-state-2.png

# 获取元素的精确样式
playwright-cli eval "el => getComputedStyle(el).cssText" e5

playwright-cli close

コマンドの完全なリファレンス:Playwright CLI 公式スキルドキュメント

典型的な補完シナリオ
シナリオPlaywright の動作
動的なパネルの状態クリックして切り替えを実行した後、スクリーンショットを撮影します
条件による表示/非表示条件を満たした後、DOM を取得します
インタラクションアニメーションインタラクションの過程を録画します
ログインが必要なプロトタイプログイン済みの Chrome セッションを再利用します
Axure のマスターコンテンツページに移動した後、コンテンツ全体を取得します

トラブルシューティング

問題対処方法
HTTP 404: .../data/document.jsURL が Axure プロトタイプではないか、ベース URL が正しくありません
サイトマップの抽出に失敗しましたURL にアクセスできることを確認します:curl -I <url>
スクリーンショットが真っ白ですページの描画に時間がかかっています。--no-headless を試して状態を確認してください
ログインが必要です--connect-cdp を使用してください(前述の「認証が必要なプロトタイプ」を参照)
Playwright のインストールに失敗します手動でインストールするか、ミラーを使用するために PLAYWRIGHT_DOWNLOAD_HOST を設定してください

コメント