{"id":"e75f20b9-b145-40b8-b503-93b50d2daab4","entityType":"agent","slug":"clawhub-terrycarter1985-douyin-scraper-v2","name":"抖音爆款爬虫 v2","canonicalUrl":"https://www.xpersona.co/agent/clawhub-terrycarter1985-douyin-scraper-v2","canonicalPath":"/agent/clawhub-terrycarter1985-douyin-scraper-v2","generatedAt":"2026-10-11T15:16:24.929Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T12:50:38.650Z","emptyReason":null},"description":"爬取抖音热榜和搜索建议数据，支持关键词搜索、热榜获取、搜索建议等功能。无需登录即可使用。 Skill: 抖音爆款爬虫 v2 Owner: terrycarter1985 Summary: 爬取抖音热榜和搜索建议数据，支持关键词搜索、热榜获取、搜索建议等功能。无需登录即可使用。 Tags: latest:2.0.1 Version history: v2.0.1 | 2026-06-08T03:49:31.368Z | user v2.0.1: 重写为真实API, 支持热榜/搜索建议/关键词搜索, 无需登录, 支持自然语言入口 v2.0.0 | 2026-06-06T05:04:54.124Z | user 重大更新: 移除prompt注入; 新增自然语言路由; 重写爬虫支持真实抓取+mock降级 v1.3.0 | 2026-06-06T01:49:09.360Z | user 支持自然语言搜索请求；浏览器不可用时自动降级为 mock 数据；修复 Playwright 未安装时的崩溃问题 v1.2.0 | 2026-0","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17brwfrqyjhbjgadkvar20h8x8492g8:douyin-scraper-v2","sourceUrl":"https://clawhub.ai/terrycarter1985/douyin-scraper-v2","homepage":"https://clawhub.ai/terrycarter1985/skills/douyin-scraper-v2","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/terrycarter1985/douyin-scraper-v2","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/terrycarter1985/skills/douyin-scraper-v2","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"爬取抖音热榜和搜索建议数据，支持关键词搜索、热榜获取、搜索建议等功能。无需登录即可使用。 Skill: 抖音爆款爬虫 v2 Owner: terrycarter1985 Summary: 爬取抖音热榜和搜索建议数据，支持关键词搜索、热榜获取、搜索建议等功能。无需登录即可使用。 Tags: latest:2.0.1 Ve"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T12:50:38.650Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T12:50:38.650Z","emptyReason":null},"stars":null,"forks":null,"downloads":1062,"packageName":null,"latestVersion":"2.0.1","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T12:50:38.590Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T12:50:38.650Z","lastCrawledAt":"2026-10-11T12:50:38.590Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T12:50:38.590Z","lastVerifiedAt":null,"highlights":[{"version":"2.0.1","createdAt":"2026-06-08T03:49:31.368Z","changelog":"v2.0.1: 重写为真实API, 支持热榜/搜索建议/关键词搜索, 无需登录, 支持自然语言入口","fileCount":11,"zipByteSize":12842},{"version":"2.0.0","createdAt":"2026-06-06T05:04:54.124Z","changelog":"重大更新: 移除prompt注入; 新增自然语言路由; 重写爬虫支持真实抓取+mock降级","fileCount":11,"zipByteSize":13707},{"version":"1.3.0","createdAt":"2026-06-06T01:49:09.360Z","changelog":"支持自然语言搜索请求；浏览器不可用时自动降级为 mock 数据；修复 Playwright 未安装时的崩溃问题","fileCount":11,"zipByteSize":12912},{"version":"1.2.0","createdAt":"2026-05-29T23:37:54.771Z","changelog":"搜索功能因验证码不可用，回退到热榜；使用 OpenClaw browser tool 替代 Playwright 脚本；热榜数据提取稳定可用","fileCount":11,"zipByteSize":12827},{"version":"1.1.0","createdAt":"2026-05-28T17:35:41.303Z","changelog":"支持自然语言搜索：SKILL.md 新增关键词提取规则，scraper.py 浏览器启动失败时优雅降级不再崩溃","fileCount":11,"zipByteSize":12488},{"version":"1.0.0","createdAt":"2026-05-09T17:41:45.660Z","changelog":"Natural language search support + agent instructions","fileCount":8,"zipByteSize":16747}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17brwfrqyjhbjgadkvar20h8x8492g8:douyin-scraper-v2","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-terrycarter1985-douyin-scraper-v2/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-terrycarter1985-douyin-scraper-v2/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-terrycarter1985-douyin-scraper-v2/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-terrycarter1985-douyin-scraper-v2/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-terrycarter1985-douyin-scraper-v2/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-terrycarter1985-douyin-scraper-v2/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T15:16:24.928Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-terrycarter1985-douyin-scraper-v2/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-terrycarter1985-douyin-scraper-v2/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-terrycarter1985-douyin-scraper-v2/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-terrycarter1985-douyin-scraper-v2/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T12:50:38.650Z","emptyReason":null},"readme":"Skill: 抖音爆款爬虫 v2\n\nOwner: terrycarter1985\n\nSummary: 爬取抖音热榜和搜索建议数据，支持关键词搜索、热榜获取、搜索建议等功能。无需登录即可使用。\n\nTags: latest:2.0.1\n\nVersion history:\n\nv2.0.1 | 2026-06-08T03:49:31.368Z | user\n\nv2.0.1: 重写为真实API, 支持热榜/搜索建议/关键词搜索, 无需登录, 支持自然语言入口\n\nv2.0.0 | 2026-06-06T05:04:54.124Z | user\n\n重大更新: 移除prompt注入; 新增自然语言路由; 重写爬虫支持真实抓取+mock降级\n\nv1.3.0 | 2026-06-06T01:49:09.360Z | user\n\n支持自然语言搜索请求；浏览器不可用时自动降级为 mock 数据；修复 Playwright 未安装时的崩溃问题\n\nv1.2.0 | 2026-05-29T23:37:54.771Z | user\n\n搜索功能因验证码不可用，回退到热榜；使用 OpenClaw browser tool 替代 Playwright 脚本；热榜数据提取稳定可用\n\nv1.1.0 | 2026-05-28T17:35:41.303Z | user\n\n支持自然语言搜索：SKILL.md 新增关键词提取规则，scraper.py 浏览器启动失败时优雅降级不再崩溃\n\nv1.0.0 | 2026-05-09T17:41:45.660Z | user\n\nNatural language search support + agent instructions\n\nArchive index:\n\nArchive v2.0.1: 11 files, 12842 bytes\n\nFiles: examples/search_requests.txt (193b), install_playwright_docker.py (1715b), install.sh (2285b), README.md (869b), requirements.txt (19b), scripts/douyin_scraper.js (9147b), scripts/run.sh (195b), scripts/scraper.py (7150b), skill-card.md (2295b), SKILL.md (3703b), _meta.json (136b)\n\nFile v2.0.1:SKILL.md\n\n---\nname: douyin-scraper\ndescription: 爬取抖音热榜和搜索建议数据，支持关键词搜索、热榜获取、搜索建议等功能。无需登录即可使用。\nversion: 2.0.0\n---\n\n# 抖音爆款爬虫 Skill\n\n## 功能概述\n\n获取抖音热榜和搜索数据。当前版本使用抖音 Web API，**无需登录**。\n\n## 功能特性\n\n- 🔥 **热榜获取** - 获取当前抖音热搜榜 (无需登录)\n- 🔍 **关键词搜索** - 在热榜中匹配关键词 + 获取搜索建议 (无需登录)\n- 💡 **搜索建议** - 获取关键词联想 (无需登录)\n\n## ⚠️ 重要说明\n\n抖音搜索 API 需要登录态，当前版本在**无登录**环境下使用以下替代方案：\n- 热榜 API：直接获取当前热搜话题\n- 搜索建议 API：获取关键词联想\n- 搜索时：先在热榜中匹配，再补充搜索建议\n\n如需完整搜索功能，需要提供抖音登录 Cookie。\n\n## 安装\n\n```bash\ncd <skill-dir>\nnpm install\n```\n\nPlaywright 浏览器（可选，用于完整搜索）:\n```bash\nnpx playwright install chromium\n```\n\n## 使用方法\n\n### Node.js 版本\n\n```bash\n# 搜索关键词\nnode scripts/douyin_scraper.js search \"海鲜\" 20\n\n# 获取热榜\nnode scripts/douyin_scraper.js hot 50\n\n# 获取搜索建议\nnode scripts/douyin_scraper.js suggest \"海鲜售卖\"\n\n# 保存到文件\nnode scripts/douyin_scraper.js search \"海鲜\" 10 --output result.json\n```\n\n### Python 版本\n\n```bash\n# 搜索关键词\npython scripts/scraper.py search --keyword \"海鲜\" --limit 20\n\n# 获取热榜\npython scripts/scraper.py hot --limit 50\n\n# 获取搜索建议\npython scripts/scraper.py suggest --keyword \"海鲜售卖\"\n```\n\n## 自然语言处理指南\n\n当用户用自然语言请求抖音相关数据时，按以下规则解析：\n\n### 搜索意图识别\n\n| 用户说法 | 意图 | 命令 |\n|---------|------|------|\n| 搜索一下海鲜视频 / 找一些海鲜视频 | 搜索 | `search \"海鲜\"` |\n| 看看抖音热榜 / 抖音最近什么火 | 热榜 | `hot` |\n| 海鲜相关的搜索建议 | 建议 | `suggest \"海鲜\"` |\n| 海鲜售卖视频文案 | 搜索 | `search \"海鲜售卖\"` |\n| 分析这个视频链接 xxx | 暂不支持 | 提示用户 |\n\n### 关键词提取\n\n从自然语言中提取关键词：\n- \"搜索一下**海鲜**视频\" → 关键词: `海鲜`\n- \"找一些**海鲜售卖**相关的视频\" → 关键词: `海鲜售卖`\n- \"**小龙虾**怎么做\" → 关键词: `小龙虾`\n- \"最近**美食**领域什么火\" → 关键词: `美食` (搜索热榜匹配)\n\n### 执行流程\n\n1. 解析用户意图 (搜索/热榜/建议)\n2. 提取关键词\n3. 执行对应命令\n4. 格式化展示结果\n\n## 输出数据格式\n\n### 搜索结果\n\n```json\n{\n  \"keyword\": \"海鲜\",\n  \"matched_hot\": [\n    {\n      \"rank\": 1,\n      \"word\": \"海鲜话题\",\n      \"hot_value\": 5000000,\n      \"video_count\": 10\n    }\n  ],\n  \"suggestions\": [\n    { \"word\": \"海鲜小哥\", \"group_id\": \"xxx\" }\n  ],\n  \"hot_list\": [...],\n  \"note\": \"在热榜中找到 1 个匹配话题\"\n}\n```\n\n### 热榜数据\n\n```json\n[\n  {\n    \"rank\": 1,\n    \"word\": \"热搜话题\",\n    \"hot_value\": 12000000,\n    \"video_count\": 6,\n    \"group_id\": \"xxx\",\n    \"sentence_id\": \"xxx\"\n  }\n]\n```\n\n## 注意事项\n\n1. **请求频率** - 避免频繁调用，建议间隔 >5 秒\n2. **数据用途** - 仅供学习和研究\n3. **API 限制** - 搜索 API 需登录，热榜和建议 API 无需登录\n4. **IP 风控** - 异常请求可能导致 IP 被限\n\n## 故障排除\n\n| 问题 | 解决方案 |\n|------|---------|\n| API 返回 2483 | 搜索需要登录，使用 `hot` 或 `suggest` 替代 |\n| 网络超时 | 检查网络连接，重试 |\n| 无匹配结果 | 关键词可能不在热榜，尝试 `suggest` 获取相关词 |\n\nFile v2.0.1:README.md\n\n# 抖音爆款爬虫 Skill v2.0\n\n使用抖音 Web API 获取热榜和搜索数据，**无需登录**。\n\n## 🚀 快速开始\n\n```bash\n# 安装\ncd douyin-scraper && npm install\n\n# 搜索\nnode scripts/douyin_scraper.js search \"海鲜\" 20\n\n# 热榜\nnode scripts/douyin_scraper.js hot 50\n\n# 搜索建议\nnode scripts/douyin_scraper.js suggest \"海鲜售卖\"\n```\n\n## 📝 命令\n\n| 命令 | 说明 | 示例 |\n|------|------|------|\n| `search <关键词> [数量]` | 搜索 (热榜匹配+建议) | `search \"海鲜\" 20` |\n| `hot [数量]` | 获取热榜 | `hot 50` |\n| `suggest <关键词>` | 搜索建议 | `suggest \"海鲜\"` |\n\n选项: `--output <文件>` 保存 JSON\n\n## ⚠️ 说明\n\n抖音搜索 API 需登录，本工具在无登录环境下:\n- 热榜: 直接获取 ✅\n- 搜索建议: 直接获取 ✅  \n- 搜索: 热榜匹配 + 建议补充 ✅\n\n## 📄 许可\n\nMIT\n\nFile v2.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn72jmd20ws94jr0p8b3p24wyn82abgj\",\n  \"slug\": \"douyin-scraper-v2\",\n  \"version\": \"2.0.1\",\n  \"publishedAt\": 1780890571368\n}\n\nFile v2.0.1:skill-card.md\n\n## Description:\n\n爬取抖音热榜和搜索建议数据，支持关键词搜索、热榜获取、搜索建议等功能。无需登录即可使用。\n\nThis skill is for research and development only.\n\n## Publisher:\n\n[terrycarter1985](https://clawhub.ai/user/terrycarter1985)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and operators use this skill to fetch Douyin hot-search topics, match keywords against the hot list, and retrieve search suggestions for trend monitoring or content research.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Setup can download mutable Python, Playwright, browser, mirror-hosted, and Docker assets that are broader than the API-only scraper normally needs.\n\nMitigation: Prefer the API-only Node.js or Python scripts when possible, pin and review dependencies before installation, and run browser or Docker setup only in an isolated environment.\n\nRisk: Frequent Douyin API requests can fail or trigger IP controls.\n\nMitigation: Throttle usage, follow the artifact guidance to keep requests at least five seconds apart, and stop or retry later if responses indicate rate limiting.\n\nRisk: Full Douyin search may require a logged-in browser session or cookie outside the default no-login workflow.\n\nMitigation: Use the hot-list and suggestion modes by default; provide login cookies only when necessary and handle them as sensitive credentials.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/terrycarter1985/skills/douyin-scraper-v2)\n- [Douyin web service](https://www.douyin.com/)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell commands and optional JSON output files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Can save hot-search, search, and suggestion results as JSON when an output file is provided.]\n\n## Skill Version(s):\n\n2.0.1 (source: server release metadata; artifact frontmatter reports 2.0.0)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v2.0.1:examples/search_requests.txt\n\n搜索一下海鲜视频\n看看抖音热榜有什么\n找一些海鲜售卖相关的视频文案\n海鲜相关的搜索建议\n最近美食领域什么火\n小龙虾怎么做\n抖音上什么最火\n\nFile v2.0.1:requirements.txt\n\nplaywright>=1.40.0\n\nArchive v2.0.0: 11 files, 13707 bytes\n\nFiles: examples/search_requests.txt (129b), install_playwright_docker.py (1715b), install.sh (2285b), README.md (4478b), requirements.txt (19b), scripts/douyin_scraper.js (9205b), scripts/run.sh (195b), scripts/scraper.py (12613b), skill-card.md (2386b), SKILL.md (1873b), _meta.json (136b)\n\nFile v2.0.0:SKILL.md\n\n---\nname: douyin-scraper\ndescription: 爬取抖音爆款视频和文案数据。支持自然语言搜索请求，如\"搜索一下海鲜视频\"、\"看看抖音热榜\"。\nversion: 1.1.0\n---\n\n# 抖音爆款爬虫 Skill\n\n## 自然语言路由\n\n当用户用自然语言发出抖音相关请求时，按以下规则解析意图并调用脚本：\n\n| 自然语言示例 | 意图 | 命令 |\n|---|---|---|\n| 搜索一下海鲜视频 / 找一些海鲜售卖相关的视频 | 关键词搜索 | `python scripts/scraper.py search --keyword \"<提取的关键词>\" --limit 10` |\n| 看看抖音热榜 / 抖音热门 | 热榜 | `python scripts/scraper.py hot --limit 20` |\n| 分析这个视频链接 https://... | 单视频解析 | 暂不支持，提示用户 |\n\n**关键词提取规则：** 去掉\"搜索\"、\"找\"、\"视频\"、\"一下\"等虚词，保留核心搜索词。例如：\n- \"搜索一下海鲜视频\" → keyword=\"海鲜\"\n- \"找一些海鲜售卖相关的视频文案\" → keyword=\"海鲜售卖\"\n- \"看看小龙虾的视频\" → keyword=\"小龙虾\"\n\n## 使用方法\n\n### 搜索关键词\n\n```bash\ncd SKILL_DIR && python scripts/scraper.py search --keyword \"海鲜\" --limit 10\n```\n\n### 获取热榜\n\n```bash\ncd SKILL_DIR && python scripts/scraper.py hot --limit 20\n```\n\n### 保存结果\n\n```bash\npython scripts/scraper.py search --keyword \"海鲜\" --limit 20 --output result.json\npython scripts/scraper.py search --keyword \"海鲜\" --limit 20 --format csv --output result.csv\n```\n\n## 输出格式\n\nJSON 数组，每项包含：title, description, author, play_count, like_count, comment_count, share_count, url, tags, publish_time\n\n## 注意事项\n\n- 需要安装 Playwright 和 Chromium：`pip install playwright && playwright install chromium`\n- 如未安装 Playwright，脚本自动降级为 mock 模式返回示例数据\n- 遵守平台规则，合理使用，避免频繁请求\n\nFile v2.0.0:README.md\n\n# 抖音爆款爬虫 Skill\n\n使用 Playwright 自动化浏览器操作，爬取抖音爆款视频和文案数据。\n\n## 📦 安装\n\n### 方式一：一键安装（推荐）\n\n```bash\n# 进入 skill 目录\ncd /root/.openclaw/workspace/skills/douyin-scraper\n\n# 运行安装脚本\n./install.sh\n```\n\n### 方式二：手动安装 - Python 版本\n\n```bash\n# 进入 skill 目录\ncd /root/.openclaw/workspace/skills/douyin-scraper\n\n# 创建虚拟环境\npython3 -m venv venv\n\n# 激活虚拟环境\nsource venv/bin/activate\n\n# 安装依赖\npip install playwright\n\n# 安装浏览器\nplaywright install chromium\n```\n\n### 方式三：Node.js 版本\n\n```bash\n# 进入 skill 目录\ncd /root/.openclaw/workspace/skills/douyin-scraper\n\n# 安装依赖\nnpm install\n\n# 安装浏览器\nnpx playwright install chromium\n```\n\n## 🚀 快速开始\n\n### 方式一：使用启动脚本（推荐）\n\n```bash\n# 搜索关键词\n./run.sh search --keyword \"海鲜\" --limit 10\n\n# 获取热榜\n./run.sh hot --limit 20\n\n# 搜索并保存结果\n./run.sh search --keyword \"海鲜售卖\" --limit 20 --output seafood_videos.json\n```\n\n### 方式二：手动激活虚拟环境\n\n```bash\n# 激活虚拟环境\nsource venv/bin/activate\n\n# 搜索关键词\npython scripts/scraper.py search --keyword \"海鲜\" --limit 10\n\n# 获取热榜\npython scripts/scraper.py hot --limit 20\n\n# 搜索并保存结果\npython scripts/scraper.py search --keyword \"海鲜售卖\" --limit 20 --output seafood_videos.json\n```\n\n### Node.js 版本\n\n```bash\n# 搜索关键词\nnode scripts/douyin_scraper.js search \"海鲜\" 10\n\n# 获取热榜\nnode scripts/douyin_scraper.js hot 20\n\n# 搜索并保存结果\nnode scripts/douyin_scraper.js search \"海鲜售卖\" 20 seafood_sales.json json\n```\n\n## 📝 使用示例\n\n### 示例 1：搜索海鲜售卖视频\n\n```bash\n# Python 版本\npython scripts/scraper.py search --keyword \"海鲜售卖\" --limit 15 --output seafood_sales.json\n\n# Node.js 版本\nnode scripts/douyin_scraper.js search \"海鲜售卖\" 15 seafood_sales.json json\n```\n\n### 示例 2：获取美食热榜\n\n```bash\n# Python 版本\npython scripts/scraper.py hot --category \"美食\" --limit 20 --output food_hot.json\n\n# Node.js 版本\nnode scripts/douyin_scraper.js hot \"美食\" 20 food_hot.json json\n```\n\n### 示例 3：导出 CSV 格式\n\n```bash\n# Python 版本\npython scripts/scraper.py search --keyword \"小龙虾\" --limit 10 --format csv --output crayfish.csv\n\n# Node.js 版本\nnode scripts/douyin_scraper.js search \"小龙虾\" 10 crayfish.csv csv\n```\n\n## 📊 输出数据格式\n\n### JSON 格式\n\n```json\n[\n  {\n    \"title\": \"视频标题\",\n    \"description\": \"视频描述\",\n    \"author\": \"作者昵称\",\n    \"play_count\": 1000000,\n    \"like_count\": 50000,\n    \"comment_count\": 2000,\n    \"share_count\": 1000,\n    \"url\": \"https://www.douyin.com/video/xxx\",\n    \"tags\": [\"标签1\", \"标签2\"],\n    \"publish_time\": \"2026-03-21\"\n  }\n]\n```\n\n### CSV 格式\n\n```csv\ntitle,author,play_count,like_count,comment_count,url,tags\n视频标题,作者昵称,1000000,50000,2000,https://...,标签1|标签2\n```\n\n## ⚙️ 配置选项\n\n### Python 版本\n\n```bash\n# 无头模式（不显示浏览器）\n--headless\n\n# 请求间隔（秒）\n--delay 3.0\n\n# 输出格式\n--format json|csv\n```\n\n### Node.js 版本\n\n在代码中修改配置：\n\n```javascript\nconst scraper = new DouyinScraper({\n    headless: true,  // 无头模式\n    delay: 2000      // 请求间隔（毫秒）\n});\n```\n\n## ⚠️ 注意事项\n\n1. **遵守抖音平台规则** - 合理使用，避免频繁请求\n2. **请求间隔** - 建议在请求之间添加适当延时（默认 2 秒）\n3. **数据用途** - 仅供学习和研究使用\n4. **账号安全** - 不要登录账号，避免风控\n5. **IP 限制** - 注意 IP 被封禁的风险\n\n## 🔧 故障排除\n\n### 问题：浏览器启动失败\n\n**解决方案：**\n```bash\n# Python 版本\nplaywright install chromium\n\n# Node.js 版本\nnpx playwright install chromium\n```\n\n### 问题：页面加载超时\n\n**解决方案：**\n- 增加超时时间\n- 检查网络连接\n- 尝试使用代理\n\n### 问题：找不到元素\n\n**解决方案：**\n- 抖音页面可能已更新\n- 检查选择器是否需要更新\n\n## 📚 更多信息\n\n- [Playwright 文档](https://playwright.dev/)\n- [SKILL.md](./SKILL.md) - 详细使用说明\n\n## 🤝 配合使用的 Skill\n\n- `douyin-download` - 下载抖音视频\n- `video-merger` - 合并视频\n- `eachlabs-video-edit` - 视频编辑\n\n---\n\n**使用前请确保遵守相关法律法规和平台规则！**\n\nFile v2.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn72jmd20ws94jr0p8b3p24wyn82abgj\",\n  \"slug\": \"douyin-scraper-v2\",\n  \"version\": \"2.0.0\",\n  \"publishedAt\": 1780722294124\n}\n\nFile v2.0.0:skill-card.md\n\n## Description: <br>\n爬取抖音爆款视频和文案数据，支持自然语言搜索请求和热榜查询。 <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[terrycarter1985](https://clawhub.ai/user/terrycarter1985) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and content analysts use this skill to route Douyin-related natural language requests into scraper commands for keyword search, hot-list retrieval, and JSON or CSV export. Outputs should be reviewed because fallback paths can produce realistic-looking mock data. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Mock or fallback scraper results can look like real Douyin data. <br>\nMitigation: Treat fallback output as non-factual, label it clearly in downstream work, and verify important results against the live source before use. <br>\nRisk: Scraping social-platform content can collect personal or sensitive data or violate platform rules. <br>\nMitigation: Use conservative limits and delays, follow applicable laws and platform terms, and avoid scraping or storing personal or sensitive data. <br>\nRisk: Installer and runtime paths download Playwright, browser binaries, and optional Node.js dependencies. <br>\nMitigation: Review dependency and browser downloads before execution, run the skill in an isolated environment, and prefer the Python path noted in the security guidance. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/terrycarter1985/douyin-scraper-v2) <br>\n- [Playwright Documentation](https://playwright.dev/) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with shell commands and JSON or CSV scraper outputs] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May write result files when an output path is supplied; mock fallback results are non-factual examples.] <br>\n\n## Skill Version(s): <br>\n2.0.0 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v2.0.0:examples/search_requests.txt\n\n搜索一下海鲜视频\n看看抖音热榜有什么\n找一些海鲜售卖相关的视频文案\n搜索小龙虾视频 --limit 20\n\nFile v2.0.0:requirements.txt\n\nplaywright>=1.40.0\n\nArchive v1.3.0: 11 files, 12912 bytes\n\nFiles: examples/search_requests.txt (276b), install_playwright_docker.py (1715b), install.sh (2285b), README.md (4478b), requirements.txt (19b), scripts/douyin_scraper.js (9099b), scripts/run.sh (195b), scripts/scraper.py (4973b), skill-card.md (2731b), SKILL.md (3126b), _meta.json (136b)\n\nFile v1.3.0:SKILL.md\n\n---\nname: douyin-scraper\ndescription: 爬取抖音爆款视频和文案数据，支持自然语言搜索请求。当用户说\"搜索一下xxx视频\"、\"找一些xxx相关的视频\"、\"看看抖音热榜\"等自然语言请求时，自动提取关键词并执行搜索或热榜查询。\n---\n\n# 抖音爆款爬虫 Skill\n\n## 功能概述\n\n使用 Playwright 自动化浏览器操作，爬取抖音爆款视频和文案数据。**支持自然语言请求**——直接说\"搜索一下海鲜视频\"即可，无需手动拼命令。\n\n## 自然语言请求映射\n\n收到用户消息后，按以下规则提取意图和参数，然后执行对应命令：\n\n| 用户说法示例 | 意图 | 提取参数 | 执行命令 |\n|---|---|---|---|\n| 搜索一下海鲜视频 / 找一些海鲜售卖相关的视频 / 帮我搜海鲜 | search | keyword=\"海鲜\" | `python scripts/scraper.py search --keyword \"海鲜\" --limit 10` |\n| 搜10个海鲜视频 | search | keyword=\"海鲜\", limit=10 | `python scripts/scraper.py search --keyword \"海鲜\" --limit 10` |\n| 看看抖音热榜 / 抖音有什么热门的 | hot | — | `python scripts/scraper.py hot --limit 20` |\n| 美食热榜前5名 | hot | category=\"美食\", limit=5 | `python scripts/scraper.py hot --category \"美食\" --limit 5` |\n\n**提取规则：**\n1. 如果用户消息包含\"搜\"、\"找\"、\"查\"等动词 + 具体主题词 → `search`，主题词作为 `--keyword`\n2. 如果用户消息包含\"热榜\"、\"热门\"、\"排行\"等 → `hot`，若有分类词则作为 `--category`\n3. 用户指定数量时用该数量，否则 search 默认 10、hot 默认 20\n4. 拿到结果后以简洁列表形式展示给用户（标题、作者、播放量、链接）\n\n## 安装依赖\n\n```bash\ncd <skill-dir>\npip install playwright\nplaywright install chromium\n```\n\n> 如果 Playwright 未安装，脚本会自动降级为 mock 模式返回示例数据，不会报错。\n\n## 使用方法\n\n### 自然语言方式（推荐）\n\n直接对 agent 说：\n- \"搜索一下海鲜视频\"\n- \"找一些海鲜售卖相关的视频文案\"\n- \"看看抖音热榜有什么\"\n\nAgent 会自动提取关键词并执行。\n\n### 命令行方式\n\n```bash\n# 搜索\npython scripts/scraper.py search --keyword \"海鲜\" --limit 10\n\n# 热榜\npython scripts/scraper.py hot --limit 20\n\n# 保存结果\npython scripts/scraper.py search --keyword \"海鲜售卖\" --limit 20 --output seafood_videos.json\n```\n\nNode.js 版本：\n\n```bash\nnode scripts/douyin_scraper.js search \"海鲜\" 10\nnode scripts/douyin_scraper.js hot 20\n```\n\n## 输出数据格式\n\n```json\n[\n  {\n    \"title\": \"视频标题\",\n    \"description\": \"视频描述\",\n    \"author\": \"作者昵称\",\n    \"play_count\": 1000000,\n    \"like_count\": 50000,\n    \"comment_count\": 2000,\n    \"share_count\": 1000,\n    \"url\": \"https://www.douyin.com/video/xxx\",\n    \"tags\": [\"标签1\", \"标签2\"],\n    \"publish_time\": \"2026-03-21\"\n  }\n]\n```\n\n## 注意事项\n\n⚠️ **重要提示：**\n1. 遵守抖音平台规则，合理使用，避免频繁请求\n2. 建议请求间隔 ≥ 2 秒\n3. 数据仅供学习和研究使用\n4. 不要登录账号，避免风控\n5. 注意 IP 被封禁的风险\n\nFile v1.3.0:README.md\n\n# 抖音爆款爬虫 Skill\n\n使用 Playwright 自动化浏览器操作，爬取抖音爆款视频和文案数据。\n\n## 📦 安装\n\n### 方式一：一键安装（推荐）\n\n```bash\n# 进入 skill 目录\ncd /root/.openclaw/workspace/skills/douyin-scraper\n\n# 运行安装脚本\n./install.sh\n```\n\n### 方式二：手动安装 - Python 版本\n\n```bash\n# 进入 skill 目录\ncd /root/.openclaw/workspace/skills/douyin-scraper\n\n# 创建虚拟环境\npython3 -m venv venv\n\n# 激活虚拟环境\nsource venv/bin/activate\n\n# 安装依赖\npip install playwright\n\n# 安装浏览器\nplaywright install chromium\n```\n\n### 方式三：Node.js 版本\n\n```bash\n# 进入 skill 目录\ncd /root/.openclaw/workspace/skills/douyin-scraper\n\n# 安装依赖\nnpm install\n\n# 安装浏览器\nnpx playwright install chromium\n```\n\n## 🚀 快速开始\n\n### 方式一：使用启动脚本（推荐）\n\n```bash\n# 搜索关键词\n./run.sh search --keyword \"海鲜\" --limit 10\n\n# 获取热榜\n./run.sh hot --limit 20\n\n# 搜索并保存结果\n./run.sh search --keyword \"海鲜售卖\" --limit 20 --output seafood_videos.json\n```\n\n### 方式二：手动激活虚拟环境\n\n```bash\n# 激活虚拟环境\nsource venv/bin/activate\n\n# 搜索关键词\npython scripts/scraper.py search --keyword \"海鲜\" --limit 10\n\n# 获取热榜\npython scripts/scraper.py hot --limit 20\n\n# 搜索并保存结果\npython scripts/scraper.py search --keyword \"海鲜售卖\" --limit 20 --output seafood_videos.json\n```\n\n### Node.js 版本\n\n```bash\n# 搜索关键词\nnode scripts/douyin_scraper.js search \"海鲜\" 10\n\n# 获取热榜\nnode scripts/douyin_scraper.js hot 20\n\n# 搜索并保存结果\nnode scripts/douyin_scraper.js search \"海鲜售卖\" 20 seafood_sales.json json\n```\n\n## 📝 使用示例\n\n### 示例 1：搜索海鲜售卖视频\n\n```bash\n# Python 版本\npython scripts/scraper.py search --keyword \"海鲜售卖\" --limit 15 --output seafood_sales.json\n\n# Node.js 版本\nnode scripts/douyin_scraper.js search \"海鲜售卖\" 15 seafood_sales.json json\n```\n\n### 示例 2：获取美食热榜\n\n```bash\n# Python 版本\npython scripts/scraper.py hot --category \"美食\" --limit 20 --output food_hot.json\n\n# Node.js 版本\nnode scripts/douyin_scraper.js hot \"美食\" 20 food_hot.json json\n```\n\n### 示例 3：导出 CSV 格式\n\n```bash\n# Python 版本\npython scripts/scraper.py search --keyword \"小龙虾\" --limit 10 --format csv --output crayfish.csv\n\n# Node.js 版本\nnode scripts/douyin_scraper.js search \"小龙虾\" 10 crayfish.csv csv\n```\n\n## 📊 输出数据格式\n\n### JSON 格式\n\n```json\n[\n  {\n    \"title\": \"视频标题\",\n    \"description\": \"视频描述\",\n    \"author\": \"作者昵称\",\n    \"play_count\": 1000000,\n    \"like_count\": 50000,\n    \"comment_count\": 2000,\n    \"share_count\": 1000,\n    \"url\": \"https://www.douyin.com/video/xxx\",\n    \"tags\": [\"标签1\", \"标签2\"],\n    \"publish_time\": \"2026-03-21\"\n  }\n]\n```\n\n### CSV 格式\n\n```csv\ntitle,author,play_count,like_count,comment_count,url,tags\n视频标题,作者昵称,1000000,50000,2000,https://...,标签1|标签2\n```\n\n## ⚙️ 配置选项\n\n### Python 版本\n\n```bash\n# 无头模式（不显示浏览器）\n--headless\n\n# 请求间隔（秒）\n--delay 3.0\n\n# 输出格式\n--format json|csv\n```\n\n### Node.js 版本\n\n在代码中修改配置：\n\n```javascript\nconst scraper = new DouyinScraper({\n    headless: true,  // 无头模式\n    delay: 2000      // 请求间隔（毫秒）\n});\n```\n\n## ⚠️ 注意事项\n\n1. **遵守抖音平台规则** - 合理使用，避免频繁请求\n2. **请求间隔** - 建议在请求之间添加适当延时（默认 2 秒）\n3. **数据用途** - 仅供学习和研究使用\n4. **账号安全** - 不要登录账号，避免风控\n5. **IP 限制** - 注意 IP 被封禁的风险\n\n## 🔧 故障排除\n\n### 问题：浏览器启动失败\n\n**解决方案：**\n```bash\n# Python 版本\nplaywright install chromium\n\n# Node.js 版本\nnpx playwright install chromium\n```\n\n### 问题：页面加载超时\n\n**解决方案：**\n- 增加超时时间\n- 检查网络连接\n- 尝试使用代理\n\n### 问题：找不到元素\n\n**解决方案：**\n- 抖音页面可能已更新\n- 检查选择器是否需要更新\n\n## 📚 更多信息\n\n- [Playwright 文档](https://playwright.dev/)\n- [SKILL.md](./SKILL.md) - 详细使用说明\n\n## 🤝 配合使用的 Skill\n\n- `douyin-download` - 下载抖音视频\n- `video-merger` - 合并视频\n- `eachlabs-video-edit` - 视频编辑\n\n---\n\n**使用前请确保遵守相关法律法规和平台规则！**\n\nFile v1.3.0:_meta.json\n\n{\n  \"ownerId\": \"kn72jmd20ws94jr0p8b3p24wyn82abgj\",\n  \"slug\": \"douyin-scraper-v2\",\n  \"version\": \"1.3.0\",\n  \"publishedAt\": 1780710549360\n}\n\nFile v1.3.0:skill-card.md\n\n## Description: <br>\n爬取抖音爆款视频和文案数据，支持自然语言搜索请求。当用户说\"搜索一下xxx视频\"、\"找一些xxx相关的视频\"、\"看看抖音热榜\"等自然语言请求时，自动提取关键词并执行搜索或热榜查询。 <br>\n\nThis skill is for research and development only. <br>\n\n## Publisher: <br>\n[terrycarter1985](https://clawhub.ai/user/terrycarter1985) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to turn Chinese natural-language requests into Douyin search or hot-list queries and receive concise video result summaries. The release should be treated as research and development use because the artifact limits data use to learning and research. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill advertises live Douyin scraping while current outputs appear to be synthetic examples, not verified Douyin data. <br>\nMitigation: Label results as unverified and do not use them for reporting, business decisions, or research unless the scraper is fixed to parse real pages and clearly label data provenance. <br>\nRisk: Douyin scraping can involve account-linked or personal metadata if users log in or target private data. <br>\nMitigation: Do not log into Douyin, scrape private or account-linked data, or store personal metadata without a lawful basis and retention plan. <br>\nRisk: Automated access to Douyin may trigger platform controls or violate platform rules when used aggressively. <br>\nMitigation: Use conservative request rates, respect platform rules, and stop use if access is blocked or terms cannot be satisfied. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/terrycarter1985/douyin-scraper-v2) <br>\n- [Playwright documentation](https://playwright.dev/) <br>\n- [Artifact README](artifact/README.md) <br>\n- [Artifact SKILL.md](artifact/SKILL.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Shell commands, Files, Configuration] <br>\n**Output Format:** [Markdown-style result summaries with optional JSON or CSV files] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Search defaults to 10 results and hot-list queries default to 20 results; outputs should be labeled as unverified unless real page parsing is fixed.] <br>\n\n## Skill Version(s): <br>\n1.3.0 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.3.0:examples/search_requests.txt\n\n# 自然语言请求示例\n# 这些是用户可以直接对 agent 说的自然语言请求，agent 会自动提取关键词并执行搜索\n搜索一下海鲜视频\n看看抖音热榜有什么\n找一些海鲜售卖相关的视频文案\n搜10个美食视频\n美食热榜前5名\n\nFile v1.3.0:requirements.txt\n\nplaywright>=1.40.0\n\nArchive v1.2.0: 11 files, 12827 bytes\n\nFiles: examples/search_requests.txt (219b), install_playwright_docker.py (1715b), install.sh (2285b), README.md (4478b), requirements.txt (19b), scripts/douyin_scraper.js (8494b), scripts/run.sh (195b), scripts/scraper.py (5068b), skill-card.md (2346b), SKILL.md (3375b), _meta.json (136b)\n\nFile v1.2.0:SKILL.md\n\n---\nname: douyin-scraper\ndescription: 爬取抖音热榜和热点视频数据，使用 OpenClaw browser tool 从抖音网页版抓取真实数据。搜索功能因验证码限制，自动回退到热榜数据。\n---\n\n# 抖音爆款爬虫 Skill\n\n## 功能概述\n\n使用 OpenClaw browser tool 自动化浏览器操作，爬取抖音热榜和热点视频数据。\n\n## ⚠️ 重要限制\n\n- **搜索页面被验证码拦截** — 直接访问 `douyin.com/search/xxx` 会触发验证码，无法绕过\n- **热榜页面稳定可用** — `douyin.com/hot` 可正常访问，包含 50 条热榜 + 10 条热点视频\n- **搜索请求回退到热榜** — 当用户请求搜索时，返回当前热榜数据并说明限制\n\n## 使用方法（OpenClaw browser tool）\n\n### 获取热榜数据\n\n```\n1. browser navigate → https://www.douyin.com/hot\n2. 等待页面加载（~3秒）\n3. browser act evaluate → 执行下方 JS 提取数据\n```\n\n### 提取数据的 JavaScript\n\n#### 提取热点视频\n\n```javascript\n(function(){\n  var results = [];\n  var links = document.querySelectorAll('a[href*=\"/video/\"]');\n  var seen = {};\n  links.forEach(function(el) {\n    var href = el.getAttribute('href') || '';\n    if (seen[href]) return;\n    seen[href] = true;\n    var text = el.innerText.trim();\n    var parts = text.split('\\n').filter(function(s) { return s.trim(); });\n    results.push({\n      title: parts.slice(2).join(' ').substring(0, 100) || text.substring(0, 100),\n      duration: parts[0] || '',\n      play_count: parts[1] || '',\n      url: 'https://www.douyin.com' + href\n    });\n  });\n  return JSON.stringify(results, null, 2);\n})()\n```\n\n#### 提取热榜列表\n\n```javascript\n(function(){\n  var results = [];\n  document.querySelectorAll('a[href*=\"/hot/\"]').forEach(function(el) {\n    var heading = el.querySelector('h3, [class*=\"title\"]');\n    var text = heading ? heading.innerText.trim() : el.innerText.trim().split('\\n')[0];\n    var href = el.getAttribute('href') || '';\n    if (text && text.length > 1) {\n      results.push({\n        title: text,\n        url: 'https://www.douyin.com' + href\n      });\n    }\n  });\n  return JSON.stringify(results, null, 2);\n})()\n```\n\n## 自然语言请求处理\n\n| 用户说 | 意图 | 操作 |\n|--------|------|------|\n| \"搜索一下海鲜视频\" | search | 返回热榜数据 + 说明搜索受限 |\n| \"看看抖音热榜\" | hot | 获取热榜数据 |\n| \"找一些海鲜售卖相关的视频文案\" | search | 返回热榜数据 + 说明搜索受限 |\n| \"抖音有什么热门\" | hot | 获取热榜数据 |\n| \"分析这个视频链接：xxx\" | analyze | 访问指定视频链接，提取信息 |\n\n### 关键词提取规则\n\n- 从自然语言中移除\"搜索\"、\"找\"、\"看看\"、\"视频\"等功能词\n- 保留核心搜索词备用\n- **搜索请求统一回退到热榜**，并告知用户搜索功能因验证码限制暂不可用\n\n## 命令行脚本（备选）\n\n```bash\n# 获取热榜\nnode scripts/douyin_scraper.js hot 20\n\n# 搜索（回退到热榜）\nnode scripts/douyin_scraper.js search \"海鲜\" 10\n```\n\n## 注意事项\n\n1. **遵守抖音平台规则** — 合理使用，避免频繁请求\n2. **请求间隔** — 建议间隔 2-3 秒\n3. **数据用途** — 仅供学习和研究\n4. **验证码** — 搜索页面会触发验证码，这是平台正常防护\n\n---\n\n**使用前请确保遵守相关法律法规和平台规则！**\n\nFile v1.2.0:README.md\n\n# 抖音爆款爬虫 Skill\n\n使用 Playwright 自动化浏览器操作，爬取抖音爆款视频和文案数据。\n\n## 📦 安装\n\n### 方式一：一键安装（推荐）\n\n```bash\n# 进入 skill 目录\ncd /root/.openclaw/workspace/skills/douyin-scraper\n\n# 运行安装脚本\n./install.sh\n```\n\n### 方式二：手动安装 - Python 版本\n\n```bash\n# 进入 skill 目录\ncd /root/.openclaw/workspace/skills/douyin-scraper\n\n# 创建虚拟环境\npython3 -m venv venv\n\n# 激活虚拟环境\nsource venv/bin/activate\n\n# 安装依赖\npip install playwright\n\n# 安装浏览器\nplaywright install chromium\n```\n\n### 方式三：Node.js 版本\n\n```bash\n# 进入 skill 目录\ncd /root/.openclaw/workspace/skills/douyin-scraper\n\n# 安装依赖\nnpm install\n\n# 安装浏览器\nnpx playwright install chromium\n```\n\n## 🚀 快速开始\n\n### 方式一：使用启动脚本（推荐）\n\n```bash\n# 搜索关键词\n./run.sh search --keyword \"海鲜\" --limit 10\n\n# 获取热榜\n./run.sh hot --limit 20\n\n# 搜索并保存结果\n./run.sh search --keyword \"海鲜售卖\" --limit 20 --output seafood_videos.json\n```\n\n### 方式二：手动激活虚拟环境\n\n```bash\n# 激活虚拟环境\nsource venv/bin/activate\n\n# 搜索关键词\npython scripts/scraper.py search --keyword \"海鲜\" --limit 10\n\n# 获取热榜\npython scripts/scraper.py hot --limit 20\n\n# 搜索并保存结果\npython scripts/scraper.py search --keyword \"海鲜售卖\" --limit 20 --output seafood_videos.json\n```\n\n### Node.js 版本\n\n```bash\n# 搜索关键词\nnode scripts/douyin_scraper.js search \"海鲜\" 10\n\n# 获取热榜\nnode scripts/douyin_scraper.js hot 20\n\n# 搜索并保存结果\nnode scripts/douyin_scraper.js search \"海鲜售卖\" 20 seafood_sales.json json\n```\n\n## 📝 使用示例\n\n### 示例 1：搜索海鲜售卖视频\n\n```bash\n# Python 版本\npython scripts/scraper.py search --keyword \"海鲜售卖\" --limit 15 --output seafood_sales.json\n\n# Node.js 版本\nnode scripts/douyin_scraper.js search \"海鲜售卖\" 15 seafood_sales.json json\n```\n\n### 示例 2：获取美食热榜\n\n```bash\n# Python 版本\npython scripts/scraper.py hot --category \"美食\" --limit 20 --output food_hot.json\n\n# Node.js 版本\nnode scripts/douyin_scraper.js hot \"美食\" 20 food_hot.json json\n```\n\n### 示例 3：导出 CSV 格式\n\n```bash\n# Python 版本\npython scripts/scraper.py search --keyword \"小龙虾\" --limit 10 --format csv --output crayfish.csv\n\n# Node.js 版本\nnode scripts/douyin_scraper.js search \"小龙虾\" 10 crayfish.csv csv\n```\n\n## 📊 输出数据格式\n\n### JSON 格式\n\n```json\n[\n  {\n    \"title\": \"视频标题\",\n    \"description\": \"视频描述\",\n    \"author\": \"作者昵称\",\n    \"play_count\": 1000000,\n    \"like_count\": 50000,\n    \"comment_count\": 2000,\n    \"share_count\": 1000,\n    \"url\": \"https://www.douyin.com/video/xxx\",\n    \"tags\": [\"标签1\", \"标签2\"],\n    \"publish_time\": \"2026-03-21\"\n  }\n]\n```\n\n### CSV 格式\n\n```csv\ntitle,author,play_count,like_count,comment_count,url,tags\n视频标题,作者昵称,1000000,50000,2000,https://...,标签1|标签2\n```\n\n## ⚙️ 配置选项\n\n### Python 版本\n\n```bash\n# 无头模式（不显示浏览器）\n--headless\n\n# 请求间隔（秒）\n--delay 3.0\n\n# 输出格式\n--format json|csv\n```\n\n### Node.js 版本\n\n在代码中修改配置：\n\n```javascript\nconst scraper = new DouyinScraper({\n    headless: true,  // 无头模式\n    delay: 2000      // 请求间隔（毫秒）\n});\n```\n\n## ⚠️ 注意事项\n\n1. **遵守抖音平台规则** - 合理使用，避免频繁请求\n2. **请求间隔** - 建议在请求之间添加适当延时（默认 2 秒）\n3. **数据用途** - 仅供学习和研究使用\n4. **账号安全** - 不要登录账号，避免风控\n5. **IP 限制** - 注意 IP 被封禁的风险\n\n## 🔧 故障排除\n\n### 问题：浏览器启动失败\n\n**解决方案：**\n```bash\n# Python 版本\nplaywright install chromium\n\n# Node.js 版本\nnpx playwright install chromium\n```\n\n### 问题：页面加载超时\n\n**解决方案：**\n- 增加超时时间\n- 检查网络连接\n- 尝试使用代理\n\n### 问题：找不到元素\n\n**解决方案：**\n- 抖音页面可能已更新\n- 检查选择器是否需要更新\n\n## 📚 更多信息\n\n- [Playwright 文档](https://playwright.dev/)\n- [SKILL.md](./SKILL.md) - 详细使用说明\n\n## 🤝 配合使用的 Skill\n\n- `douyin-download` - 下载抖音视频\n- `video-merger` - 合并视频\n- `eachlabs-video-edit` - 视频编辑\n\n---\n\n**使用前请确保遵守相关法律法规和平台规则！**\n\nFile v1.2.0:_meta.json\n\n{\n  \"ownerId\": \"kn72jmd20ws94jr0p8b3p24wyn82abgj\",\n  \"slug\": \"douyin-scraper-v2\",\n  \"version\": \"1.2.0\",\n  \"publishedAt\": 1780097874771\n}\n\nFile v1.2.0:skill-card.md\n\n## Description: <br>\n爬取抖音热榜和热点视频数据，使用 OpenClaw browser tool 从抖音网页版抓取真实数据。搜索功能因验证码限制，自动回退到热榜数据。 <br>\n\nThis skill is for research and development only. <br>\n\n## Publisher: <br>\n[terrycarter1985](https://clawhub.ai/user/terrycarter1985) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and content analysts use this skill to retrieve Douyin hot-list and hot-video data, with search-like requests falling back to current hot-list data when Douyin search is blocked by captcha. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The recommended Python path can return made-up video data while presenting it like real scraped results. <br>\nMitigation: Do not treat Python run.sh or scraper.py output as real Douyin data unless the skill is fixed to perform extraction or clearly labels mock and fallback results. <br>\nRisk: Douyin scraping can create platform-compliance, captcha, and access-control risks. <br>\nMitigation: Review before installing, use the Node/browser-tool path only if those risks are acceptable, keep request rates conservative, and follow Douyin platform rules and applicable law. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/terrycarter1985/douyin-scraper-v2) <br>\n- [Skill README](README.md) <br>\n- [Skill instructions](SKILL.md) <br>\n- [Playwright documentation](https://playwright.dev/) <br>\n- [Douyin hot page](https://www.douyin.com/hot) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, JSON, CSV, shell commands, guidance] <br>\n**Output Format:** [Markdown guidance with CLI examples plus optional JSON or CSV data files.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Search requests may fall back to hot-list data when Douyin search is blocked by captcha; review Python CLI output before treating it as real Douyin data.] <br>\n\n## Skill Version(s): <br>\n1.2.0 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.2.0:examples/search_requests.txt\n\n搜索一下海鲜视频\n看看抖音热榜有什么\n找一些海鲜售卖相关的视频文案\n分析这个视频链接：https://v.douyin.com/nkUmQjFzVwk/\n抖音今天有什么热点\n帮我搜一下小龙虾的做法\n\nFile v1.2.0:requirements.txt\n\nplaywright>=1.40.0\n\nArchive v1.1.0: 11 files, 12488 bytes\n\nFiles: examples/search_requests.txt (157b), install_playwright_docker.py (1715b), install.sh (2285b), README.md (4478b), requirements.txt (19b), scripts/douyin_scraper.js (9205b), scripts/run.sh (195b), scripts/scraper.py (5504b), skill-card.md (2251b), SKILL.md (2779b), _meta.json (136b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: douyin-scraper\ndescription: 爬取抖音爆款视频和文案数据，支持搜索关键词、获取热榜、提取视频信息。Agent 收到自然语言搜索请求时使用此 skill。\n---\n\n# 抖音爆款爬虫 Skill\n\n## 触发条件\n\n当用户请求涉及以下内容时，读取此 SKILL.md 并按说明执行：\n- 搜索抖音视频（如\"搜索一下海鲜视频\"、\"帮我找找做菜的抖音\"）\n- 获取抖音热榜\n- 抖音相关数据抓取\n\n## 自然语言 → 命令 转换规则\n\n**关键：** 用户不会给你 `--keyword` 参数。你需要从自然语言中提取搜索关键词。\n\n### 转换逻辑\n\n| 用户说法 | 提取的关键词 | 执行命令 |\n|---|---|---|\n| \"搜索一下海鲜视频\" | `海鲜` | `python3 scripts/scraper.py search --keyword \"海鲜\" --limit 10` |\n| \"帮我找找做菜的抖音\" | `做菜` | `python3 scripts/scraper.py search --keyword \"做菜\" --limit 10` |\n| \"看看小龙虾的视频\" | `小龙虾` | `python3 scripts/scraper.py search --keyword \"小龙虾\" --limit 10` |\n| \"抖音海鲜售卖热门\" | `海鲜售卖` | `python3 scripts/scraper.py search --keyword \"海鲜售卖\" --limit 10` |\n| \"抖音热榜\" | — | `python3 scripts/scraper.py hot --limit 20` |\n| \"美食热榜\" | `美食` | `python3 scripts/scraper.py hot --category \"美食\" --limit 20` |\n\n### 提取原则\n\n1. **去掉修饰词**：\"搜索一下\"、\"帮我找找\"、\"看看\"、\"视频\"、\"抖音\" 等不是关键词\n2. **保留核心主题**：\"海鲜\"、\"做菜\"、\"小龙虾\"、\"海鲜售卖\" 才是搜索关键词\n3. **保持简洁**：优先用 2-4 字的精炼关键词，不要整句丢进去\n4. **默认 limit=10**，除非用户指定数量\n\n## 执行方式\n\n在 skill 目录下运行：\n\n```bash\ncd /root/.openclaw/workspace/skills/douyin-scraper\n\n# 搜索\npython3 scripts/scraper.py search --keyword \"<关键词>\" --limit 10\n\n# 热榜\npython3 scripts/scraper.py hot --limit 20\n\n# 带分类的热榜\npython3 scripts/scraper.py hot --category \"<分类>\" --limit 20\n\n# 保存结果\npython3 scripts/scraper.py search --keyword \"<关键词>\" --limit 10 --output result.json\n```\n\n## 输出格式\n\n每条结果包含：序号、标题、作者、链接。JSON 输出包含完整字段（title, description, author, play_count, like_count, comment_count, share_count, url, tags, publish_time）。\n\n## 回复格式\n\n执行完成后，将结果整理成简洁的中文列表回复用户，例如：\n\n> 搜索\"海鲜\"结果：\n> 1. 海鲜相关视频 1 | 作者1 | 🔗链接\n> 2. 海鲜相关视频 2 | 作者2 | 🔗链接\n> ...\n\n## 注意事项\n\n- 如果 Playwright 浏览器未安装，脚本会自动降级返回示例数据并提示\n- 脚本不会因浏览器问题而崩溃，始终能返回结果\n- 合理使用，避免频繁请求\n\nFile v1.1.0:README.md\n\n# 抖音爆款爬虫 Skill\n\n使用 Playwright 自动化浏览器操作，爬取抖音爆款视频和文案数据。\n\n## 📦 安装\n\n### 方式一：一键安装（推荐）\n\n```bash\n# 进入 skill 目录\ncd /root/.openclaw/workspace/skills/douyin-scraper\n\n# 运行安装脚本\n./install.sh\n```\n\n### 方式二：手动安装 - Python 版本\n\n```bash\n# 进入 skill 目录\ncd /root/.openclaw/workspace/skills/douyin-scraper\n\n# 创建虚拟环境\npython3 -m venv venv\n\n# 激活虚拟环境\nsource venv/bin/activate\n\n# 安装依赖\npip install playwright\n\n# 安装浏览器\nplaywright install chromium\n```\n\n### 方式三：Node.js 版本\n\n```bash\n# 进入 skill 目录\ncd /root/.openclaw/workspace/skills/douyin-scraper\n\n# 安装依赖\nnpm install\n\n# 安装浏览器\nnpx playwright install chromium\n```\n\n## 🚀 快速开始\n\n### 方式一：使用启动脚本（推荐）\n\n```bash\n# 搜索关键词\n./run.sh search --keyword \"海鲜\" --limit 10\n\n# 获取热榜\n./run.sh hot --limit 20\n\n# 搜索并保存结果\n./run.sh search --keyword \"海鲜售卖\" --limit 20 --output seafood_videos.json\n```\n\n### 方式二：手动激活虚拟环境\n\n```bash\n# 激活虚拟环境\nsource venv/bin/activate\n\n# 搜索关键词\npython scripts/scraper.py search --keyword \"海鲜\" --limit 10\n\n# 获取热榜\npython scripts/scraper.py hot --limit 20\n\n# 搜索并保存结果\npython scripts/scraper.py search --keyword \"海鲜售卖\" --limit 20 --output seafood_videos.json\n```\n\n### Node.js 版本\n\n```bash\n# 搜索关键词\nnode scripts/douyin_scraper.js search \"海鲜\" 10\n\n# 获取热榜\nnode scripts/douyin_scraper.js hot 20\n\n# 搜索并保存结果\nnode scripts/douyin_scraper.js search \"海鲜售卖\" 20 seafood_sales.json json\n```\n\n## 📝 使用示例\n\n### 示例 1：搜索海鲜售卖视频\n\n```bash\n# Python 版本\npython scripts/scraper.py search --keyword \"海鲜售卖\" --limit 15 --output seafood_sales.json\n\n# Node.js 版本\nnode scripts/douyin_scraper.js search \"海鲜售卖\" 15 seafood_sales.json json\n```\n\n### 示例 2：获取美食热榜\n\n```bash\n# Python 版本\npython scripts/scraper.py hot --category \"美食\" --limit 20 --output food_hot.json\n\n# Node.js 版本\nnode scripts/douyin_scraper.js hot \"美食\" 20 food_hot.json json\n```\n\n### 示例 3：导出 CSV 格式\n\n```bash\n# Python 版本\npython scripts/scraper.py search --keyword \"小龙虾\" --limit 10 --format csv --output crayfish.csv\n\n# Node.js 版本\nnode scripts/douyin_scraper.js search \"小龙虾\" 10 crayfish.csv csv\n```\n\n## 📊 输出数据格式\n\n### JSON 格式\n\n```json\n[\n  {\n    \"title\": \"视频标题\",\n    \"description\": \"视频描述\",\n    \"author\": \"作者昵称\",\n    \"play_count\": 1000000,\n    \"like_count\": 50000,\n    \"comment_count\": 2000,\n    \"share_count\": 1000,\n    \"url\": \"https://www.douyin.com/video/xxx\",\n    \"tags\": [\"标签1\", \"标签2\"],\n    \"publish_time\": \"2026-03-21\"\n  }\n]\n```\n\n### CSV 格式\n\n```csv\ntitle,author,play_count,like_count,comment_count,url,tags\n视频标题,作者昵称,1000000,50000,2000,https://...,标签1|标签2\n```\n\n## ⚙️ 配置选项\n\n### Python 版本\n\n```bash\n# 无头模式（不显示浏览器）\n--headless\n\n# 请求间隔（秒）\n--delay 3.0\n\n# 输出格式\n--format json|csv\n```\n\n### Node.js 版本\n\n在代码中修改配置：\n\n```javascript\nconst scraper = new DouyinScraper({\n    headless: true,  // 无头模式\n    delay: 2000      // 请求间隔（毫秒）\n});\n```\n\n## ⚠️ 注意事项\n\n1. **遵守抖音平台规则** - 合理使用，避免频繁请求\n2. **请求间隔** - 建议在请求之间添加适当延时（默认 2 秒）\n3. **数据用途** - 仅供学习和研究使用\n4. **账号安全** - 不要登录账号，避免风控\n5. **IP 限制** - 注意 IP 被封禁的风险\n\n## 🔧 故障排除\n\n### 问题：浏览器启动失败\n\n**解决方案：**\n```bash\n# Python 版本\nplaywright install chromium\n\n# Node.js 版本\nnpx playwright install chromium\n```\n\n### 问题：页面加载超时\n\n**解决方案：**\n- 增加超时时间\n- 检查网络连接\n- 尝试使用代理\n\n### 问题：找不到元素\n\n**解决方案：**\n- 抖音页面可能已更新\n- 检查选择器是否需要更新\n\n## 📚 更多信息\n\n- [Playwright 文档](https://playwright.dev/)\n- [SKILL.md](./SKILL.md) - 详细使用说明\n\n## 🤝 配合使用的 Skill\n\n- `douyin-download` - 下载抖音视频\n- `video-merger` - 合并视频\n- `eachlabs-video-edit` - 视频编辑\n\n---\n\n**使用前请确保遵守相关法律法规和平台规则！**\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn72jmd20ws94jr0p8b3p24wyn82abgj\",\n  \"slug\": \"douyin-scraper-v2\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1779989741303\n}\n\nFile v1.1.0:skill-card.md\n\n## Description: <br>\n使用 Playwright 辅助搜索抖音视频和热榜，并将视频标题、作者、链接和互动指标整理为列表或 JSON/CSV 导出。 <br>\n\nThis skill is for research and development only. <br>\n\n## Publisher: <br>\n[terrycarter1985](https://clawhub.ai/user/terrycarter1985) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and agents use this skill to turn Chinese-language Douyin search or hot-list requests into scraper commands and summarize returned video metadata. It can also write JSON or CSV exports for downstream review. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The security review found that scripts may return generated example results while presenting them as scraped Douyin data. <br>\nMitigation: Label fallback data clearly and do not rely on outputs as real Douyin data unless the implementation is changed to parse actual page content. <br>\nRisk: Export paths are not constrained. <br>\nMitigation: Write exports only to a safe workspace path and review requested output paths before execution. <br>\nRisk: Scraping Douyin can trigger platform controls or privacy obligations. <br>\nMitigation: Avoid logging into Douyin, use reasonable request delays, and follow platform rules and applicable privacy requirements for collected metadata. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/terrycarter1985/douyin-scraper-v2) <br>\n- [Playwright documentation](https://playwright.dev/) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, files] <br>\n**Output Format:** [Chinese Markdown summaries, shell commands, JSON, or CSV files] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May return generated fallback data when browser automation is unavailable or fails.] <br>\n\n## Skill Version(s): <br>\n1.1.0 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nFile v1.1.0:examples/search_requests.txt\n\n搜索一下海鲜视频\n看看抖音热榜有什么\n找一些海鲜售卖相关的视频文案\n分析这个视频链接：https://v.douyin.com/nkUmQjFzVwk/\n\nFile v1.1.0:requirements.txt\n\nplaywright>=1.40.0\n\nArchive v1.0.0: 8 files, 16747 bytes\n\nFiles: _meta.json (136b), CHANGELOG.md (1810b), CLAUDE.md (2076b), README.md (2496b), scripts/full_workflow.py (20338b), scripts/login.py (2766b), skill-card.md (2496b), SKILL.md (4601b)\n\nFile v1.0.0:SKILL.md\n\n---\r\nname: douyin-scraper\r\nversion: 1.1.0\r\ndescription: 抖音图文笔记采集工具。支持自然语言搜索（如\"搜索一下海鲜视频\"），自动提取关键词 → 搜索 → 筛选「图文·一周内」→ Playwright 截图（绕过反爬虫）→ Baidu OCR 识别图片文字 → 输出 Markdown 报告（含热度评分）。当用户提到\"抖音搜索\"、\"抖音图文采集\"、\"抖音笔记抓取\"、\"抖音爬虫\"、\"抖音内容采集\"、\"搜一下xxx视频/笔记\"等场景时加载此技能。\r\n---\r\n\r\n# douyin-scraper\r\n\r\n抖音图文笔记采集工具 —— 一条命令完成：搜索 → 筛选图文 → 截图 → OCR → Markdown 报告。\r\n\r\n## ⚠️ 前置配置\r\n\r\n### 1. 安装依赖\r\n\r\n```bash\r\npip install playwright requests python-dotenv\r\npython -m playwright install chromium\r\n```\r\n\r\n### 2. 配置 Baidu PaddleOCR Token\r\n\r\n在技能目录创建 `.env`：\r\n\r\n```\r\nBAIDU_PADDLEOCR_TOKEN=你的token\r\n```\r\n\r\n获取 Token：访问 [百度 AI Studio](https://aistudio.baidu.com/paddleocr)，免费注册，每天 1 万次免费调用。\r\n\r\n### 3. 登录抖音（只需一次）\r\n\r\n```bash\r\npython <skill_path>/scripts/login.py\r\n```\r\n\r\n浏览器打开抖音，扫码登录后关闭。登录状态自动保存，后续无需重复操作。\r\n\r\n---\r\n\r\n## 🗣️ 自然语言搜索（Agent 入口）\r\n\r\n当用户用自然语言提出搜索需求时，**先提取关键词，再调用脚本**。\r\n\r\n### 提取规则\r\n\r\n1. 从用户输入中提取核心搜索词（去掉\"搜索一下\"、\"帮我找\"、\"看看\"等助词）\r\n2. 如果用户指定了数量，提取为 `--count`；否则用默认值\r\n3. 如果用户说\"只要图片\"或\"不用识别文字\"，加 `--no-ocr`\r\n4. 关键词尽量简短精炼（2-6字），不要把整个句子当关键词\r\n\r\n### 示例\r\n\r\n| 用户输入 | 提取关键词 | 命令 |\r\n|----------|-----------|------|\r\n| 搜索一下海鲜视频 | 海鲜 | `--keyword \"海鲜\"` |\r\n| 帮我找找韩国医美相关内容 | 韩国医美 | `--keyword \"韩国医美\"` |\r\n| 抖音上最近有什么减肥餐笔记 | 减肥餐 | `--keyword \"减肥餐\"` |\r\n| 看看咖啡相关的图文，要5条 | 咖啡 | `--keyword \"咖啡\" --count 5` |\r\n| 搜一下宠物猫，不用OCR | 宠物猫 | `--keyword \"宠物猫\" --no-ocr` |\r\n| 抖音搜索穿搭技巧 | 穿搭技巧 | `--keyword \"穿搭技巧\"` |\r\n\r\n### Agent 执行步骤\r\n\r\n1. 从用户输入提取关键词\r\n2. 运行命令：\r\n```bash\r\npython <skill_path>/scripts/full_workflow.py --keyword \"<提取的关键词>\" [--count N] [--no-ocr]\r\n```\r\n3. 脚本完成后，读取 `output/` 下生成的 Markdown 报告\r\n4. 向用户摘要报告内容（笔记数量、热度最高的几条、关键发现）\r\n\r\n---\r\n\r\n## 🔧 直接命令行使用\r\n\r\n```bash\r\n# 采集 10 篇图文笔记（含 OCR）\r\npython <skill_path>/scripts/full_workflow.py --keyword \"韩国医美\"\r\n\r\n# 指定数量\r\npython <skill_path>/scripts/full_workflow.py --keyword \"减肥餐\" --count 5\r\n\r\n# 跳过 OCR（仅截图）\r\npython <skill_path>/scripts/full_workflow.py --keyword \"咖啡\" --no-ocr\r\n```\r\n\r\n| 参数 | 说明 | 默认值 |\r\n|------|------|--------|\r\n| `--keyword` | 搜索关键词 | 必填 |\r\n| `--count` | 采集笔记数量 | `5` |\r\n| `--no-ocr` | 跳过 OCR | 关闭 |\r\n\r\n---\r\n\r\n## 输出\r\n\r\n报告保存至 `output/notes_{keyword}_{timestamp}.md`，图片保存至 `data/images/`。\r\n\r\n每篇笔记包含：\r\n\r\n- 🔥 热度分数（点赞数 / 发布天数）及计算公式\r\n- 👍 点赞数、发布时间、作者、原文链接\r\n- 📝 原文描述\r\n- 🔍 OCR 识别的图片文字（支持多图）\r\n- 🖼️ 本地截图路径\r\n\r\n---\r\n\r\n## 技术特点\r\n\r\n- **Playwright 截图**：通过 `element.screenshot()` 截取内容图，绕过抖音图片 URL 反爬虫\r\n- **图文过滤**：自动识别并跳过视频，只采集「图文」类型笔记\r\n- **OCR 噪音过滤**：自动去除截图中的抖音导航栏文字（精选/推荐/关注 等）\r\n- **多图支持**：一篇图文多张图片逐张截图 + OCR，合并识别结果\r\n- **反检测**：有头浏览器（headless=False）+ 拟人操作节奏，避免触发验证码\r\n- **热度公式**：`likes / days_ago`，越新越热排越前\r\n\r\n---\r\n\r\n## 目录结构\r\n\r\n```\r\ndouyin-scraper/\r\n├── scripts/\r\n│   ├── full_workflow.py   # 主流水线\r\n│   └── login.py           # 登录脚本\r\n├── data/\r\n│   └── images/            # 截图\r\n├── output/                # Markdown 报告\r\n├── profile/               # 浏览器登录状态\r\n└── .env                   # Token 配置\r\n```\n\nFile v1.0.0:README.md\n\n# douyin-scraper\r\n\r\n抖音图文笔记采集工具 — 支持自然语言搜索，关键词搜索，自动筛选「图文」类型，截图并 OCR 识别图片文字，输出 Markdown 报告。\r\n\r\n## 自然语言搜索\r\n\r\n支持直接用自然语言搜索，如\"搜索一下海鲜视频\"、\"帮我找韩国医美笔记\"，Agent 会自动提取关键词并执行采集。\r\n\r\n## 功能\r\n\r\n- 关键词搜索 + 自动筛选「图文 · 一周内」\r\n- Playwright 浏览器截图（绕过抖音 URL 反爬虫）\r\n- Baidu PaddleOCR 识别图片中的中英文\r\n- OCR 噪音过滤（去除截图中的抖音导航栏文字）\r\n- 热度评分（点赞数 / 发布天数）\r\n- 输出带目录的 Markdown 报告\r\n\r\n## 环境要求\r\n\r\n- Python 3.9+\r\n- Playwright（Chromium）\r\n\r\n```bash\r\npip install playwright python-dotenv requests\r\nplaywright install chromium\r\n```\r\n\r\n## 配置\r\n\r\n在项目根目录创建 `.env`：\r\n\r\n```\r\nBAIDU_PADDLEOCR_TOKEN=你的token\r\n```\r\n\r\n> 获取 Token：[百度 PaddleOCR API](https://aistudio.baidu.com/)\r\n\r\n## 使用\r\n\r\n### 1. 登录\r\n\r\n```bash\r\npython scripts/login.py\r\n```\r\n\r\n浏览器会打开抖音，扫码登录后关闭即可。登录状态保存在 `profile/`，后续无需重复登录。\r\n\r\n### 2. 采集\r\n\r\n```bash\r\npython scripts/full_workflow.py --keyword \"韩国医美\" --count 10\r\n```\r\n\r\n| 参数 | 说明 | 默认值 |\r\n|------|------|--------|\r\n| `--keyword` | 搜索关键词 | 必填 |\r\n| `--count` | 采集笔记数量 | `5` |\r\n| `--no-ocr` | 跳过 OCR（只截图） | 关闭 |\r\n\r\n### 输出\r\n\r\n报告保存在 `output/notes_{keyword}_{timestamp}.md`，图片保存在 `data/images/`。\r\n\r\n报告包含：\r\n- 每篇笔记的标题、作者、点赞数、发布时间、链接\r\n- 热度评分排序依据\r\n- OCR 识别的图片文字\r\n- 图片本地路径\r\n\r\n## 项目结构\r\n\r\n```\r\ndouyin-scraper/\r\n├── scripts/\r\n│   ├── full_workflow.py   # 主流水线（搜索→截图→OCR→报告）\r\n│   └── login.py           # 登录并保存 session\r\n├── data/\r\n│   └── images/            # 截图保存目录\r\n├── output/                # Markdown 报告输出目录\r\n├── profile/               # 浏览器登录状态\r\n└── .env                   # Token 配置\r\n```\r\n\r\n## 注意事项\r\n\r\n- 浏览器以有头模式运行（headless=False），避免被检测为机器人\r\n- 仅采集「图文」类型笔记，视频会自动过滤\r\n- OCR 对纯图片（无文字）效果有限，属正常现象\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn72jmd20ws94jr0p8b3p24wyn82abgj\",\n  \"slug\": \"douyin-scraper-v2\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1778348505660\n}\n\nFile v1.0.0:CHANGELOG.md\n\n# Changelog\r\n\r\n## [1.1.0] - 2026-05-10\r\n\r\n### Added\r\n- 自然语言搜索支持：Agent 可从\"搜索一下海鲜视频\"等自然语言中提取关键词，自动执行采集\r\n- SKILL.md 新增 Agent 入口指令（提取规则 + 示例表 + 执行步骤）\r\n- README.md 新增自然语言搜索说明\r\n- 触发词扩展：增加\"抖音搜索\"、\"搜一下xxx\"等场景\r\n\r\n## [Unreleased]\r\n\r\n## [0.2.0] - 2026-03-26\r\n\r\n### Changed\r\n- 项目重命名：`douyin-creator` → `douyin-scraper`\r\n- 移除二创（LLM 改写）功能，专注图文采集\r\n- 更新 CLAUDE.md 反映新定位\r\n\r\n### Removed\r\n- `scripts/rewrite.py` — LLM 二创脚本\r\n- `scripts/llm_router.py` — LLM 统一调用模块\r\n- `scripts/llm_config.json` — LLM 配置文件\r\n- `scripts/ocr.py` — 独立 OCR 脚本（功能已内置于 full_workflow.py）\r\n- `scripts/scrape.py` / `scrape_fixed.py` / `scrape_with_images.py` / `scrape_and_ocr.py` — 旧版采集脚本\r\n- `scripts/db.py` — SQLite 模块（已废弃，full_workflow.py 不使用数据库）\r\n- `scripts/debug_*.py` / `scripts/test_*.py` 及其他调试脚本\r\n- `references/styles.md` — 二创风格说明\r\n\r\n## [0.1.0] - 2026-03-25\r\n\r\n### Added\r\n- `scripts/full_workflow.py` — 一体化流水线：搜索 → 筛选图文 → 截图 → OCR → Markdown 报告\r\n- Playwright `element.screenshot()` 截图，绕过抖音 URL 反爬虫\r\n- Baidu PaddleOCR API 集成（`BAIDU_PADDLEOCR_TOKEN`）\r\n- OCR 噪音过滤：`clean_ocr_text()` 去除抖音导航栏文字（精选/推荐/关注等及其变体）\r\n- 图文过滤：仅采集 `waterfall_item_*` 中含「图文」标签的笔记，排除视频\r\n- 「图文 · 一周内」双重筛选\r\n- 热度评分：`likes / days_ago`\r\n- 多图笔记支持（逐张截图 + OCR）\r\n- 图片去重（按 src 前缀）\n\nFile v1.0.0:CLAUDE.md\n\n# CLAUDE.md\r\n\r\nThis file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.\r\n\r\n## What This Is\r\n\r\n**douyin-scraper** — a skill for collecting high-engagement Douyin (TikTok China) image-text (图文) notes, capturing images via Playwright, and running OCR to extract text. Output is a Markdown report per keyword.\r\n\r\n## Pipeline Commands\r\n\r\n```bash\r\n# 1. Login (browser opens for QR scan)\r\npython scripts/login.py\r\n\r\n# 2. Scrape + OCR in one step\r\npython scripts/full_workflow.py --keyword \"韩国医美\" --count 10\r\npython scripts/full_workflow.py --keyword \"减肥餐\" --count 5 --no-ocr  # skip OCR\r\n```\r\n\r\n## Architecture\r\n\r\n**Data flow:** `full_workflow.py` → search Douyin → filter 图文 + 一周内 → collect note IDs → detail page → Playwright screenshot → Baidu PaddleOCR → clean OCR text → `output/*.md`\r\n\r\n**No database** — results are written directly to Markdown reports in `output/`.\r\n\r\n**Key files:**\r\n- `scripts/full_workflow.py` — single-script pipeline (login state, scrape, screenshot, OCR, report)\r\n- `scripts/login.py` — opens browser for QR scan, persists session to `profile/`\r\n- `scripts/db.py` — legacy SQLite module, kept for reference but not used by full_workflow.py\r\n\r\n**OCR:**\r\n- Provider: Baidu PaddleOCR API (`BAIDU_PADDLEOCR_TOKEN` in `.env`)\r\n- Images captured via `element.screenshot()` (bypasses Douyin URL anti-scraping)\r\n- Noise filter: `clean_ocr_text()` strips Douyin nav bar text (抖音/精选/推荐/关注 etc.)\r\n\r\n**Output:** Markdown files named `notes_{keyword}_{timestamp}.md` in `output/`\r\n\r\n## Important Notes\r\n\r\n- Browser runs headless=False to avoid bot detection; login state persisted in `profile/`\r\n- Images saved to `data/images/` as `{keyword}_{note_idx}_{img_idx}.png`\r\n- 图文 filter: only collects `waterfall_item_*` elements whose `textContent` contains \"图文\"\r\n- Hot score formula: `likes / days_ago` (small days_ago → very recent posts rank high)\r\n- Windows UTF-8 console fix (`sys.stdout.reconfigure`) applied at top of full_workflow.py\n\nFile v1.0.0:skill-card.md\n\n## Description: <br>\n抖音图文笔记采集工具，支持自然语言关键词搜索、图文筛选、Playwright 截图、Baidu OCR 识别，并输出含热度评分的 Markdown 报告。 <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[terrycarter1985](https://clawhub.ai/user/terrycarter1985) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers, analysts, and content operators use this skill to collect Douyin image-text notes for a keyword, extract visible text from screenshots, and review ranked findings in a Markdown report. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can reuse a logged-in browser profile while scraping Douyin. <br>\nMitigation: Use a dedicated account, avoid private or sensitive content, and clear the saved profile when finished. <br>\nRisk: The skill uses browser automation patterns intended to reduce bot detection. <br>\nMitigation: Run it only where automated collection is authorized and review platform terms before use. <br>\nRisk: Screenshots may be uploaded to an OCR service when OCR is enabled. <br>\nMitigation: Verify the OCR endpoint and token before running, and use --no-ocr when external OCR is unnecessary. <br>\nRisk: The skill saves screenshots and Markdown reports locally. <br>\nMitigation: Inspect and remove generated files from output/ and data/images/ when they contain sensitive or unnecessary content. <br>\n\n\n## Reference(s): <br>\n- [ClawHub release page](https://clawhub.ai/terrycarter1985/douyin-scraper-v2) <br>\n- [Baidu PaddleOCR API](https://aistudio.baidu.com/paddleocr) <br>\n- [Douyin web](https://www.douyin.com) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown report plus natural-language summary and shell command snippets] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Writes reports under output/ and screenshots under data/images/; OCR can be disabled with --no-ocr.] <br>\n\n## Skill Version(s): <br>\n1.0.0 (source: server release metadata; artifact frontmatter and changelog report 1.1.0) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>","readmeExcerpt":"Skill: 抖音爆款爬虫 v2 Owner: terrycarter1985 Summary: 爬取抖音热榜和搜索建议数据，支持关键词搜索、热榜获取、搜索建议等功能。无需登录即可使用。 Tags: latest:2.0.1 Version history: v2.0.1 | 2026-06-08T03:49:31.368Z | user v2.0.1: 重写为真实API, 支持热榜/搜索建议/关键词搜索, 无需登录, 支持自然语言入口 v2.0.0 | 2026-06-06T05:04:54.124Z | user 重大更新: 移除prompt注入; 新增自然语言路由; 重写爬虫支持真实抓取+mock降级 v1.3.0 | 2026-06-06T01:49:09.360Z | user 支持自然语言搜索请求；浏览器不可用时自动降级为 mock 数据；修复 Playwright 未安装时的崩溃问题 v1.2.0 | 2026-0","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"cd <skill-dir>\nnpm install"},{"language":"bash","snippet":"npx playwright install chromium"},{"language":"bash","snippet":"# 搜索关键词\nnode scripts/douyin_scraper.js search \"海鲜\" 20\n\n# 获取热榜\nnode scripts/douyin_scraper.js hot 50\n\n# 获取搜索建议\nnode scripts/douyin_scraper.js suggest \"海鲜售卖\"\n\n# 保存到文件\nnode scripts/douyin_scraper.js search \"海鲜\" 10 --output result.json"},{"language":"bash","snippet":"# 搜索关键词\npython scripts/scraper.py search --keyword \"海鲜\" --limit 20\n\n# 获取热榜\npython scripts/scraper.py hot --limit 50\n\n# 获取搜索建议\npython scripts/scraper.py suggest --keyword \"海鲜售卖\""},{"language":"json","snippet":"{\n  \"keyword\": \"海鲜\",\n  \"matched_hot\": [\n    {\n      \"rank\": 1,\n      \"word\": \"海鲜话题\",\n      \"hot_value\": 5000000,\n      \"video_count\": 10\n    }\n  ],\n  \"suggestions\": [\n    { \"word\": \"海鲜小哥\", \"group_id\": \"xxx\" }\n  ],\n  \"hot_list\": [...],\n  \"note\": \"在热榜中找到 1 个匹配话题\"\n}"},{"language":"json","snippet":"[\n  {\n    \"rank\": 1,\n    \"word\": \"热搜话题\",\n    \"hot_value\": 12000000,\n    \"video_count\": 6,\n    \"group_id\": \"xxx\",\n    \"sentence_id\": \"xxx\"\n  }\n]"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: douyin-scraper\ndescription: 爬取抖音热榜和搜索建议数据，支持关键词搜索、热榜获取、搜索建议等功能。无需登录即可使用。\nversion: 2.0.0\n---\n\n# 抖音爆款爬虫 Skill\n\n## 功能概述\n\n获取抖音热榜和搜索数据。当前版本使用抖音 Web API，**无需登录**。\n\n## 功能特性\n\n- 🔥 **热榜获取** - 获取当前抖音热搜榜 (无需登录)\n- 🔍 **关键词搜索** - 在热榜中匹配关键词 + 获取搜索建议 (无需登录)\n- 💡 **搜索建议** - 获取关键词联想 (无需登录)\n\n## ⚠️ 重要说明\n\n抖音搜索 API 需要登录态，当前版本在**无登录**环境下使用以下替代方案：\n- 热榜 API：直接获取当前热搜话题\n- 搜索建议 API：获取关键词联想\n- 搜索时：先在热榜中匹配，再补充搜索建议\n\n如需完整搜索功能，需要提供抖音登录 Cookie。\n\n## 安装\n\n```bash\ncd <skill-dir>\nnpm install\n```\n\nPlaywright 浏览器（可选，用于完整搜索）:\n```bash\nnpx playwright install chromium\n```\n\n## 使用方法\n\n### Node.js 版本\n\n```bash\n# 搜索关键词\nnode scripts/douyin_scraper.js search \"海鲜\" 20\n\n# 获取热榜\nnode scripts/douyin_scraper.js hot 50\n\n# 获取搜索建议\nnode scripts/douyin_scraper.js suggest \"海鲜售卖\"\n\n# 保存到文件\nnode scripts/douyin_scraper.js search \"海鲜\" 10 --output result.json\n```\n\n### Python 版本\n\n```bash\n# 搜索关键词\npython scripts/scraper.py search --keyword \"海鲜\" --limit 20\n\n# 获取热榜\npython scripts/scraper.py hot --limit 50\n\n# 获取搜索建议\npython scripts/scraper.py suggest --keyword \"海鲜售卖\"\n```\n\n## 自然语言处理指南\n\n当用户用自然语言请求抖音相关数据时，按以下规则解析：\n\n### 搜索意图识别\n\n| 用户说法 | 意图 | 命令 |\n|---------|------|------|\n| 搜索一下海鲜视频 / 找一些海鲜视频 | 搜索 | `search \"海鲜\"` |\n| 看看抖音热榜 / 抖音最近什么火 | 热榜 | `hot` |\n| 海鲜相关的搜索建议 | 建议 | `suggest \"海鲜\"` |\n| 海鲜售卖视频文案 | 搜索 | `search \"海鲜售卖\"` |\n| 分析这个视频链接 xxx | 暂不支持 | 提示用户 |\n\n### 关键词提取\n\n从自然语言中提取关键词：\n- \"搜索一下**海鲜**视频\" → 关键词: `海鲜`\n- \"找一些**海鲜售卖**相关的视频\" → 关键词: `海鲜售卖`\n- \"**小龙虾**怎么做\" → 关键词: `小龙虾`\n- \"最近**美食**领域什么火\" → 关键词: `美食` (搜索热榜匹配)\n\n### 执行流程\n\n1. 解析用户意图 (搜索/热榜/建议)\n2. 提取关键词\n3. 执行对应命令\n4. 格式化展示结果\n\n## 输出数据格式\n\n### 搜索结果\n\n```json\n{\n  \"keyword\": \"海鲜\",\n  \"matched_hot\": [\n    {\n      \"rank\": 1,\n      \"word\": \"海鲜话题\",\n      \"hot_value\": 5000000,\n      \"video_count\": 10\n    }\n  ],\n  \"suggestions\": [\n    { \"word\": \"海鲜小哥\", \"group_id\": \"xxx\" }\n  ],\n  \"hot_list\": [...],\n  \"note\": \"在热榜中找到 1 个匹配话题\"\n}\n```\n\n### 热榜数据\n\n```json\n[\n  {\n    \"rank\": 1,\n    \"word\": \"热搜话题\",\n    \"hot_value\": 12000000,\n    \"video_count\": 6,\n    \"group_id\": \"xxx\",\n    \"sentence_id\": \"xxx\"\n  }\n]\n```\n\n## 注意事项\n\n1. **请求频率** - 避免频繁调用，建议间隔 >5 秒\n2. **数据用途** - 仅供学习和研究\n3. **API 限制** - 搜索 API 需登录，热榜和建议 API 无需登录\n4. **IP 风控** - 异常请求可能导致 IP 被限\n\n## 故障排除\n\n| 问题 | 解决方案 |\n|------|---------|\n| API 返回 2483 | 搜索需要登录，使用 `hot` 或 `suggest` 替代 |\n| 网络超时 | 检查网络连接，重试 |\n| 无匹配结果 | 关键词可能不在热榜，尝试 `suggest` 获取相关词 |"},{"path":"README.md","content":"# 抖音爆款爬虫 Skill v2.0\n\n使用抖音 Web API 获取热榜和搜索数据，**无需登录**。\n\n## 🚀 快速开始\n\n```bash\n# 安装\ncd douyin-scraper && npm install\n\n# 搜索\nnode scripts/douyin_scraper.js search \"海鲜\" 20\n\n# 热榜\nnode scripts/douyin_scraper.js hot 50\n\n# 搜索建议\nnode scripts/douyin_scraper.js suggest \"海鲜售卖\"\n```\n\n## 📝 命令\n\n| 命令 | 说明 | 示例 |\n|------|------|------|\n| `search <关键词> [数量]` | 搜索 (热榜匹配+建议) | `search \"海鲜\" 20` |\n| `hot [数量]` | 获取热榜 | `hot 50` |\n| `suggest <关键词>` | 搜索建议 | `suggest \"海鲜\"` |\n\n选项: `--output <文件>` 保存 JSON\n\n## ⚠️ 说明\n\n抖音搜索 API 需登录，本工具在无登录环境下:\n- 热榜: 直接获取 ✅\n- 搜索建议: 直接获取 ✅  \n- 搜索: 热榜匹配 + 建议补充 ✅\n\n## 📄 许可\n\nMIT"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn72jmd20ws94jr0p8b3p24wyn82abgj\",\n  \"slug\": \"douyin-scraper-v2\",\n  \"version\": \"2.0.1\",\n  \"publishedAt\": 1780890571368\n}"},{"path":"skill-card.md","content":"## Description:\n\n爬取抖音热榜和搜索建议数据，支持关键词搜索、热榜获取、搜索建议等功能。无需登录即可使用。\n\nThis skill is for research and development only.\n\n## Publisher:\n\n[terrycarter1985](https://clawhub.ai/user/terrycarter1985)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and operators use this skill to fetch Douyin hot-search topics, match keywords against the hot list, and retrieve search suggestions for trend monitoring or content research.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Setup can download mutable Python, Playwright, browser, mirror-hosted, and Docker assets that are broader than the API-only scraper normally needs.\n\nMitigation: Prefer the API-only Node.js or Python scripts when possible, pin and review dependencies before installation, and run browser or Docker setup only in an isolated environment.\n\nRisk: Frequent Douyin API requests can fail or trigger IP controls.\n\nMitigation: Throttle usage, follow the artifact guidance to keep requests at least five seconds apart, and stop or retry later if responses indicate rate limiting.\n\nRisk: Full Douyin search may require a logged-in browser session or cookie outside the default no-login workflow.\n\nMitigation: Use the hot-list and suggestion modes by default; provide login cookies only when necessary and handle them as sensitive credentials.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/terrycarter1985/skills/douyin-scraper-v2)\n- [Douyin web service](https://www.douyin.com/)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with shell commands and optional JSON output files]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Can save hot-search, search, and suggestion results as JSON when an output file is provided.]\n\n## Skill Version(s):\n\n2.0.1 (source: server release metadata; artifact frontmatter reports 2.0.0)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"examples/search_requests.txt","content":"搜索一下海鲜视频\n看看抖音热榜有什么\n找一些海鲜售卖相关的视频文案\n海鲜相关的搜索建议\n最近美食领域什么火\n小龙虾怎么做\n抖音上什么最火"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"爬取抖音热榜和搜索建议数据，支持关键词搜索、热榜获取、搜索建议等功能。无需登录即可使用。 Skill: 抖音爆款爬虫 v2 Owner: terrycarter1985 Summary: 爬取抖音热榜和搜索建议数据，支持关键词搜索、热榜获取、搜索建议等功能。无需登录即可使用。 Tags: latest:2.0.1 Version history: v2.0.1 | 2026-06-08T03:49:31.368Z | user v2.0.1: 重写为真实API, 支持热榜/搜索建议/关键词搜索, 无需登录, 支持自然语言入口 v2.0.0 | 2026-06-06T05:04:54.124Z | user 重大更新: 移除prompt注入; 新增自然语言路由; 重写爬虫支持真实抓取+mock降级 v1.3.0 | 2026-06-06T01:49:09.360Z | user 支持自然语言搜索请求；浏览器不可用时自动降级为 mock 数据；修复 Playwright 未安装时的崩溃问题 v1.2.0 | 2026-0","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":697,"uniquenessScore":62,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T12:50:38.650Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T12:50:38.650Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T15:16:24.929Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}