n8n、Bright Data、OpenAI、SMTPによるLinkedInスクレイピング

n8n、Bright Data、OpenAIを使用して、LinkedInをスクレイピングし、AIでプロフィールを抽出し、結果を受信トレイに直接送信するコード不要のワークフローを構築します。
2 分読
LinkedIn Scraping With n8n, Bright Data, OpenAI and SMTP blog image

このガイドで、あなたは発見するだろう:

  • n8n、Bright Data、OpenAIを使ってLinkedInのスクレイピングを自動化する方法
  • 候補者のプロフィールを受信トレイに直接送信する、コード不要のワークフローを構築する方法
  • Web Unlocker、ChatGPT、SMTPを組み合わせることで、強力なリクルーティング・ツールが生まれる理由

始めよう!

はじめに

このワークフローはn8nでご覧いただけます。しかし、最も簡単なセットアップのために、最初にやらなければならないことがいくつかある。

セルフ・ホスティング n8n

このワークフローはn8nのCommunity Nodesに依存しています。Community Nodesはn8nコミュニティの良きサマリア人によって提供されるサードパーティツールです。これらの可動部分をすべてDockerコンテナにラップして管理するのがベストな方法です。

Dockerのインストール

Windows上でネイティブのUbuntuまたはWSL経由のUbuntuを使用して、以下のコマンドを実行してDockerをインストールする。他のプラットフォームへのDockerのインストールについては、こちらをご覧ください。

sudo snap install docker

Dockerをインストールしたら、ストレージ・ボリュームを作成し、コンテナを実行する。

n8nコンテナの作成

sudo docker volume create n8n_data
sudo docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

コミュニティ・ノードの設置

ブラウザでhttp://localhost:5678/ を開いてください。完全にセルフホストされたn8nウェブアプリがローカルで動作するようになります。

サイドバーで、プロフィールの横にある3つの点をクリックし、「設定」を選択します。

設定を開く

設定メニューが表示されたら、”Community Nodes “を選択する。これで、先ほど紹介したサードパーティ製ツールにアクセスできるようになる。

インストール」をクリックすると、インストールしたいノードのポップアップが表示されます。npmパッケージセクションに、以下のパッケージを貼り付ける。

n8n-nodes-brightdata

準備ができたら「インストール」をクリックする。

Bright Data コミュニティノードのインストール

次に、このプロセスをドキュメント・ジェネレーターでも繰り返します。

n8n-nodes-document-generator
Document Generator コミュニティ・ノードのインストール

コンテナの再起動

コミュニティノードをインストールしたら、ctrl+cでコンテナを強制終了します。以下のコマンドを実行してn8nを再起動します。

sudo docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

ワークフローのインポート

セットアップが終わったら、いよいよ先ほどのワークフローをインポートする準備だ。n8nのページに行き、”Use for free “ボタンをクリックする。

LinkedInプロフィール Findrホームページ

いくつかの異なるオプションのポップアップが表示されるはずです。最も簡単な方法は、”Import template to localhost:5678 self-hosted instance “を選択することです。

n8nからのインポートオプション

資格情報の入力またはインポート

ここで、Bright Data、OpenAI、SMTPの認証情報を入力するよう自動的に促されます。

資格情報を入力

APIキーの取得

ブライトデータ

このワークフローでは、Web Unlockerを使って検索を行います。Web Unlockerにサインアップした後、Web Unlocker Dashboardに移動し、APIキーを取得します。n8nはこのキーを使ってBright Dataで結果をスクレイピングします。

ウェブアンロッカーのダッシュボード

オープンAI

OpenAIのDeveloper Platformにアクセスして、アカウントを作成してください。そして、”API keys “をクリックしてキーを生成する。

OpenAI APIキーの取得

SMTP

このプロセスは、どのSMTPクライアントにも対応しています。現在、私はElastic Emailを使っている。無料プランはこのようなローカルプロジェクトに最適です。ユーザー名、パスワード、サーバー、ポートを保存します。これらをn8nで使ってメールプロセスを自動化します。

SMTP認証情報

ワークフローのステップ

LinkedInプロフィール検索ワークフロー

ユーザーがフォームに入力した場合

ユーザがウェブフォームを完了すると、ワークフローが開始されます。自由にこのノードを開いて、パラメータや設定を見てください。しかし、このステップのすべてはあらかじめ設定されているはずなので、編集する必要はありません。

ユーザーフォームの設定

LinkedInのURLと企業検索の作成

フォームが完了すると、2つの別々のワークフローが起動する。

そのうちの1人が、この人物のLinkedInプロフィールを検索するためのGoogle URLを作成する。

LinkedInプロフィール検索

もうひとつは、自社のLinkedInを検索するためにGoogleのURLを別に作っている。

これらのURLはどちらも、ブロックされないようにWeb Unlockerに渡される。

URLを作成してWeb Unlockerに渡す

結果からHTMLを抽出する

次に、結果からHTMLを抽出します。”Extract Body and Title from Website “という2つのノードがあります。どちらもBright DataのJSONレスポンスからタイトルと 本文を取り出します。

HTMLコンテンツを抽出する

ワークフローでは、これらの強調表示されたステップの両方が同時に起こっている。

ワークフローのステップHTML抽出

ChatGPTによる結果の解析

各検索からタイトルと 本文を引き出したので、処理のためにHTMLの結果をChatGPTに渡します。これらの各ノードには以下のような処理が含まれています。モデル(GPT-4o mini)を定義し、データを抽出するプロンプトを与えます。

ChatGPTのパラメータと設定を使って解析する

下記をご覧いただければわかるように、これは両方のプロセスで同時に起こっている。

ChatGPTでGoogleの結果を解析する

解析された結果を取り出し、分割して企業検索を終了する。

このステップで、別々のワークフローの1つが “Split Out “で終了する。Company “ワークフローが終了すると、”Person “ワークフローから解析結果が抽出されます。

以下は抽出の手順である。ご覧のとおり、基本的には、大きなJSON本体から小さな断片を抜き出しているだけです。

抽出プロセス

会社 “ワークフローは終了し、”人 “ワークフローはあと数ステップで完了します。Company “ワークフローは、これらのプロセスがマージされるまで一時停止しています!

解析結果の分割と抽出

プロファイルを1つに限定し、その存在を検証する

当社の “Person “ワークフローは、一致するプロファイルのみを使用するように結果をフィルタリングします。次に、プロファイルを1つに限定し、そのプロファイルが存在することを確認します。存在しない場合は、フォームを更新し、プロファイルが見つからなかったことをユーザーに伝えることで対処します。

エラー処理メッセージ

プロファイルが存在する限り、単一の一貫したワークフローにマージする準備が整った。

一人だけを引き出し、そのプロフィールが存在することを確認する

ワークフローのマージ

下記のように、両方のワークフローからのデータが入力として使用されます。これらは1つの出力にマージされ、最後にChatGPTに渡されます。

入力をマージする

すべてがようやくまとまった。ワークフローが1つにまとまったら、最後のステップを実行しよう。

2つのワークフローの統合

アウトリーチとフォローアップのステップを作る

さて、この単一の出力をChatGPTに戻してメールを完成させます。カスタムHTMLも書いてくれるので、マークアップコードを気にする必要もありません。

ChatGPTに入力を渡す

HTMLが戻ってきたら、結果をメールで送る準備ができた。

ChatGPTがメールを書く

メールの送信

Send Email “ノードを開き、認証情報と接続の詳細が正しいことを確認する。ご覧のように、メールを作成するためにjson.message.content.contentを渡しています。これは文字通りChatGPTからHTMLを取得し、メール本文に直接貼り付けます。

SMTP接続とクレド

From Email “を使用しているSMTPメールに変更します。To Email “にメールが送信されます。これを個人のメールに変更すると、個人の受信トレイで結果を受け取ることができます。

電子メールワークフローノードの送信

完了を示すフォームの更新

最後に、操作が成功したことをユーザーに伝えるためにフォームを更新します。フォームメール送信” を開くと、フォーム更新のためのさまざまなパラメータが表示されます。ご覧のように、”ありがとうございました!”という “完了タイル “と、”メールを送信しました “というメッセージを表示しています。

ユーザーフォームの送信

これでワークフローの最終ステップが終了しました!ワークフローのテスト」ボタンをクリックして、ワークフロー全体がどのように実行されるかを確認してください。

フォーム送信メール

結果

ワークフローを実行する場合、まず検索フォームの入力を求めるポップアップが表示されます。フォームに記入し、「リファレンスを取得」をクリックします。

ユーザーフォーム

処理が完了すると、フォームは以下のようになります。ご覧の通り、”Thank you!”と表示され、完了メッセージが表示されています。

受信トレイを開くと、候補者のウェブサイトやLinkedInプロフィールへのリンクが付いた、候補者の詳細な概要が記載された新しいメールが届きます。その下には、ChatGPTからのアウトリーチとフォローアップの推奨が表示されます。

アウトリーチとフォローアップ

結論

n8n、Bright Data、OpenAI、SMTPを使えば、複雑なコードを書くことなく、完全に自動化されたLinkedInスクレイピングとアウトリーチワークフローを構築できます。この強力なセットアップにより、採用プロセスが合理化され、充実した候補者プロフィールとパーソナライズされたアウトリーチが受信トレイに直接届きます。

採用パイプラインを拡大するにしても、リードジェネレーションを強化するにしても、このワークフローは始まりに過ぎません。ブライトデータでは、自動化を次のレベルに引き上げるためのツール一式を提供しています:

  • Web Unlocker: CAPTCHA、ブロック、ボット検知を回避し、LinkedInやその他のサイトを確実にスクレイピング。
  • レジデンシャル・プロキシ:世界中のリアルユーザーIPにアクセスし、高い成功率とジオターゲティングを実現します。
  • スクレイピング・ブラウザ:JavaScriptを多用するページに最適な、プロキシをサポートしたヘッドレスブラウザ。
  • スクレイパーAPI:あらかじめ用意されたスクレイピング・テンプレートを使って、構造化されたデータを簡単に抽出できます。
  • データセット:求人情報、企業データなど、すぐに使えるデータセットを活用して、アウトリーチを充実させましょう。

無料トライアルに登録して、今すぐスマートな自動化を始めましょう!

クレジットカードは必要ありません

あなたは下記にもご興味がおありかもしれません

web scraping with claude blog image
ウェブデータ

2025年のクロードによるウェブスクレイピング

Pythonを使ってWebスクレイピングを自動化し、構造化データを楽に抽出するClaude AIの使い方を学ぶ。
18 分読
Building AI-Ready Vector Datasets for LLMs blog image
AI

LLMのためのAI対応ベクトルデータセット構築:Bright Data、Google Gemini、Pineconeを使ったガイド

大規模言語モデル(LLM)は、私たちが情報にアクセスし、インテリジェントなアプリケーションを構築する方法を変革しています。LLMの可能性を最大限に引き出すには、特にドメイン固有の知識や独自のデータを使用する場合、高品質で構造化されたベクトルデータセットを作成することが重要です。LLMの性能と精度は、入力データの品質に直接結びついています。準備不足のデータセットは劣悪な結果をもたらす可能性があり、一方、十分にキュレーションされたデータセットはLLMを真のドメイン・エキスパートに変えることができます。 このガイドでは、AIに対応したベクターデータセットを生成するための自動パイプラインの構築方法を順を追って説明する。 課題:LLMのためのデータ収集と準備 LLMは膨大な汎用テキストコーパスで学習されますが、商品関連のクエリへの回答、業界ニュースの分析、顧客フィードバックの解釈など、特定のタスクやドメインに適用すると、不足することがよくあります。LLMを真に役立てるには、ユースケースに合わせた高品質のデータが必要です。 このデータは通常、ウェブ上に分散していたり、複雑なサイト構造の背後に隠されていたり、ボット対策によって保護されていたりする。 当社の自動ワークフローは、データセット作成の最も困難な部分を処理する合理化されたパイプラインでこれを解決します: コア技術の概要 パイプラインを構築する前に、関連するコアテクノロジーと、それぞれがワークフローをどのようにサポートしているかを簡単に見ておこう。 ブライトデータスケーラブルなウェブデータ収集 AIに対応したベクターデータセットを作成するための最初のステップは、関連性のある高品質なソースデータを収集することです。ナレッジベースやドキュメンテーションのような内部システムから得られるものもあるが、大部分は公共のウェブから得られることが多い。 しかし、最近のウェブサイトは、CAPTCHA、IPレート制限、ブラウザフィンガープリントなどの高度なボット対策メカニズムを使用しているため、大規模なスクレイピングは困難である。 Bright Dataは、データ収集の複雑さを抽象化するWeb Unlocker APIでこの課題を解決します。プロキシのローテーション、CAPTCHAの解決、ブラウザのエミュレーションを自動的に処理するため、データへのアクセス方法ではなく、データに集中することができます。 Google Gemini: インテリジェント・コンテンツ・トランスフォーメーション Geminiは、Googleによって開発された強力なマルチモーダルAIモデルのファミリーであり、様々なタイプのコンテンツを理解し処理することに優れている。私たちのデータ抽出パイプラインにおいて、Geminiは3つの重要な機能を果たします: このAIを活用したアプローチは、特に以下のような使用例において、脆弱なCSSセレクタや壊れやすい正規表現に依存する従来の方法よりも大きな利点をもたらす: AIがデータ抽出プロセスにどのような変化をもたらしているかについては、Using AI for Web Scrapingをご覧ください。スクレイピングのワークフローにGeminiを実装するための実践的なチュートリアルをお探しの場合は、包括的なガイドをご覧ください:GeminiによるWebスクレイピングをご覧ください。 文の変形意味埋め込み文の生成 エンベッディングは、高次元空間におけるテキスト(または他のデータタイプ)の密なベクトル表現である。これらのベクトルは意味的な意味を捉え、コサイン類似度やユークリッド距離のようなメトリクスを用いて測定される、類似したテキスト片を近接したベクトルで表現することを可能にする。この特性は、セマンティック検索、クラスタリング、検索拡張生成(RAG)のようなアプリケーションで重要である。 Sentence Transformersライブラリは、高品質の文や段落の埋め込みを生成するための使いやすいインターフェースを提供する。Hugging Face Transformersの上に構築され、意味タスクのために微調整された幅広い事前学習済みモデルをサポートしています。 このエコシステムで最も人気があり、効果的なモデルの1つがオールMiniLM-L6-v2である: より大きなモデルはより微妙なエンベディングを提供するかもしれないが、all-MiniLM-L6-v2は性能、効率、コストの間で非常に優れたバランスを提供する。その384次元ベクトルは ほとんどの実用的なユースケース、特に初期段階の開発やリソースに制約のある環境では、このモデルで十分すぎる。エッジケースにおける精度のわずかな低下は、通常、スピードとスケーラビリティの大幅な向上によって相殺されます。そのため、AIアプリケーションの最初のイテレーションを構築する場合や、控えめなインフラストラクチャでパフォーマンスを最適化する場合は、all-MiniLM-L6-v2を使用することをお勧めします。 Pineconeベクトル埋め込み画像の保存と検索 テキストがベクトル埋め込みデータに変換されると、それを効率的に保存、管理、照会するための専用のデータベースが必要になります。従来のデータベースはこのために設計されていません。ベクトル・データベースは、埋め込みデータの高次元の性質を扱うために特別に設計されており、RAGパイプライン、セマンティック検索、パーソナライゼーション、その他のAI駆動型アプリケーションに不可欠なリアルタイムの類似性検索を可能にします。 Pineconeは、開発者フレンドリーなインターフェイス、低レイテンシの検索パフォーマンス、完全に管理されたインフラストラクチャで知られる人気のベクトルデータベースです。ベクトル検索インフラストラクチャの複雑さを抽象化することで、複雑なベクトルインデックスと検索を効率的に管理します。主なコンポーネントは以下の通りです: Pineconeは2つのデプロイメントアーキテクチャを提供する:ServerlessとPod-Based です。ほとんどのユースケース、特に開始時や動的な負荷に対処する場合は、シンプルさとコスト効率からサーバーレスが推奨されます。 セットアップと前提条件 パイプラインを構築する前に、以下のコンポーネントが適切に設定されていることを確認する。 前提条件 各APIキーの生成方法については、以下のツール固有の設定セクションを参照してください。 必要なライブラリのインストール このプロジェクトのコアとなるPythonライブラリをインストールする: これらのライブラリーは提供している: 環境変数の設定 プロジェクトのルート・ディレクトリに.envファイルを作成し、APIキーを追加する: ブライトデータ設定 Bright DataのWeb Unlockerを使用するには: 実装例と統合コードについては、Web Unlocker GitHub […]
6 分読
AI

LLMにおけるスーパーバイズド・ファインチューニングとは?

このPythonガイドでは、概念、ツール、ワークフロー、そしてAIプロジェクトを向上させる実践的な例を取り上げています。
7 分読