

# クリエイター一覧からInstagramプロフィールの重複を取り除く方法

クリエイターのレコードを安定したchannelIdの値でグループ化し、プロフィールの重複を整理します。Actorは、収集元の行データを取得する、ホスティングされたデータ収集プログラムです。Taskは、検索設定を保存する入力プリセットです。ビルド0.1.26では、既知の公開プロフィール、@付きハンドル、または@なしのハンドルを1〜1,000件、startUrlsに指定できます。プリセットにある2件のサンプル入力を、対象の1件のプロフィールに置き換えます。完全に同じ入力は、Actorが自動で1件にまとめます。1行は、取得を試みた1件の入力に対応し、取得できなかった行も含みます。標準フィールドには、input、channelId、eimuId、fbid、channelUrl、handle、status、statusReason、observedAtがあります。eimuIdフィールドの値は正確でなければなりません。fbidフィールドはMetaに関連付けられた識別子であり、FacebookページIDではありません。OUTPUTには、requestedChannels、acceptedProfileInputs、rejectedInputs、datasetRows、usefulRows、billableRows、nonUsefulRows、statusCountsが表示されます。NASAの1件のプロフィールを使った対照確認では、statusがokとなり、正しいアカウント識別情報、正規のchannelUrl、handle、5件のbioLinksが返されました。detectedEmailsは空の配列で、businessEmailとbusinessPhoneNumberはnullでした。これで確認できるのは、アカウント識別情報とリンクへの対応のみです。この方法は、年齢や所在地の発見、投稿アーカイブ、過去のハンドル履歴、プラットフォームをまたぐ人物の照合には対応していません。

1. 既知のプロフィール一覧から始め、元の入力を残してください。Actorは既知のプロフィールを受け取るもので、年齢、所在地、フォロワー数を条件にすべてのプロフィールを検索することはできません。まず、手作業で一覧を用意する必要があります。
2. 最初に公開プロフィールを1件処理し、設定を確認してください。正規のchannelUrl、handle、channelId、status、statusReason、observedAtを公開元の情報と照合します。有用な行でも、情報が一部しか取得できていない場合があります。名前が一致するだけでは、誤った対象を取得した問題は解消しません。
3. 識別子は文字列として保存し、名前空間をinstagram:channelIdと定義してください。数値が一致していても、InstagramのchannelIdと他のプラットフォームのIDを混同しないでください。fbidフィールドはMetaに関連付けられた識別子であり、FacebookページIDではありません。
4. 安全にプロフィールとして扱えるURLと@付きハンドルから、正規化した入力エイリアスのテーブルを作成し、元の入力も残してください。比較のために通常の末尾のスラッシュやクエリ部分を取り除きます。ただし、ストーリーやログイン用のパスをプロフィールの識別情報として扱わないでください。エイリアスの正規化は、Actorが完全一致する文字列の重複をまとめる処理とは別です。
5. 現在の観測レコードを、空でないchannelIdの値でグループ化してください。入力とchannelIdの対応関係、および正規のchannelUrlの値を残します。同じハンドルが異なる観測時点で別のchannelIdに対応した場合は、両方のレコードを保存し、公開元の情報を確認してください。確認せずに過去のデータを上書きしてはいけません。履歴が欠けている状態では、不整合が生じた理由は説明できません。
6. channelIdが欠けている場合は、正規のchannelUrlまたはhandleを、確度の低い暫定的な根拠として残してください。表示名だけでアカウントを統合してはいけません。blocked、private、parser_missの行は、確認済みアカウントの識別テーブルに含めないでください。ローカルで作る暫定キーは追跡用のメタデータであり、安定した識別子を新たに作り出すものではありません。
7. 結果を、確認済みのアカウント識別情報、入力エイリアス、未解決の観測レコード、不整合に分けてください。既知のアカウントの件数は、入力行数、有用な行数、観測されたハンドル数とは別に数えます。追加の事実を補う前に、収集元の状態と取得データの間に差があれば、その差を説明してください。
8. 後で更新するときは、observedAtを付けた新しい観測レコードを追記してください。Actorは過去の変更を自動では返しません。そのため、件数や[時点ごとのリンク一覧](/ja/articles/instagram-%E8%87%AA%E5%B7%B1%E7%B4%B9%E4%BB%8B%E3%83%AA%E3%83%B3%E3%82%AF-%E5%85%AC%E9%96%8B%E9%80%A3%E7%B5%A1%E5%85%88%E3%81%AE%E7%A2%BA%E8%AA%8D/)を比較する前に、アカウントが同一かどうかを確認する必要があります。

## 具体例と表

以下の表は、この方法の仕組みを説明するために独自に作成した架空の例です。

### 一覧の入力とIDを対応付けるエイリアステーブル

| 一覧の行 | 元の入力 | 収集元の未加工のchannelId | ステータス | 正規のchannelUrl | observedAt | 確認状況 |
| --- | --- | --- | --- | --- | --- | --- |
| R1 | @greenstudio | 10001 | ok | https://www.instagram.com/greenstudio | 2026-03-01 | 確認済みのエイリアス |
| R2 | https://www.instagram.com/greenstudio/?ref=sheet | 10001 | ok | https://www.instagram.com/greenstudio | 2026-03-01 | 確認済みのエイリアス |
| R3 | @green_studio | 20002 | ok | https://www.instagram.com/green_studio | 2026-03-01 | 確認済みのエイリアス |
| R4 | @summerlab | null | partial | https://www.instagram.com/summerlab | 2026-03-01 | 暫定 |
| R5 | @private_notes | null | private | null | 2026-03-01 | 未解決 |

### 既知の2件のIDの登録簿

| channelId | 対応するエイリアス／入力 | ステータスの概要 | 確認状況 |
| --- | --- | --- | --- |
| 10001 | @greenstudio, https://www.instagram.com/greenstudio/?ref=sheet | ok | 確認済みのアカウント識別情報 |
| 20002 | @green_studio | ok | 確認済みのアカウント識別情報 |

### 不整合がある行と確認が必要な行

| 元の入力 | 収集元の未加工のchannelId | ステータス | observedAt | 確認状況 |
| --- | --- | --- | --- | --- |
| @greenstudio | 30003 | ok | 2026-06-01 | 10001との不整合（名前変更や売却の証拠なし） |

確認済みテーブルにある既知のアカウントは、重複を除いて2件です。5件ではなく、表示名を基準に1件にまとめたものでもありません。R1とR2の行は、channelId 10001に対応する2件の入力エイリアスです。R4の行はchannelIdがないため暫定扱いで、R5の行は非公開のため未解決です。その後の架空の観測では、@greenstudioがchannelId 30003に対応しています。これを、observedAtのタイムスタンプとともに、アカウント識別情報の不整合として保存してください。これは、名前変更、アカウント売却、なりすましを証明するものではありません。不整合のある行を統合する前に、対応関係を示すテーブルと、公開元で確認できる事実を調べる必要があります。

## 次に行うこと

自分で重複排除の作業を進めるには、Apifyの[Instagram Channel Scraper](https://apify.com/chronometrica/instagram-channel-scraper) Actorと、[Instagram Identity Map](https://apify.com/chronometrica/instagram-channel-scraper/examples/instagram-identity-map) Taskを使用してください。

## 出典と参考資料

- [RedditでのInstagramプロフィールのスクレイピングに関する議論](https://www.reddit.com/r/instagramAsk/comments/1u1275c/instagram_profile_scrapping/)
- [RedditでのInstagramプロフィールのスクレイピングに関する議論](https://www.reddit.com/r/n8n/comments/1pac74m/scraping_instagram_profiles/)