實戰手冊 · Field Manual 2026 春季號
github.com/duhlink/instagram-server-next-mcp · 48 ★
ig
第 05 期 · MCP Server / Instagram 自動化

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

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

1
MCP 工具
TS
98.4% TypeScript
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 也拿得到」這件事做窄做穩的工具。

一次抓取的生命週期
MCP 客戶端呼叫 載入 Chrome session 開目標 profile 抓貼文 下載媒體 + metadata 回傳結果
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 啟動。

# 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 客戶端為準。

{ "mcpServers": { "instagram": { "command": "node", "args": ["/abs/path/instagram-server-next-mcp/build/index.js"], "env": { "CHROME_USER_DATA_DIR": "/path/to/chrome/profile" } } } }
開發與檢查。專案另外提供 npm run dev(開發模式)與 npm run lint(跑 linter)。Repo 根目錄還附了 test_browserService.tstest_instagramMCP.tstest_profileScraper.ts 三支測試腳本,排查瀏覽器或抓取問題時可以單獨跑。
03
能力地圖

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

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

Tool · 01
get_instagram_posts
唯一對外工具
給定 username,抓回該帳號近期貼文。可選 limit(1–50 或 "all")、saveDirdelayBetweenPosts
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 抓幾則,150 或字串 "all"
saveDir 媒體與 metadata 的儲存目錄
delayBetweenPosts 每則貼文之間的間隔(毫秒),用來節流
04
進階配置 · 來自 README 與原始碼結構

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

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

TIP 01

先確認那個 profile 真的登入了

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

來源 · 官方 README · Prerequisite
TIP 02

抓之前先把 Chrome 關掉

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

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

大量抓就把 delayBetweenPosts 拉高

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

來源 · 官方 README · 參數說明
TIP 04

用三支 test_ 腳本分段排查

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

來源 · repo 根目錄測試檔
TIP 05

先 build 再 start,別直接 start

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

來源 · 官方 README · NPM Scripts
TIP 06

固定 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 › 我用接好的 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 描述
✓ 12 則貼文已落地 ./research/natgeo post_01/ image.jpg metadata.json post_02/ video.mp4 metadata.json post_12/ image.jpg metadata.json
Claude › 抓完了,12 則都在 ./research/natgeo。每則的 metadata.json 含貼文文案、時間、媒體路徑,還有 Server 生成的 SEO-friendly 描述。我接著幫你彙整:
· 主題分布:野生動物 7 / 地景 3 / 人文 2 · 文案平均長度 ~ 280 字,多以提問開頭 · 影片貼文集中在週末發布
You › 很好。再把 limit 設 "all" 抓完整檔,間隔拉長一點。
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
使用限制與注意事項

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

  • 抓取本身踩 Instagram 條款。這是用瀏覽器自動化抓公開貼文,不是官方 API。是否合規、是否觸及對方權益,責任在你。商用前先確認授權與當地法規,不要拿來大規模爬取。
  • 必須先有一份已登入 Instagram 的 Chrome profile。整個機制建立在 CHROME_USER_DATA_DIR 指向的既有 session 上。沒有該 session,工具無法擷取資料。這也意味著它無法在從未登入 Instagram 的純伺服器環境中運行。
  • Chrome profile 會被佔用。Chrome 對 user-data-dir 有鎖定。跑抓取時通常得先關掉用同一份 profile 的 Chrome,否則可能起不來或拿到髒狀態。
  • 抓太快會被擋。沒有官方 API 就沒有官方配額;頻繁請求可能觸發 Instagram 的風控或暫時封鎖。量大時務必把 delayBetweenPosts 調大,並分批抓。
  • 對 Instagram 前端改版很脆弱。抓取依賴頁面結構,Instagram 一改 DOM,解析就可能壞掉。把它當成需要持續盯著、可能隨時失靈的取數層,不要當穩定依賴。
  • 這是個體量很小的專案。星數與貢獻者都不多,更新與支援不保證持續。要長期用,做好自己 fork、自己維護的準備。
  • MIT 授權,不附任何保證。抓到的內容仍受原作者著作權與 Instagram 條款約束;工具只負責取數,合規使用是你的事。
  • 只讀不寫。get_instagram_posts 只抓貼文與媒體,不發文、不互動、不管理帳號。需要發布請另找工具,別期待它做雙向操作。
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,專案定位原句