mcpField
H
healthcare-providers-extract

healthcare-providers-extract

github.com/nimblewayデータ・データベース6182 回インストール2 日前に更新
リポジトリ

healthcare-providers-extract について

NimbleのウェブデータAPIを使い、医療機関のウェブサイトから医療従事者のプロフィールを構造化して抽出するスキルです。URLからの抽出や、専門分野と地域による施設検索に対応し、出典と信頼度も記録します。

主な機能

  1. 01専門分野と地域から施設を検索
  2. 02施設サイト内のプロフィールページを特定
  3. 03従事者の主要5項目を抽出
  4. 04レコードの整理、重複排除、評価
  5. 05後の確認に向けて結果を保存

活用シーン

  1. 01施設URLから従事者リストを作成
  2. 02地域と専門分野を指定して施設を検索
  3. 03スタッフページから資格や連絡先を収集
  4. 04抽出した従事者データをエクスポート

MCP 対応

NimbleのウェブデータAPIを使用し、セッション開始時にCLIまたはMCPのトランスポートを選択できます。

インストール

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

$npx skills add https://github.com/nimbleway/agent-skills --skill healthcare-providers-extract

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
memory-and-distribution.md
nimble-playbook.md
profile-and-onboarding.md
provider-extraction-patterns.md
wsa-reference.md

詳細

医療提供者の抽出

Nimble のウェブデータ API を利用した、医療機関のウェブサイトからの医療従事者の構造化抽出です。

ユーザーのリクエスト:$ARGUMENTS

コマンドを実行する前に、Claude Code の制約について references/nimble-playbook.md を読んでください(シェル状態なし、&/wait の使用禁止、サブエージェントの権限、コミュニケーションスタイル)。


手順

ステップ 0:事前確認と WSA の検出

references/nimble-playbook.md のトランスポート選択と標準的な事前確認に従います。セッション開始時に CLI または MCP を選び、標準の事前確認呼び出し(日付計算、今日の日付、プロファイル、メモリインデックス)を並行して実行します。

同時に、WSA の検出とセットアップも行います。

  • mkdir -p ~/.nimble/memory/{reports,healthcare-providers-extract/checkpoints}
  • ls ~/.nimble/memory/healthcare-providers-extract/checkpoints/ 2>/dev/null
  • references/wsa-reference.md に従い、レイヤー 1(分野)とレイヤー 3(汎用ツール)の WSA 検出を実行します。レイヤー 2(セッション固有)は、ユーザーの専門分野がわかるステップ 1 の後に実行します。

検出したエージェントをフェーズに分類し、references/wsa-reference.md に従って nimble extract:templates get で検証します。

事前確認の結果に基づき、次のように対応します。

  • CLI がない、または API キーが設定されていない場合 → references/profile-and-onboarding.md に従い、停止します。
  • すべての nimble CLI 呼び出しにタグを付けます:nimble --client-source nimble-agent-skills <subcommand>。MCP リクエストはトランスポートレベルで識別されます。詳しくは references/nimble-playbook.md を参照してください。
  • プロファイルがある場合 → コンテキスト用に記録します。references/nimble-playbook.md のスマート日付範囲設定を使ってモードを判断します。
    • フルモード: 初回実行、または前回の実行から 14 日以上経過している場合
    • クイック更新: 前回の実行から 14 日未満の場合(新規または変更されたページのみを再抽出)
    • 同日再実行: last_runs.healthcare-providers-extract が今日の日付の場合、~/.nimble/memory/reports/healthcare-providers-extract-*[today].md に既存のレポートがあるか確認します。見つかった場合は、「今日はすでに実行しています。最新のデータを取得するため、もう一度実行しますか?」と尋ねます。
  • プロファイルがない場合 → 問題ありません。このスキルではオンボーディングは不要です。ステップ 1 に進みます。
ステップ 1:入力の解析と最初の質問

references/nimble-playbook.md の入力解析パターンを使って、$ARGUMENTS の入力タイプを解析します。主な振り分けは次のとおりです。

  • URL が検出された場合 → ステップ 3 に進みます。
  • 専門分野と場所(URL なし) → ステップ 2(医療機関の検索)に進みます。
  • 不明確な場合 → 質問します(最大 2 回の質問のうち 1 回としてカウント)。

入力が明確な場合は確認し、条件を絞り込む質問を 1 つ尋ねます(プレーンテキストで、AskUserQuestion は使いません)。

「N 件の医療機関サイトから医療提供者を抽出します。確認させてください。

  1. 医療分野は何ですか?(眼科、歯科、皮膚科、総合医療、その他)
  2. 簡易スキャン(名前と資格のみ)と完全抽出(5 項目すべて)のどちらにしますか?」

入力が曖昧な場合は AskUserQuestion を使います(最大 2 回の質問のうち 1 回としてカウント)。

どの医療機関サイトから医療提供者を抽出しますか?

  • URL を直接貼り付けてください(1 行に 1 件)
  • 医療機関の URL を含む CSV ファイルのパス、または Google Sheet の URL を指定してください
  • または、探している対象を説明してください(例:「テキサス州オースティンの眼科医」)。まず医療機関を探します。

ユーザーが最初のメッセージですでに回答している質問は省略します。

ステップ 2:発見の実行(任意)

ユーザーが URL ではなく、専門分野と場所を指定した場合にのみ実行します。

発見に至る 2 つの入力経路:

経路 A — 新規の発見。 ユーザーが専門分野と場所を指定しています。セッション固有のエージェントを見つけるため、Layer 2 WSA の発見を実行します。

nimble extract:templates list --limit 50  # filter items for "[specialty]"
nimble extract:templates list --limit 50  # filter items for "[directory-user-mentioned]"

発見戦略、エージェントの評価基準、ヘルスケア分野の発見における優先順位については、references/wsa-reference.md を参照してください。

発見フェーズのエージェントをすべて同時に実行します。最初に nimble extract:templates get を実行して、パラメーターを検証してください。

経路 B — Market-finder からの引き継ぎ。 ユーザーが最初に market-finder を実行し、その結果からプロバイダーを抽出する場合です。market-finder の出力を読み取ります。

cat ~/.nimble/memory/market-finder/{slug}/entities.json 2>/dev/null

診療所のレコードを抽出します。注:Google Maps の結果には place_url(Maps のリンク)が含まれますが、診療所の実際のウェブサイト URL は含まれていません。サイトマッピングの前に実際のウェブサイト URL を解決するため、ステップ 2b に進んでください。

どちらの経路の場合も: ドメインごとに重複を除外します。発見した診療所を提示します。

「[specialty] の [location] にある診療所が、[M] 個のデータソースから N 件見つかりました。これらのサイトからプロバイダーの抽出を進めます……」

フォールバック — 発見用 WSA が見つからない場合、または結果が少ない(3 件未満)場合:

nimble search --query "[specialty] in [location]" --max-results 20 --search-depth lite
ステップ 2b:診療所のウェブサイト URL を解決する

発見元(Google Maps、Yelp、BBB)から返されるのは、診療所のウェブサイト URL ではなく掲載ページの URL です。サイトマッピングの前に、各診療所の実際のウェブサイトを解決します。

  1. まず構造化データを確認 — Google Maps の結果には、構造化出力の website フィールドが含まれていることがよくあります。存在する場合はそれを使用します。
  2. 掲載ページから抽出 — website フィールドがない場合は、Maps の掲載ページを抽出して、診療所のウェブサイトへのリンクを見つけます。
    nimble extract --url "[maps-listing-url]" --format markdown
    
  3. 検索でフォールバック — 抽出に失敗した場合:
    nimble search --query "[practice-name] [city] official website" --max-results 3 --search-depth lite
    

ウェブサイト URL を解決できない診療所はスキップし、「データ品質の概要」出力セクションに記載してください。

ステップ 3:サイトマッピング

各診療所の URL について、references/nimble-playbook.md のサイトマッピングパターンに従います。このスキル固有の設定:

  • キーワードの重み付けテーブル: references/provider-extraction-patterns.md
  • ページ上限: サイトごとに 15 ページ
  • フォールバッククエリ: site:[domain] doctors OR providers OR team

診療所が 6 件以上の場合は、サブエージェントを使用します(下記のサブエージェント戦略を参照)。

チェックポイントを保存します:~/.nimble/memory/healthcare-providers-extract/checkpoints/{slug}/mapping.json

ステップ 4:ページの抽出

まず WSA のショートカットを確認: WSA による発見で、ヘルスケアのディレクトリからプロバイダーデータを抽出するエージェントが見つかった場合は、該当する診療所にそのエージェントを使用します。構造化された WSA 出力は、解析した Markdown よりも高品質です。

それ以外のすべての診療所については、references/nimble-playbook.md の再試行付きページ抽出パターンに従います。同じリファレンスのスケール実行パターンを使用して規模を拡張します。

チェックポイントを保存します:~/.nimble/memory/healthcare-providers-extract/checkpoints/{slug}/extraction.json

ステップ 5:構造化解析

抽出した Markdown を解析して、プロバイダーとそのフィールドを特定します。5 つのコアフィールド、資格情報の正規表現パターン、専門分野のキーワードについては、references/provider-extraction-patterns.md を参照してください。

抽出した各ページについて:

  1. プロバイダー名のパターンを確認します(Dr. の接頭辞、見出しのパターン、資格情報の接尾辞付近にある太字のテキスト)
  2. references/provider-extraction-patterns.md の正規表現パターンを使用して資格情報を照合します
  3. 検出されたヘルスケア分野のキーワードを使用して専門分野を照合します
  4. 連絡先情報を抽出します(電話番号の正規表現、予約 URL、メールアドレス)
  5. 学歴・研修に関する記述を抽出します

構造化レコードを作成:

{
  "name": "Dr. Jane Smith",
  "credentials": "MD, FACS",
  "specialty": "Retinal Surgery",
  "contact": {"phone": "(555) 123-4567", "scheduling_url": "..."},
  "education": "Fellowship: Bascom Palmer Eye Institute",
  "source_url": "https://practice.com/our-doctors",
  "practice_name": "Shore Center for Eye Care",
  "practice_url": "https://practice.com",
  "confidence": "High"
}
ステップ 6:重複排除と信頼度スコアリング

references/nimble-playbook.md のエンティティ重複排除およびエンティティ信頼度スコアリングのパターンに従います。このスキル固有の重複排除ルールと、5 フィールドの信頼度基準については、references/provider-extraction-patterns.md を参照してください。

ステップ 7:出力

結果を診療所ごとにまとめ、各診療所内では信頼度の高い順に並べて提示します。

# Provider Extraction: [N] Providers from [M] Practices
*[Date] | [H] High, [M] Medium, [L] Low confidence*

## TL;DR
Extracted [N] providers from [M] practice websites. [H] with complete profiles,
[L] with partial data. [Key finding: e.g., "12 of 15 providers are board-certified"].

## [Practice Name] ([domain])

| # | Name | Credentials | Specialty | Contact | Education | Confidence |
|---|------|------------|-----------|---------|-----------|------------|
| 1 | Dr. Jane Smith | MD, FACS | Retinal Surgery | (555) 123-4567 | Fellowship: Bascom Palmer | High |
| 2 | Dr. John Doe | OD | General Ophthalmology | [Book](url) | Residency: Wills Eye | Medium |

[Repeat per practice]

## Data Quality Summary
- **Complete profiles (High):** [N] providers
- **Partial profiles (Medium):** [N] providers — missing: [list common gaps]
- **Minimal profiles (Low):** [N] providers — missing: [list common gaps]

## Sources
[Clickable URL for every page extracted, grouped by practice]

ソースリンクは必須です。 すべてのプロバイダーレコードは、ソース URL までたどれる必要があります。

ステップ 8:メモリに保存

すべての Write 呼び出しを同時に実行します。

  • レポート -> ~/.nimble/memory/reports/healthcare-providers-extract-{slug}-{date}.md
  • プロバイダーデータ -> ~/.nimble/memory/healthcare-providers-extract/{slug}/providers.json
  • プロフィール -> ~/.nimble/business-profile.json の last_runs.healthcare-providers-extract を更新します(プロフィールが存在する場合のみ)
  • references/memory-and-distribution.md の wiki 更新パターンに従います。影響を受けるすべてのエンティティファイルについて index.md の行を更新し、この実行のエントリを log.md に追記します。
  • チェックポイントをクリーンアップします(実行完了)または保持します(実行一部完了)
ステップ 9:共有と配布

必ず配布を提案してください。省略しないでください。 コネクターの検出と共有フローについては references/memory-and-distribution.md に従います。

Notion:プロバイダーの表全体を日付付きのサブページとして作成します。 Slack:プロバイダー数と信頼度の内訳のみを含む TL;DR を投稿します。

ステップ 10:フォローアップ
  • 「Dr. Xについて詳しく教えて」 -> 抽出したプロフィール全体を表示します
  • 「CSVとしてエクスポート」 -> providers.json から CSV を生成します
  • 「さらにサイトを実行」 -> 新しい診療所の URL を追加し、抽出して統合します
  • 「何が不足していますか?」 -> プロバイダーごとのデータ不足を詳しく説明します

見つかった WSA による情報拡充: ステップ 0 で情報拡充フェーズのエージェント (レビュー、規制、診療所の詳細)が見つかった場合は、すぐにフォローアップとして提案します。

「このデータを充実させられる WSA が [N] 件見つかりました:[簡単な一覧]。これらのプロバイダー/診療所について、評判の確認や規制情報の検索を実行しますか?」

情報拡充フェーズのマッピングとフォールバックチェーンについては、 references/wsa-reference.md を参照してください。

関連スキルの提案:

次のステップ:

  • healthcare-providers-enrich を実行してデータ不足を補います(NPI の検索、専門医資格の確認、追加の連絡先情報)
  • healthcare-providers-verify を実行して資格とライセンスの状態を検証します
  • market-finder を実行して、この地域の診療所の URL をさらに見つけます

サブエージェント戦略

6 件以上の診療所を一括抽出する場合は、nimble-researcher エージェント (agents/nimble-researcher.md)を使って、サイトのマッピングと抽出を並列化します。

references/nimble-playbook.md のサブエージェント起動ルールに従います (bypassPermissions、バッチの最大数は 4、Bash の明示的な指示、失敗時のフォールバック)。

起動パターン: 診療所ごとにエージェントを 1 つ(または、大規模なジョブでは診療所 3 件ごとに 1 つ)起動します。各エージェントは、割り当てられた診療所についてステップ 3~5 を実行し、構造化されたプロバイダーレコードを返します。

単一診療所の最適化: 診療所が 1~2 件だけの場合は、エージェントを起動せず、メインコンテキストから直接実行します。

フォールバック: エージェントが失敗した場合は、その抽出をメインコンテキストから直接実行します。出力に欠落を残さないでください。


エラー処理

標準エラー表(API キーの欠落、429、401、結果なし、抽出結果の不備)については references/nimble-playbook.md を参照してください。スキル固有のエラー:

  • プロバイダーのページが見つからない場合: 「[domain] にプロバイダー/チームのページが見つかりませんでした。このサイトではスタッフを別の方法で掲載している可能性があります。ホームページからの抽出を試すか、医療ディレクトリーでこの診療所を検索しますか?」
  • すべての抽出結果に不備がある場合: 「診療所のサイトは JavaScript によるレンダリングが多用されているようです。ブラウザーでのレンダリングを使って再試行します……」(共通パターンに従い、--render を付けて自動再試行します)
  • 診療所名が曖昧な場合: URL で失敗し、ユーザーが代わりに名前を指定した場合は、診療所を検索します:nimble search --query "[practice name] [location] doctors" --max-results 5 --search-depth lite
  • CSV/シートの解析エラー: 「入力ファイルを解析できませんでした。診療所の URL を含む列が必要です。代わりに URL を直接貼り付けてもらえますか?」

コメント