飛書文檔禁止複製?我用Claude 3分鐘提取了12000字

作者:niro
日期:2026年1月10日 上午9:41
來源:WeChat 原文

整理版優先睇

速讀 5 個重點 高亮

Claude Skill 3分鐘提取飛書文檔12000字,成本低至$0.075

整理版摘要

呢篇文章係「一天一個Claude Skill」系列嘅第1期,作者分享自己點樣用Claude嘅 Skills 功能,快速提取飛書文檔入面禁止複製嘅付費課程內容(37個章節、12000幾字)。佢一開始試咗5個方法都唔得,之後用 MCP Playwright 方案又因為 Token 消耗太快而失敗,最後改用 Claude 新出嘅 webapp-testing Skill,寫好 Playwright 腳本一次過執行,3分鐘就搞掂,成本仲大幅降低。

作者嘅核心觀點係:重複性強、步驟固定嘅批量操作,最理想係用 Skills 自動化,而唔係用 MCP 實時控制對話。佢透過實際測試比較兩種方案嘅優劣,並提供完整嘅實戰步驟同埋程式碼。整體結論係:揀啱工具可以令效率翻倍、成本減半,而呢個方法理論上適用於所有在線文檔(飛書、Notion、語雀等)。

  • MCP Playwright 適合複雜交互但 Token 消耗高(~50K tokens,$0.75),唔適合批量操作
  • Claude Skill(webapp-testing)一次編程多次運行,Token 只需 ~5K,成本 $0.075,節省 90% 成本
  • 實戰步驟:讓 Claude 生成 Playwright 腳本 → 處理編碼、內容覆蓋、等待時間等關鍵問題 → 一鍵執行 → 合併結果
  • 關鍵收穫:重複性任務優先整腳本,Skills 係工具箱而 MCP 係遙控器,揀啱工具效率翻倍
  • 呢個方法可以用嚟批量提取飛書、Notion、語雀、公司 Wiki 等文件,只要揾到頁面加載規律就得
整理重點

煩人事:飛書文檔禁止複製,點算好?

作者遇到一份飛書文檔,37個章節、12000幾字嘅付費課程內容,但係禁止複製、禁止導出。佢試咗5個方法都失敗,最後諗起 Claude 啱啱推出嘅 Skills 功能,結果 3 分鐘就搞掂。

整理重點

第一次嘗試:MCP Playwright — 強大但「燒錢」

MCP 嘅 playwright 服務器可以操控真實瀏覽器、自動點擊、截圖、實時調試,但 Token 消耗飛快,37個章節未點完上下文就滿咗

作者最早用 MCP PlaywrightClaude 實時控制瀏覽器逐個點擊章節,但消耗咗約 50K tokens、用咗 15 分鐘、成本 $0.75。呢個方案適合複雜交互任務,但唔適合重複性強嘅批量操作。

整理重點

換個思路:webapp-testing Skill — 輕量夠用

作者改用 Claude 新推出嘅 webapp-testing Skill。佢嘅設計唔係即時控制瀏覽器,而係寫好 Playwright 腳本然後一次執行,Token 消耗只需 ~5K tokens,時間 3 分鐘,成本 $0.075,慳咗 90% 成本同 80% 時間。

整理重點

實戰步驟:4步搞掂提取內容

  1. 1 ClaudePlaywright 腳本:作者畀咗提示,Claude 生成咗逐個點擊章節、等待加載、提取內容嘅 Python 腳本
  2. 2 處理 3 個關鍵問題Windows 編碼要強制 UTF-8;因為飛書係單頁應用,內容會覆蓋,所以每 5 個章節 save 一次快照;等待時間由 1 秒改做 3 秒確保內容完整
  3. 3 一鍵執行腳本:瀏覽器自動打開文檔、逐個點擊 37 個章節、每 5 章保存快照、最後滾動加載完整內容
  4. 4 合併結果:得到 7 個快照,合併後 12,614 字符,覆蓋咗 60-70% 核心章節
整理重點

3個關鍵收穫 vs 擴展應用

重複性任務優先整腳本,唔好用對話式操作

Skills 係工具箱,MCP 係遙控器。工具箱要識用,但用得好效率高。揀啱工具,效率翻倍、成本減半。呢個方法理論上適用於所有在線文檔,關鍵係揾到頁面加載規律。

  • Notion:導出禁用嘅資料庫
  • 語雀:批量下載文檔
  • 內部 Wiki:公司知識庫歸檔
完整 Playwright 腳本(簡化版) python
from playwright.sync_api import sync_playwright
import time
import json
import sys

sys.stdout.reconfigure(encoding='utf-8')

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto('https://your-feishu-doc-url', timeout=60000)
    time.sleep(8)

    with open('feishu_doc_toc.json', 'r', encoding='utf-8') as f:
        chapters = json.load(f)

    snapshots = {}
    for i, chapter in enumerate(chapters, 1):
        print(f"[{i}/{len(chapters)}] {chapter['text']}")
        try:
            page.click(f'a[href="{chapter["href"]}"]', timeout=3000)
        except:
            anchor_id = chapter['href'][1:]
            page.evaluate(f'document.getElementById("{anchor_id}")?.scrollIntoView()')
        time.sleep(3)
        content = page.evaluate('() => document.body.innerText')

        if i % 5 == 0:
            snapshots[f"snapshot_{i}"] = content

    with open('output.txt', 'w', encoding='utf-8') as f:
        f.write(page.evaluate('() => document.body.innerText'))
    with open('snapshots.json', 'w', encoding='utf-8') as f:
        json.dump(snapshots, f, ensure_ascii=False, indent=2)
    browser.close()


今日撞到件煩嘢。

一份飛書文檔,37個章節、成萬二字嘅付費課程內容,禁止複製、禁止匯出。難道要逐隻字打出嚟?

試咗5個方法都失敗之後,諗起Claude啱啱發佈嘅Skills功能。結果3分鐘就搞掂咗。

呢個係「一日一個Claude Skill」系列第1期,分享我嘅實戰過程。


第一次嘗試:MCP Playwright - 強大但「燒錢」

啱開始我用嘅係MCP嘅playwright伺服器。

呢樣嘢真係勁:可以操控真實瀏覽器、自動點擊、截圖、即時調試頁面元素。

我同Claude講:「幫我㩒飛書文檔嘅每個章節,提取內容。」

Claude好聽話,打開瀏覽器,開始逐個㩒章節連結。但好快我發覺唔對路——Token消耗好快

37個章節未㩒完,上下文就爆咗。

嗰陣我先意識到問題:MCP係俾Claude即時控制瀏覽器,每個操作都要對話,好似Claude揸車咁。

指標
MCP方案
Token消耗
~50K tokens
時間
15分鐘
成本
$0.75

✅ 適合場景:複雜交互、需要即時決策嘅任務 ❌ 不適合:重複性高、步驟固定嘅批量操作


轉個諗法:webapp-testing Skill - 輕量夠用

嗰陣諗起Claude啱啱發佈嘅Skills,撳到webapp-testing呢個。

睇文檔發現佢嘅設計思路完全唔同:

  • ❌ 唔係俾Claude即時控制瀏覽器
  • ✅ 而係俾Claude寫好Playwright腳本,然後一次過執行

類比一下:

  • MCP = Claude揸車(即時控制,好嘥氣)
  • Skill = Claude寫自動駕駛程式(一次編程,多次執行)

優勢即刻顯現:Token效率高、可重複用、適合批量任務。

指標
webapp-testing
Token消耗
~5K tokens
時間
3分鐘
成本
$0.075

節省90%成本,減少80%時間。


實戰步驟:4步搞掂

第1步:俾Claude寫腳本

我俾Claude嘅提示:

這個飛書文檔有37個章節,每個章節是錨點連結,
需要逐個點擊才會加載內容。幫我寫個Playwright腳本。

Claude生成了完整嘅Python腳本,核心邏輯好清晰:

# 核心邏輯(簡化版)
for chapter in chapters:
    page.click(chapter['link'])  # 點擊連結
    time.sleep(3)                # 等待加載
    content = page.inner_text()  # 提取內容
    save_snapshot(content)       # 保存快照

第2步:處理3個關鍵問題

問題1:Windows編碼

# Windows控制枱會亂碼,強制UTF-8
sys.stdout.reconfigure(encoding='utf-8')

問題2:內容被覆蓋飛書係單頁應用,每次㩒會取代內容。

# 解決:每5個章節保存一次快照
if i % 5 == 0:
    snapshots[f"snapshot_{i}"] = content

問題3:等待時間開始設1秒,內容加載唔完整。改做3秒,完美解決。

第3步:執行腳本

一鍵執行,瀏覽器自動:

  1. 打開飛書文檔
  2. 逐個㩒37個章節
  3. 每5章儲存一次快照
  4. 最後滾動加載完整內容

第4步:合併結果

最終拎到:

  • ✅ 7個快照保存咗唔同階段嘅內容
  • ✅ 合併後12,614字元
  • ✅ 覆蓋咗60-70%嘅核心章節

雖然唔係100%完整(有啲章節需要登入),但核心內容都拎到咗。


兩種方案點揀?


MCP Playwright
webapp-testing
Token消耗
高(持續對話)
低(一次編程)
適用場景
複雜交互
固定流程批量
上手難度
簡單(對話式)
需要基礎代碼
可重用性

我嘅建議

  • 首次嘗試:用MCP快速驗證可行性
  • 批量操作:用Skill提高效率降低成本

3個關鍵收穫

  1. 重複性任務優先腳本可以寫成腳本嘅,唔好用對話式操作

  2. Skills係「工具箱」,MCP係「遙控器」工具箱需要你識用,但用得好效率高

  3. 揀啱工具,效率倍翻成本減半同樣嘅任務,MCP可能用100蚊,Skill只需要5蚊

呢個方法理論上適用於所有線上文檔:飛書、Notion、語雀、騰訊文檔...關鍵係揾到頁面加載規律。


擴展應用

同樣思路可以用喺:

  • Notion:匯出禁用嘅資料庫
  • 語雀:批量下載文檔
  • 內部Wiki:公司知識庫歸檔
📎 完整代碼(㩒開)
from playwright.sync_api import sync_playwright
import time
import json
import sys

# Windows編碼設置
sys.stdout.reconfigure(encoding='utf-8')

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()

    # 訪問目標URL
    page.goto('https://your-feishu-doc-url', timeout=60000)
    time.sleep(8)

    # 讀取章節列表
    with open('feishu_doc_toc.json''r', encoding='utf-8'as f:
        chapters = json.load(f)

    snapshots = {}

    # 逐個點擊章節
    for i, chapter in enumerate(chapters, 1):
        print(f"[{i}/{len(chapters)}{chapter['text']}")

        try:
            page.click(f'a[href="{chapter["href"]}"]', timeout=3000)
        except:
            anchor_id = chapter['href'][1:]
            page.evaluate(f'document.getElementById("{anchor_id}")?.scrollIntoView()')

        time.sleep(3)
        content = page.evaluate('() => document.body.innerText')

        # 每5個章節保存快照
        if i % 5 == 0:
            snapshots[f"snapshot_{i}"] = content

    # 保存結果
    with open('output.txt''w', encoding='utf-8'as f:
        f.write(page.evaluate('() => document.body.innerText'))

    with open('snapshots.json''w', encoding='utf-8'as f:
        json.dump(snapshots, f, ensure_ascii=False, indent=2)

    browser.close()

聽日預告

Claude Skills實戰02:PDF批量處理

  • 點樣從50份研報中提取關鍵數據
  • 多文件合併分析
  • 表格自動識別

你更鍾意MCP嘅即時控制,定係Skills嘅腳本模式?留言區傾嚇你嘅使用場景。


「一日一個Claude Skill」系列 - 每日一個實戰場景,幫你用啱工具、慳錢提高效率。


今天遇到個煩人事。

一份飛書文檔,37個章節、12000多字的付費課程內容,禁止複製、禁止導出。難道要一個字一個字敲出來?

試了5個方法都失敗後,想起Claude剛發佈的Skills功能。結果3分鐘搞定。

這是"一天一個Claude Skill"系列第1期,分享我的實戰過程。


第一次嘗試:MCP Playwright - 強大但"燒錢"

剛開始我用的是MCP的playwright服務器。

這東西確實猛:能操控真實瀏覽器、自動點擊、截圖、實時調試頁面元素。

我跟Claude說:"幫我點擊飛書文檔的每個章節,提取內容。"

Claude很聽話,打開瀏覽器,開始一個個點擊章節連結。但很快我發現不對勁——Token消耗飛快

37個章節還沒點完,上下文就滿了。

這時候我才意識到問題:MCP是讓Claude實時控制瀏覽器,每個操作都要對話,像是Claude在開車。

指標
MCP方案
Token消耗
~50K tokens
時間
15分鐘
成本
$0.75

✅ 適合場景:複雜交互、需要實時決策的任務 ❌ 不適合:重複性強、步驟固定的批量操作


換個思路:webapp-testing Skill - 輕量夠用

這時候想起Claude剛發佈的Skills,翻到webapp-testing這個。

看文檔發現它的設計思路完全不同:

  • ❌ 不是讓Claude實時控制瀏覽器
  • ✅ 而是讓Claude寫好Playwright腳本,然後一次執行

類比一下:

  • MCP = Claude開車(實時控制,費勁)
  • Skill = Claude寫自動駕駛程序(一次編程,多次運行)

優勢立刻顯現:Token效率高、可複用、適合批量任務。

指標
webapp-testing
Token消耗
~5K tokens
時間
3分鐘
成本
$0.075

節省90%成本,減少80%時間。


實戰步驟:4步搞定

第1步:讓Claude寫腳本

我給Claude的提示:

這個飛書文檔有37個章節,每個章節是錨點連結,
需要逐個點擊才會加載內容。幫我寫個Playwright腳本。

Claude生成了完整的Python腳本,核心邏輯很清晰:

# 核心邏輯(簡化版)
for chapter in chapters:
    page.click(chapter['link'])  # 點擊連結
    time.sleep(3)                # 等待加載
    content = page.inner_text()  # 提取內容
    save_snapshot(content)       # 保存快照

第2步:處理3個關鍵問題

問題1:Windows編碼

# Windows控制枱會亂碼,強制UTF-8
sys.stdout.reconfigure(encoding='utf-8')

問題2:內容被覆蓋飛書是單頁應用,每次點擊會替換內容。

# 解決:每5個章節保存一次快照
if i % 5 == 0:
    snapshots[f"snapshot_{i}"] = content

問題3:等待時間開始設1秒,內容加載不完整。改成3秒,完美解決。

第3步:執行腳本

一鍵運行,瀏覽器自動:

  1. 打開飛書文檔
  2. 逐個點擊37個章節
  3. 每5章保存一次快照
  4. 最後滾動加載完整內容

第4步:合併結果

最終拿到:

  • ✅ 7個快照保存了不同階段內容
  • ✅ 合併後12,614字符
  • ✅ 覆蓋了60-70%的核心章節

雖然不是100%完整(有些章節需要登錄),但核心內容都拿到了。


兩種方案怎麼選?


MCP Playwright
webapp-testing
Token消耗
高(持續對話)
低(一次編程)
適用場景
複雜交互
固定流程批量
上手難度
簡單(對話式)
需要基礎代碼
可複用性

我的建議

  • 首次嘗試:用MCP快速驗證可行性
  • 批量操作:用Skill提高效率降低成本

3個關鍵收穫

  1. 重複性任務優先腳本能寫成腳本的,不要用對話式操作

  2. Skills是"工具箱",MCP是"遙控器"工具箱需要你會用,但用好了效率高

  3. 選對工具,效率翻倍成本減半同樣的任務,MCP可能花100刀,Skill只要5刀

這個方法理論上適用於所有在線文檔:飛書、Notion、語雀、騰訊文檔...關鍵是找到頁面加載規律。


擴展應用

同樣思路可以用於:

  • Notion:導出禁用的數據庫
  • 語雀:批量下載文檔
  • 內部Wiki:公司知識庫歸檔
📎 完整代碼(點擊展開)
from playwright.sync_api import sync_playwright
import time
import json
import sys

# Windows編碼設置
sys.stdout.reconfigure(encoding='utf-8')

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()

    # 訪問目標URL
    page.goto('https://your-feishu-doc-url', timeout=60000)
    time.sleep(8)

    # 讀取章節列表
    with open('feishu_doc_toc.json''r', encoding='utf-8'as f:
        chapters = json.load(f)

    snapshots = {}

    # 逐個點擊章節
    for i, chapter in enumerate(chapters, 1):
        print(f"[{i}/{len(chapters)}{chapter['text']}")

        try:
            page.click(f'a[href="{chapter["href"]}"]', timeout=3000)
        except:
            anchor_id = chapter['href'][1:]
            page.evaluate(f'document.getElementById("{anchor_id}")?.scrollIntoView()')

        time.sleep(3)
        content = page.evaluate('() => document.body.innerText')

        # 每5個章節保存快照
        if i % 5 == 0:
            snapshots[f"snapshot_{i}"] = content

    # 保存結果
    with open('output.txt''w', encoding='utf-8'as f:
        f.write(page.evaluate('() => document.body.innerText'))

    with open('snapshots.json''w', encoding='utf-8'as f:
        json.dump(snapshots, f, ensure_ascii=False, indent=2)

    browser.close()

明天預告

Claude Skills實戰02:PDF批量處理

  • 如何從50份研報中提取關鍵數據
  • 多文件合併分析
  • 表格自動識別

你更喜歡MCP的實時控制,還是Skills的腳本模式?評論區聊聊你的使用場景。


"一天一個Claude Skill"系列 - 每天一個實戰場景,幫你用對工具、省錢提效。