飛書文檔禁止複製?我用Claude 3分鐘提取了12000字
整理版優先睇
用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 Playwright,Claude 實時控制瀏覽器逐個點擊章節,但消耗咗約 50K tokens、用咗 15 分鐘、成本 $0.75。呢個方案適合複雜交互任務,但唔適合重複性強嘅批量操作。
換個思路:webapp-testing Skill — 輕量夠用
作者改用 Claude 新推出嘅 webapp-testing Skill。佢嘅設計唔係即時控制瀏覽器,而係寫好 Playwright 腳本然後一次執行,Token 消耗只需 ~5K tokens,時間 3 分鐘,成本 $0.075,慳咗 90% 成本同 80% 時間。
實戰步驟:4步搞掂提取內容
- 1 叫 Claude 寫 Playwright 腳本:作者畀咗提示,Claude 生成咗逐個點擊章節、等待加載、提取內容嘅 Python 腳本
- 2 處理 3 個關鍵問題:Windows 編碼要強制 UTF-8;因為飛書係單頁應用,內容會覆蓋,所以每 5 個章節 save 一次快照;等待時間由 1 秒改做 3 秒確保內容完整
- 3 一鍵執行腳本:瀏覽器自動打開文檔、逐個點擊 37 個章節、每 5 章保存快照、最後滾動加載完整內容
- 4 合併結果:得到 7 個快照,合併後 12,614 字符,覆蓋咗 60-70% 核心章節
3個關鍵收穫 vs 擴展應用
重複性任務優先整腳本,唔好用對話式操作
Skills 係工具箱,MCP 係遙控器。工具箱要識用,但用得好效率高。揀啱工具,效率翻倍、成本減半。呢個方法理論上適用於所有在線文檔,關鍵係揾到頁面加載規律。
- Notion:導出禁用嘅資料庫
- 語雀:批量下載文檔
- 內部 Wiki:公司知識庫歸檔
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揸車咁。
✅ 適合場景:複雜交互、需要即時決策嘅任務 ❌ 不適合:重複性高、步驟固定嘅批量操作
轉個諗法:webapp-testing Skill - 輕量夠用
嗰陣諗起Claude啱啱發佈嘅Skills,撳到webapp-testing呢個。
睇文檔發現佢嘅設計思路完全唔同:
❌ 唔係俾Claude即時控制瀏覽器 ✅ 而係俾Claude寫好Playwright腳本,然後一次過執行
類比一下:
MCP = Claude揸車(即時控制,好嘥氣) Skill = Claude寫自動駕駛程式(一次編程,多次執行)
優勢即刻顯現:Token效率高、可重複用、適合批量任務。
節省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步:執行腳本
一鍵執行,瀏覽器自動:
打開飛書文檔 逐個㩒37個章節 每5章儲存一次快照 最後滾動加載完整內容
第4步:合併結果
最終拎到:
✅ 7個快照保存咗唔同階段嘅內容 ✅ 合併後12,614字元 ✅ 覆蓋咗60-70%嘅核心章節
雖然唔係100%完整(有啲章節需要登入),但核心內容都拎到咗。
兩種方案點揀?
我嘅建議:
首次嘗試:用MCP快速驗證可行性 批量操作:用Skill提高效率降低成本
3個關鍵收穫
重複性任務優先腳本可以寫成腳本嘅,唔好用對話式操作
Skills係「工具箱」,MCP係「遙控器」工具箱需要你識用,但用得好效率高
揀啱工具,效率倍翻成本減半同樣嘅任務,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在開車。
✅ 適合場景:複雜交互、需要實時決策的任務 ❌ 不適合:重複性強、步驟固定的批量操作
換個思路:webapp-testing Skill - 輕量夠用
這時候想起Claude剛發佈的Skills,翻到webapp-testing這個。
看文檔發現它的設計思路完全不同:
❌ 不是讓Claude實時控制瀏覽器 ✅ 而是讓Claude寫好Playwright腳本,然後一次執行
類比一下:
MCP = Claude開車(實時控制,費勁) Skill = Claude寫自動駕駛程序(一次編程,多次運行)
優勢立刻顯現:Token效率高、可複用、適合批量任務。
節省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步:執行腳本
一鍵運行,瀏覽器自動:
打開飛書文檔 逐個點擊37個章節 每5章保存一次快照 最後滾動加載完整內容
第4步:合併結果
最終拿到:
✅ 7個快照保存了不同階段內容 ✅ 合併後12,614字符 ✅ 覆蓋了60-70%的核心章節
雖然不是100%完整(有些章節需要登錄),但核心內容都拿到了。
兩種方案怎麼選?
我的建議:
首次嘗試:用MCP快速驗證可行性 批量操作:用Skill提高效率降低成本
3個關鍵收穫
重複性任務優先腳本能寫成腳本的,不要用對話式操作
Skills是"工具箱",MCP是"遙控器"工具箱需要你會用,但用好了效率高
選對工具,效率翻倍成本減半同樣的任務,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"系列 - 每天一個實戰場景,幫你用對工具、省錢提效。