mcpField
L
linkedin-scraper

linkedin-scraper

github.com/aspenasマーケティング・グロース113 回インストール
リポジトリ

linkedin-scraper について

認証済み Chrome セッションを使い、LinkedIn のプロフィール、検索結果、企業ページを取得するスキルです。連絡先や企業情報を構造化する作業向けに、レート制限や結果処理の指針も含みます。

主な機能

  1. 01プロフィールと検索結果の取得
  2. 02企業ページと従業員リストの抽出
  3. 03構造化 JSON の出力
  4. 04DuckDB への任意保存
  5. 05レート制限とエラー処理の指針

活用シーン

  1. 01LinkedIn 検索から候補連絡先を整理
  2. 02プロフィールの職歴や学歴を収集
  3. 03企業情報と従業員リストを取得

インストール

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

$npx skills add https://github.com/aspenas/ironclaw-skills --skill linkedin-scraper

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

詳細

LinkedIn スクレイパー — Chrome プロファイルによるウェブスクレイピング

ユーザーが認証済みの Chrome ブラウザーセッションを使って、LinkedIn のプロフィールと検索結果をスクレイピングします。API キーは不要です。Chrome プロファイルリレーを使うブラウザーツールを使用します。

前提条件

  • LinkedIn にログイン済みの Chrome ブラウザー
  • ブラウザーリレーに接続済み(Chrome 拡張機能または openclaw ブラウザープロファイル)
  • 結果の保存用 DuckDB ワークスペース(任意)

基本的なワークフロー

1. 単一プロフィールのスクレイピング
browser → open LinkedIn profile URL
browser → snapshot (extract structured data)
→ Parse: name, headline, title, company, location, education, experience, connections, about
→ Return structured JSON or insert into DuckDB
2. 検索と一括スクレイピング
browser → open LinkedIn search URL with filters
browser → snapshot (extract result cards)
→ Parse each result: name, title, company, profile URL
→ For each profile URL: open → snapshot → parse full profile
→ Batch insert into DuckDB
3. 企業ページのスクレイピング
browser → open LinkedIn company page
→ Parse: company name, industry, size, description, specialties, employee count
→ Navigate to /people tab for employee list

実装ルール

レート制限(重要)
  • ページの読み込み間に最低 3~5 秒の遅延を設けてください
  • 1 セッションあたり最大 80 件のプロフィール(LinkedIn のレート制限)
  • 検出を避けるため、3~8 秒の間で遅延をランダム化してください
  • 20 件のプロフィールごとに、60 秒間休止してください
  • CAPTCHA または「不審なアクティビティ」が検出された場合は、ただちに停止してユーザーに通知してください
ステルスパターン
  • 自然なスクロールを行ってください(ゆっくり下にスクロールし、いったん止めてから、さらにスクロールします)
  • 同じ検索結果ページを 2 回を超えてスクレイピングしないでください
  • プロフィールを訪問する順番を変えてください(順番どおりに訪問しないでください)
  • 定期的にタブを閉じて、再度開いてください
データ抽出 — プロフィールページ

LinkedIn のプロフィールのスナップショットから、次のフィールドを抽出します。

フィールド場所備考
nameメインの見出し h1氏名
headline名前の下通常は役職+企業名
location場所のセクション市区町村、州/国
current_title職歴セクションの最初の項目最新の役職
current_company職歴セクションの最初の項目企業名
education学歴セクション学校、学位、在籍期間
connectionsつながりの数数値または「500+」
about概要セクション自己紹介文(「さらに表示」のクリックが必要な場合があります)
experience職歴セクションすべての職歴と在籍期間
profile_urlブラウザーの URL バー正規の LinkedIn URL
データ抽出 — 検索結果

LinkedIn の検索結果ページから、次の項目を抽出します。

フィールド場所
name検索結果カードの見出し
headlineカード内の名前の下
locationカードのメタデータ
profile_url名前に設定されたリンクの href
mutual_connectionsカードのフッター

検索 URL のパターン

# People search
https://www.linkedin.com/search/results/people/?keywords={query}

# With filters
&geoUrn=%5B%22103644278%22%5D          # United States
&network=%5B%22F%22%2C%22S%22%5D        # 1st + 2nd connections
&currentCompany=%5B%22{company_id}%22%5D # Current company
&schoolFilter=%5B%22{school_id}%22%5D    # School filter

# YC founders (common query)
https://www.linkedin.com/search/results/people/?keywords=Y%20Combinator%20founder

# Company employees
https://www.linkedin.com/company/{slug}/people/

DuckDB との連携

DuckDB に保存する場合は、Ironclaw ワークスペースのデータベースを使用してください。

-- Check if leads/contacts object exists
SELECT * FROM objects WHERE name = 'leads' OR name = 'contacts';

-- Insert via the EAV pattern or direct pivot view
INSERT INTO v_leads ("Name", "Title", "Company", "LinkedIn URL", "Location", "Source")
VALUES (?, ?, ?, ?, ?, 'LinkedIn Scrape');

適切なオブジェクトが存在しない場合は、作成してください。

-- Use Ironclaw's object creation pattern from the dench skill

エラー処理

エラー対応
「サインイン」ページLinkedIn のセッションが期限切れです。Chrome で再ログインするようユーザーに通知してください
CAPTCHA/セキュリティチェックただちに停止し、30 分以上待ってからユーザーに通知してください
「プロフィールが見つかりません」スキップし、URL を無効として記録してください
レート制限(429)停止し、15 分待ってから、さらに長い遅延を設定して再試行してください
空のスナップショットページの読み込み中です。3 秒待ってから、再度スナップショットを取得してください

出力形式

JSON(デフォルト)
{
  "name": "Jane Doe",
  "headline": "CEO at Acme Corp",
  "current_title": "CEO",
  "current_company": "Acme Corp",
  "location": "San Francisco, CA",
  "linkedin_url": "https://www.linkedin.com/in/janedoe",
  "connections": "500+",
  "education": [{"school": "Stanford", "degree": "BS CS", "years": "2010-2014"}],
  "experience": [{"title": "CEO", "company": "Acme Corp", "duration": "2020-Present"}],
  "scraped_at": "2026-02-17T14:30:00Z"
}
進捗レポート

一括スクレイピングでは、進捗を報告してください。

Scraping: 15/50 profiles (30%) — Last: Jane Doe (Acme Corp)
Rate: ~4 profiles/min — ETA: 9 min remaining

安全性

  • 非公開または閲覧制限付きのプロフィールはスクレイピングしないでください
  • 公開ページについては LinkedIn の robots.txt を遵守してください
  • データはローカル(DuckDB)のみに保存し、外部へ持ち出さないでください
  • ユーザーは LinkedIn に正当なアクセス権を持っている必要があります
  • このツールは、ユーザー自身による大規模な手動ブラウジングを支援します

コメント