Extracts all hyperlinks from every sheet tab of a public Feishu spreadsheet, then optionally batch-downloads the linked articles as Markdown files.
When invoked, follow these steps:
If the user has already provided a Feishu URL, use it. Otherwise ask:
"请提供飞书多维表格的链接(公开可访问的)"
Confirm the URL looks like https://*.feishu.cn/wiki/... or https://*.feishu.cn/sheets/....
Resolve the skill directory:
bash
SKILL_DIR="$(find ~/.claude/skills /workspace/.claude/skills -maxdepth 1 -name feishu-sheet-links -type d 2>/dev/null | head -1)"
Run the extraction script:
bash
npx -y bun "${SKILL_DIR}/scripts/main.ts" "<spreadsheet-url>" -o feishu-links.json
Each sheet tab takes 8–15 seconds to load — let the user know it may take a moment.
After extraction, show the user a summary:
Example:
text
Found 4 sheets, 127 links total:
- 1月: 32 links
- 2月: 28 links
- 3月: 35 links
- 4月: 32 links
Saved to: feishu-links.json
Ask the user if they want to download the linked articles as Markdown:
"是否需要批量下载这些文章为 Markdown 文件?"
If yes, ask for an output directory (default: ./feishu-articles), then run:
bash
npx -y bun "${SKILL_DIR}/scripts/download.ts" feishu-links.json \
-o <output-dir> \
-c 5 \
--max-wait 20000
Download supports resume — if interrupted, re-running skips already-downloaded files.
SituationActionDocument is private / requires loginTell the user — this tool only works with public Feishu docsChrome not foundAsk user to install Chrome, or set FEISHU_CHROME_PATHA sheet times outWarn and continue — other sheets will still be extractedZero links foundConfirm the URL is correct and the doc is publicly accessible
spreadApp.collaborativeSpread._spread.sheetIdToIndexMap?sheet=<id>, calls setActiveSheetIndex() to trigger lazy loading, and waits for sheet._dataModel.contentModel to populatecontentModel.link.idToRef._map (whole-cell hyperlinks)contentModel.segmentModel.table (inline rich-text links)VariableDescriptionFEISHU_CHROME_PATHCustom Chrome executable pathFEISHU_CHROME_PROFILECustom Chrome profile directory