skills/bilibili-keywords-scraper/SKILL.md
Use this skill when the user wants to collect Bilibili/B站 candidate UP creators from keyword search results or an already-filtered Bilibili search page, deduplicate by UP主页 mid, write/update a Lark Base candidate table, and optionally enrich each UP profile with fans, likes, plays, representative videos, and public contact info. This skill does not send DMs or manage outreach status.
npx skillsauth add csfuwwc/md-skills bilibili-keywords-scraperInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill only for candidate UP collection:
https://space.bilibili.com/<mid>.Do not use this skill for Bilibili private messages, outreach status machines, reply judging, or conversation extraction. Those should be a separate outreach skill.
Always use the dedicated Bilibili browser profile:
bilibiliconfig.browser.cdpUrl or env BILIBILI_CDP_URL)social-browser-profiles if available; scripts fall back to the configured CDP URL.If the user has already filtered the Bilibili search page manually, use --mode current. If the user gives keyword/sort and wants the script to open the page, use --mode navigate.
Never hardcode the user's table. Require a local config file based on templates/config.example.json.
Minimum required Lark config:
{
"lark": {
"baseToken": "...",
"tableId": "..."
}
}
The config may override field names. See references/lark-schema.md for the default schema.
Recommended local config path in a project workspace:
./.bilibili-up-candidates.config.json
Do not commit user-specific config files into a skill repo.
Dry-run from the currently open/filtered Bilibili search page:
node ~/.agents/skills/bilibili-keywords-scraper/scripts/run_candidate_pipeline.mjs \
--config ./.bilibili-up-candidates.config.json \
--keyword "示例关键词" \
--mode current \
--pages 1
Write to table and enrich profile data:
node ~/.agents/skills/bilibili-keywords-scraper/scripts/run_candidate_pipeline.mjs \
--config ./.bilibili-up-candidates.config.json \
--keyword "示例关键词" \
--mode current \
--pages all \
--limit 50 \
--intervalMs 3000 \
--execute
Navigate by keyword and sort, then write:
node ~/.agents/skills/bilibili-keywords-scraper/scripts/run_candidate_pipeline.mjs \
--config ./.bilibili-up-candidates.config.json \
--keyword "示例关键词" \
--sort pubdate \
--mode navigate \
--pages all \
--execute
Collect search results only, without visiting UP homepages:
node ~/.agents/skills/bilibili-keywords-scraper/scripts/run_candidate_pipeline.mjs \
--config ./.bilibili-up-candidates.config.json \
--keyword "示例关键词" \
--mode current \
--pages all \
--enrich false \
--execute
--config: Required. Local JSON config for target Lark Base and field mapping.--keyword: Required. Keyword to write into the keyword field.--mode: current or navigate. Default is current.--sort: Used only with --mode navigate. Common values: pubdate, click, totalrank.--pubtimeRange: Optional time filter. Supported values: recent6m, recent3m, recent1m.--pubtimeBegin / --pubtimeEnd: Optional Unix second timestamps for an exact Bilibili publish-time window.--pages: Page count or all. Default is 1.--limit: Max UP profiles to enrich in this run. Default comes from config, usually 50.--intervalMs: Delay between profile visits. Default comes from config, usually 3000.--enrich: Whether to visit UP profiles after collection. Default is true.--execute: Required for Lark writes. Without this, scripts dry-run and print samples.templates/config.example.json.综合排序/最新发布/最多播放), page scope (当前页/前 N 页/全部页), and whether to reuse the current manually filtered page.--mode navigate.--execute when the target table, filter conditions, and sample look right.--limit 50 --intervalMs 3000; stop only on captcha or hard error.scripts/collect_from_search.mjs: Collects UP candidates from search result pages and upserts rows/keywords.scripts/enrich_profiles.mjs: Visits UP homepages and fills profile metrics/contact fields.scripts/run_candidate_pipeline.mjs: Runs collection then optional enrichment.references/lark-schema.md: Default field mapping and required/optional fields.references/bilibili-selectors.md: Selector and captcha notes.templates/config.example.json: Copy this to a local config and fill in table info.tools
Use when the user asks to install Feishu/Lark CLI, configure lark-cli, connect an agent with Feishu CLI, check or refresh lark-cli auth, recover expired tokens, or start a Feishu device-flow login.
documentation
Use when a user provides Xiaohongshu/XHS/xhslink URLs, asks to fetch 小红书 note or video content, likes, saves/collections, comments, publish metadata, or wants to fill a spreadsheet/Base from 小红书 links.
content-media
Use when a user provides Weibo/微博 links, asks to fetch 微博 post text, likes, video visual content, or wants to fill a Lark Base table from 微博 links.
testing
Read and send email via IMAP/SMTP. Check for new/unread messages, fetch content, search mailboxes, mark as read/unread, and send emails with attachments. Supports multiple accounts. Works with any IMAP/SMTP server including Gmail, Outlook, 163.com, vip.163.com, 126.com, vip.126.com, 188.com, and vip.188.com.