使用手冊

第 05 期 · MCP Server / Instagram 自動化

以 Chrome 既有登入 session 擷取 IG 貼文。

duhlink/instagram-server-next-mcp 實戰手冊。以 TypeScript 撰寫的 MCP Server,借用 Chrome 既有的 Instagram 登入 session 擷取貼文、下載媒體、生成 metadata。涵蓋安裝、能力總覽、進階配置與實戰流程。

instagram-server-next-mcp 是以 TypeScript 撰寫的 MCP Server。它不需要 Instagram 帳號密碼,而是直接借用 Chrome 既有的登入 session,將指定帳號的貼文連同媒體與 metadata 一併擷取,交給 Claude 等 MCP 客戶端使用。本手冊說明安裝步驟、單一對外工具的參數,以及完整的一次抓取流程。

duhlink/instagram-server-next-mcp
星標
48
分支
18
授權
—
資料截至
閱讀時間
9 分
更新日期
開啟原始報告
MCP 工具
1
98.4% TypeScript
TS
不存任何帳密
0
永久免費授權
MIT

01專案定位

借用 Chrome 已登入的 session,而非儲存帳密。

大多數抓 Instagram 的工具,第一步都要你交出帳號密碼,或塞一段 session cookie。instagram-server-next-mcp 走的是另一條路:它一個憑證都不要,而是直接接管你電腦上「那個你早就登入 Instagram 的 Chrome profile」,用這個既有 session 去開頁面、讀貼文。官方定位只有一句:一個用 Chrome 既有登入 session 抓 Instagram 貼文的 MCP Server。

它的形態是 MCP Server,遵循 Model Context Protocol,以 JSON-RPC 2.0 通訊,對外只暴露一個工具 get_instagram_posts。Claude 之類的 MCP 客戶端呼叫這個工具,Server 在背後驅動 Chrome 走到目標 profile,把貼文連同媒體檔與 metadata 一起落地,再把結果交回去。整份程式碼 98.4% 是 TypeScript,模組切得很乾淨:core/ 管 MCP、features/instagram/ 管抓取邏輯、services/browser/ 管瀏覽器。

這個設計的代價與好處都很明確:好處是不碰帳密、不破 2FA、行為更像真人;代價是它跟你的 Chrome profile 綁死,離不開那台已登入的機器。它不是一個通用 Instagram API,而是一個把「我自己看得到的貼文,讓 AI 也拿得到」這件事做窄做穩的工具。

  1. MCP 客戶端呼叫

  2. 載入 Chrome session

  3. 開目標 profile

  4. 抓貼文

  5. 下載媒體 + metadata

  6. 回傳結果

A Model Context Protocol server for fetching Instagram posts using Chrome's existing login session. 授權來自 Chrome 既有 session,不儲存任何帳號憑證。

— instagram-server-next-mcp README,專案定位

02安裝與啟動

clone、build,並以 Chrome 路徑啟動。

前置條件只有一項:需要一個已登入 Instagram 的 Chrome profile,並知道其 user data 目錄路徑。Server 本身是標準 Node/TypeScript 專案,步驟為 clone、安裝相依、build,再以 CHROME_USER_DATA_DIR 指向該 profile 啟動。

bash
# 1. 取得原始碼
git clone https://github.com/duhlink/instagram-server-next-mcp.git
cd instagram-server-next-mcp

# 2. 安裝相依並 build
npm install
npm run build

# 3. 指向你「已登入 Instagram」的 Chrome profile 啟動
CHROME_USER_DATA_DIR=/path/to/chrome/profile npm start

接進你的 MCP 客戶端

Server 走 stdio 的 JSON-RPC 2.0,接法跟一般 MCP Server 一樣:在客戶端的 MCP 設定裡指向 build 後的進入點,並把那個 Chrome 路徑放進 env。下面是結構示意,實際欄位依你用的 MCP 客戶端為準。

json
{
  "mcpServers": {
    "instagram": {
      "command": "node",
      "args": ["/abs/path/instagram-server-next-mcp/build/index.js"],
      "env": { "CHROME_USER_DATA_DIR": "/path/to/chrome/profile" }
    }
  }
}

03能力地圖

單一對外工具 get_instagram_posts,各模組分層封裝功能。

此 Server 對外只有 get_instagram_posts 一個工具。各內部模組分別解決具體問題:不碰帳密的授權機制、媒體落地、metadata 生成,以及抓取速率控制。以下依設計分類列出。

Tool · 01

get_instagram_posts

唯一對外工具

給定 username,抓回該帳號近期貼文。可選 limit(1–50 或 "all")、saveDir、delayBetweenPosts。

Auth · 02

Chrome session

不碰帳密

用 CHROME_USER_DATA_DIR 接管你已登入的 Chrome profile,沒有獨立憑證、不破 2FA、行為更像真人。

Media · 03

自動下載媒體

圖片影片落地

抓貼文時自動把媒體檔下載到指定目錄,不只拿連結,讓後續處理不依賴 IG CDN。

Meta · 04

metadata 生成

結構化輸出

為每則貼文產生 metadata,讓 AI 客戶端拿到的不是裸圖,而是可直接消費的結構資料。

SEO · 05

描述生成

SEO 友善

內建 SEO-friendly 描述生成,把貼文轉成適合索引/再利用的文字,而非只搬原文。

Arch · 06

模組化架構

乾淨分層

core/ 管 MCP、features/instagram/ 管抓取、services/browser/ 管瀏覽器,要改哪塊很清楚。

Proto · 07

JSON-RPC 2.0

標準 MCP

遵循 Model Context Protocol、JSON-RPC 2.0 通訊,任何 MCP 客戶端都能接,不綁特定工具。

Rate · 08

delayBetweenPosts

節流抓取

用毫秒參數控制每則貼文之間的間隔,放慢節奏降低觸發風控的機率,批次抓時尤其關鍵。

get_instagram_posts 參數速查

參數必填說明
username是要抓取的 Instagram 帳號
limit否抓幾則,1–50 或字串 "all"
saveDir否媒體與 metadata 的儲存目錄
delayBetweenPosts否每則貼文之間的間隔(毫秒),用來節流

04進階配置 · 來自 README 與原始碼結構

啟動前須確認的六項配置要點。

此專案體量小且功能單一,常見問題幾乎集中在「Chrome session」的配置上。以下六項均出自官方 README 與原始碼結構,建議啟動前逐一確認,可減少除錯往返。

先確認那個 profile 真的登入了

整個工具的成敗都押在 CHROME_USER_DATA_DIR 指到的 profile 上。啟動前先用那個 profile 開一次 Instagram,確認不是登出狀態、沒有跳安全驗證,再去跑 Server。

來源 · 官方 README · Prerequisite

抓之前先把 Chrome 關掉

Chrome 對同一個 user data 目錄通常會上鎖。若你本人正開著那個 profile,自動化往往起不來。抓取前先完全結束該 Chrome,讓 Server 獨佔 session。

來源 · Chrome profile 鎖定 · 設計推論

大量抓就把 delayBetweenPosts 拉高

limit: "all" 很誘人,但連續快抓最容易觸發 IG 風控。把 delayBetweenPosts 設成數秒級的毫秒值,寧可慢,也別讓 session 被標記。

來源 · 官方 README · 參數說明

用三支 test_ 腳本分段排查

抓不到時別瞎猜。repo 根目錄的 test_browserService.ts、test_profileScraper.ts、test_instagramMCP.ts 對應瀏覽器/抓取/MCP 三層,單獨跑就能定位是哪一層斷掉。

來源 · repo 根目錄測試檔

先 build 再 start,別直接 start

它是 TypeScript 專案,npm start 跑的是 build 後的產物。改完程式或剛 clone,務必先 npm run build;開發時改用 npm run dev 才有即時回饋。

來源 · 官方 README · NPM Scripts

固定 saveDir,讓下游接得住

把 saveDir 指到一個穩定目錄,媒體與 metadata 就有可預期的落點。下游(內容整理、再發布、索引)直接讀這個資料夾,不必每次去解析回傳。

來源 · 官方 README · 參數說明

05實戰流程

從單次工具呼叫到落地媒體的完整示意。

以下是依官方工具行為改寫的情境:你在已接好這個 MCP Server 的 Claude 裡,要某個品牌帳號最近的貼文做內容研究。看 Claude 怎麼呼叫 get_instagram_posts、Server 怎麼借 Chrome session 抓取、媒體與 metadata 怎麼落地。畫面為示意,實際輸出依貼文與設定而定。

claude · MCP: instagram-server-next-mcp · 示意


$ You ›
  幫我抓 @natgeo 最近 12 則貼文,我要做一份內容研究。


claude: Claude ›
  我用接好的 instagram-server-next-mcp 來抓。先確認你的
  Chrome 已登入 Instagram,這個 Server 不存帳密,
  是借 CHROME_USER_DATA_DIR 指到的那份既有 session。


# [tool call] get_instagram_posts
# { "username": "natgeo", "limit": 12,
  # "saveDir": "./research/natgeo",
  # "delayBetweenPosts": 1500 }


# [server] 載入 Chrome user-data-dir session…
# [server] 開啟 instagram.com/natgeo
# [server] 解析貼文列表 · 取前 12 則
# [server] 下載媒體 · 每則間隔 1500ms
# [server] 寫入 metadata · 生成 SEO 描述


ok: ✓ 12 則貼文已落地 ./research/natgeo
    post_01/  image.jpg   metadata.json
    post_02/  video.mp4   metadata.json
    …
    post_12/  image.jpg   metadata.json


claude: Claude ›
  抓完了,12 則都在 ./research/natgeo。每則的
  metadata.json 含貼文文案、時間、媒體路徑,還有
  Server 生成的 SEO-friendly 描述。我接著幫你彙整:


  hl: · 主題分布:野生動物 7 / 地景 3 / 人文 2
  hl: · 文案平均長度 ~ 280 字,多以提問開頭
  hl: · 影片貼文集中在週末發布


$ You ›
  很好。再把 limit 設 "all" 抓完整檔,間隔拉長一點。


claude: Claude ›
  建議把 delayBetweenPosts 調大(例如 3000ms)再跑
  limit:"all",量大時節流能降低被 Instagram 擋的風險。

        

單次工具呼叫,輸出媒體檔案與 metadata。 授權來源是 Chrome 既有 session,Server 不儲存帳密。

— 依官方 README 工具行為整理

這段流程為什麼值得拆解

重點不在「能抓 IG」,而在 抓取的授權來源是你已登入的 Chrome,而不是塞給 Server 的帳密。Claude 只是把自然語言需求翻成一次 get_instagram_posts 呼叫,Server 借 session、開 profile、把媒體與 metadata 寫進 saveDir,再把結果交回對話。

畫面為依官方工具行為改寫的示意。實際輸出的目錄結構、欄位與訊息依貼文內容與客戶端而定。此工具無官方 API 背書,應視為研究與備份的取數層,而非穩定的生產管線。

06使用限制與注意事項

使用前須了解的邊界與風險。

07進階路徑

將此 Server 整合至內容研究或備份流程。

此專案的原始碼體量小且結構清晰:以 TypeScript 撰寫,分 core/、features/instagram/、services/browser/ 三層,全部可讀完。需要新增工具或修改抓取行為,可直接在既有模組上擴充,不需重建架構。MIT 授權,可自由 fork。

進階玩法地圖

**1. 擴充工具。**目前只有 get_instagram_posts。順著 features/instagram/ 的模式,可以加抓單篇、抓 highlights、或抓特定日期區間的工具,沿用同一套 services/browser/ session 機制。

**2. 接進內容研究管線。**把它當取數層:Claude 抓回媒體 + metadata 後,串你的分析、改寫、生成 brief 流程,做競品內容研究或選題參考。

**3. 做帳號備份。**用 limit:"all" + 較大的 delayBetweenPosts 排程,把自家帳號的貼文與媒體定期落地存檔,當成離線備份。

**4. 鎖定獨立 Chrome profile。**專門開一份只登 Instagram 的 Chrome user-data-dir,CHROME_USER_DATA_DIR 指過去,跟你日常用的瀏覽器分開,避免 profile 鎖定互卡。

**5. 自己維護它。**因為依賴 Instagram 前端,fork 後要有人盯著 DOM 變動、隨時修解析。把它納進你的維護清單,而不是當黑盒。

最該讀的三份延伸閱讀

① README.md:工具參數、安裝步驟與 CHROME_USER_DATA_DIR 設定的第一手說明。 ② src/:core/、features/instagram/、services/browser/ 的分層架構,可查抓取與 session 的實作細節。 ③ package.json:build / start / dev / lint scripts 與相依,供確認本機環境。

A Model Context Protocol server for fetching Instagram posts using Chrome's existing login session.

— instagram-server-next-mcp README,專案定位原句