[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6F0Z0EENWVTPCJV3CYTNZYN":3,"skill-same:01M6F0Z0EENWVTPCJV3CYTNZYN":80},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":50,"ownerHtmlUrl":51,"ownerBlogUrl":6,"ownerDescription":52,"updatedAt":53,"install":54,"resources":67},"01M6F0Z0EENWVTPCJV3CYTNZYN","extract",null,"Extract content from specific URLs using Tavily's extraction API. Returns clean markdown\u002Ftext from web pages. Use when you have specific URLs and need their content without writing code.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Ftavily-ai\u002Fextract\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000036","内容创作者",[5,27,28,29,30,31,32,33,34,35,36,37,38,39],"writing","tavily","web","code","content","extraction","api","markdown","text","returns","use","clean","pages","2026-11-10 10:12:30",false,"---\nname: extract\ndescription: \"Extract content from specific URLs using Tavily's extraction API. Returns clean markdown\u002Ftext from web pages. Use when you have specific URLs and need their content without writing code.\"\n---\n\n# Extract Skill\n\nExtract clean content from specific URLs. Ideal when you know which pages you want content from.\n\n## Authentication\n\nThe script uses OAuth via the Tavily MCP server. **No manual setup required** - on first run, it will:\n1. Check for existing tokens in `~\u002F.mcp-auth\u002F`\n2. If none found, automatically open your browser for OAuth authentication\n\n> **Note:** You must have an existing Tavily account. The OAuth flow only supports login — account creation is not available through this flow. [Sign up at tavily.com](https:\u002F\u002Ftavily.com) first if you don't have an account.\n\n### Alternative: API Key\n\nIf you prefer using an API key, get one at https:\u002F\u002Ftavily.com and add to `~\u002F.claude\u002Fsettings.json`:\n```json\n{\n  \"env\": {\n    \"TAVILY_API_KEY\": \"tvly-your-api-key-here\"\n  }\n}\n```\n\n## Quick Start\n\n### Using the Script\n\n```bash\n.\u002Fscripts\u002Fextract.sh '\u003Cjson>'\n```\n\n**Examples:**\n```bash\n# Single URL\n.\u002Fscripts\u002Fextract.sh '{\"urls\": [\"https:\u002F\u002Fexample.com\u002Farticle\"]}'\n\n# Multiple URLs\n.\u002Fscripts\u002Fextract.sh '{\"urls\": [\"https:\u002F\u002Fexample.com\u002Fpage1\", \"https:\u002F\u002Fexample.com\u002Fpage2\"]}'\n\n# With query focus and chunks\n.\u002Fscripts\u002Fextract.sh '{\"urls\": [\"https:\u002F\u002Fexample.com\u002Fdocs\"], \"query\": \"authentication API\", \"chunks_per_source\": 3}'\n\n# Advanced extraction for JS pages\n.\u002Fscripts\u002Fextract.sh '{\"urls\": [\"https:\u002F\u002Fapp.example.com\"], \"extract_depth\": \"advanced\", \"timeout\": 60}'\n```\n\n### Basic Extraction\n\n```bash\ncurl --request POST \\\n  --url https:\u002F\u002Fapi.tavily.com\u002Fextract \\\n  --header \"Authorization: Bearer $TAVILY_API_KEY\" \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --data '{\n    \"urls\": [\"https:\u002F\u002Fexample.com\u002Farticle\"]\n  }'\n```\n\n### Multiple URLs with Query Focus\n\n```bash\ncurl --request POST \\\n  --url https:\u002F\u002Fapi.tavily.com\u002Fextract \\\n  --header \"Authorization: Bearer $TAVILY_API_KEY\" \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --data '{\n    \"urls\": [\n      \"https:\u002F\u002Fexample.com\u002Fml-healthcare\",\n      \"https:\u002F\u002Fexample.com\u002Fai-diagnostics\"\n    ],\n    \"query\": \"AI diagnostic tools accuracy\",\n    \"chunks_per_source\": 3\n  }'\n```\n\n## API Reference\n\n### Endpoint\n\n```\nPOST https:\u002F\u002Fapi.tavily.com\u002Fextract\n```\n\n### Headers\n\n| Header | Value |\n|--------|-------|\n| `Authorization` | `Bearer \u003CTAVILY_API_KEY>` |\n| `Content-Type` | `application\u002Fjson` |\n\n### Request Body\n\n| Field | Type | Default | Description |\n|-------|------|---------|-------------|\n| `urls` | array | Required | URLs to extract (max 20) |\n| `query` | string | null | Reranks chunks by relevance |\n| `chunks_per_source` | integer | 3 | Chunks per URL (1-5, requires query) |\n| `extract_depth` | string | `\"basic\"` | `basic` or `advanced` (for JS pages) |\n| `format` | string | `\"markdown\"` | `markdown` or `text` |\n| `include_images` | boolean | false | Include image URLs |\n| `timeout` | float | varies | Max wait (1-60 seconds) |\n\n### Response Format\n\n```json\n{\n  \"results\": [\n    {\n      \"url\": \"https:\u002F\u002Fexample.com\u002Farticle\",\n      \"raw_content\": \"# Article Title\\n\\nContent...\"\n    }\n  ],\n  \"failed_results\": [],\n  \"response_time\": 2.3\n}\n```\n\n## Extract Depth\n\n| Depth | When to Use |\n|-------|-------------|\n| `basic` | Simple text extraction, faster |\n| `advanced` | Dynamic\u002FJS-rendered pages, tables, structured data |\n\n## Examples\n\n### Single URL Extraction\n\n```bash\ncurl --request POST \\\n  --url https:\u002F\u002Fapi.tavily.com\u002Fextract \\\n  --header \"Authorization: Bearer $TAVILY_API_KEY\" \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --data '{\n    \"urls\": [\"https:\u002F\u002Fdocs.python.org\u002F3\u002Ftutorial\u002Fclasses.html\"],\n    \"extract_depth\": \"basic\"\n  }'\n```\n\n### Targeted Extraction with Query\n\n```bash\ncurl --request POST \\\n  --url https:\u002F\u002Fapi.tavily.com\u002Fextract \\\n  --header \"Authorization: Bearer $TAVILY_API_KEY\" \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --data '{\n    \"urls\": [\n      \"https:\u002F\u002Fexample.com\u002Freact-hooks\",\n      \"https:\u002F\u002Fexample.com\u002Freact-state\"\n    ],\n    \"query\": \"useState and useEffect patterns\",\n    \"chunks_per_source\": 2\n  }'\n```\n\n### JavaScript-Heavy Pages\n\n```bash\ncurl --request POST \\\n  --url https:\u002F\u002Fapi.tavily.com\u002Fextract \\\n  --header \"Authorization: Bearer $TAVILY_API_KEY\" \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --data '{\n    \"urls\": [\"https:\u002F\u002Fapp.example.com\u002Fdashboard\"],\n    \"extract_depth\": \"advanced\",\n    \"timeout\": 60\n  }'\n```\n\n### Batch Extraction\n\n```bash\ncurl --request POST \\\n  --url https:\u002F\u002Fapi.tavily.com\u002Fextract \\\n  --header \"Authorization: Bearer $TAVILY_API_KEY\" \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --data '{\n    \"urls\": [\n      \"https:\u002F\u002Fexample.com\u002Fpage1\",\n      \"https:\u002F\u002Fexample.com\u002Fpage2\",\n      \"https:\u002F\u002Fexample.com\u002Fpage3\",\n      \"https:\u002F\u002Fexample.com\u002Fpage4\",\n      \"https:\u002F\u002Fexample.com\u002Fpage5\"\n    ],\n    \"extract_depth\": \"basic\"\n  }'\n```\n\n## Tips\n\n- **Max 20 URLs per request** - batch larger lists\n- **Use `query` + `chunks_per_source`** to get only relevant content\n- **Try `basic` first**, fall back to `advanced` if content is missing\n- **Set longer `timeout`** for slow pages (up to 60s)\n- **Check `failed_results`** for URLs that couldn't be extracted\n","# Extract Skill\n\nExtract clean content from specific URLs. Ideal when you know which pages you want content from.\n\n## Authentication\n\nThe script uses OAuth via the Tavily MCP server. **No manual setup required** - on first run, it will:\n1. Check for existing tokens in `~\u002F.mcp-auth\u002F`\n2. If none found, automatically open your browser for OAuth authentication\n\n> **Note:** You must have an existing Tavily account. The OAuth flow only supports login — account creation is not available through this flow. [Sign up at tavily.com](https:\u002F\u002Ftavily.com) first if you don't have an account.\n\n### Alternative: API Key\n\nIf you prefer using an API key, get one at https:\u002F\u002Ftavily.com and add to `~\u002F.claude\u002Fsettings.json`:\n```json\n{\n  \"env\": {\n    \"TAVILY_API_KEY\": \"tvly-your-api-key-here\"\n  }\n}\n```\n\n## Quick Start\n\n### Using the Script\n\n```bash\n.\u002Fscripts\u002Fextract.sh '\u003Cjson>'\n```\n\n**Examples:**\n```bash\n# Single URL\n.\u002Fscripts\u002Fextract.sh '{\"urls\": [\"https:\u002F\u002Fexample.com\u002Farticle\"]}'\n\n# Multiple URLs\n.\u002Fscripts\u002Fextract.sh '{\"urls\": [\"https:\u002F\u002Fexample.com\u002Fpage1\", \"https:\u002F\u002Fexample.com\u002Fpage2\"]}'\n\n# With query focus and chunks\n.\u002Fscripts\u002Fextract.sh '{\"urls\": [\"https:\u002F\u002Fexample.com\u002Fdocs\"], \"query\": \"authentication API\", \"chunks_per_source\": 3}'\n\n# Advanced extraction for JS pages\n.\u002Fscripts\u002Fextract.sh '{\"urls\": [\"https:\u002F\u002Fapp.example.com\"], \"extract_depth\": \"advanced\", \"timeout\": 60}'\n```\n\n### Basic Extraction\n\n```bash\ncurl --request POST \\\n  --url https:\u002F\u002Fapi.tavily.com\u002Fextract \\\n  --header \"Authorization: Bearer $TAVILY_API_KEY\" \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --data '{\n    \"urls\": [\"https:\u002F\u002Fexample.com\u002Farticle\"]\n  }'\n```\n\n### Multiple URLs with Query Focus\n\n```bash\ncurl --request POST \\\n  --url https:\u002F\u002Fapi.tavily.com\u002Fextract \\\n  --header \"Authorization: Bearer $TAVILY_API_KEY\" \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --data '{\n    \"urls\": [\n      \"https:\u002F\u002Fexample.com\u002Fml-healthcare\",\n      \"https:\u002F\u002Fexample.com\u002Fai-diagnostics\"\n    ],\n    \"query\": \"AI diagnostic tools accuracy\",\n    \"chunks_per_source\": 3\n  }'\n```\n\n## API Reference\n\n### Endpoint\n\n```\nPOST https:\u002F\u002Fapi.tavily.com\u002Fextract\n```\n\n### Headers\n\n| Header | Value |\n|--------|-------|\n| `Authorization` | `Bearer \u003CTAVILY_API_KEY>` |\n| `Content-Type` | `application\u002Fjson` |\n\n### Request Body\n\n| Field | Type | Default | Description |\n|-------|------|---------|-------------|\n| `urls` | array | Required | URLs to extract (max 20) |\n| `query` | string | null | Reranks chunks by relevance |\n| `chunks_per_source` | integer | 3 | Chunks per URL (1-5, requires query) |\n| `extract_depth` | string | `\"basic\"` | `basic` or `advanced` (for JS pages) |\n| `format` | string | `\"markdown\"` | `markdown` or `text` |\n| `include_images` | boolean | false | Include image URLs |\n| `timeout` | float | varies | Max wait (1-60 seconds) |\n\n### Response Format\n\n```json\n{\n  \"results\": [\n    {\n      \"url\": \"https:\u002F\u002Fexample.com\u002Farticle\",\n      \"raw_content\": \"# Article Title\\n\\nContent...\"\n    }\n  ],\n  \"failed_results\": [],\n  \"response_time\": 2.3\n}\n```\n\n## Extract Depth\n\n| Depth | When to Use |\n|-------|-------------|\n| `basic` | Simple text extraction, faster |\n| `advanced` | Dynamic\u002FJS-rendered pages, tables, structured data |\n\n## Examples\n\n### Single URL Extraction\n\n```bash\ncurl --request POST \\\n  --url https:\u002F\u002Fapi.tavily.com\u002Fextract \\\n  --header \"Authorization: Bearer $TAVILY_API_KEY\" \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --data '{\n    \"urls\": [\"https:\u002F\u002Fdocs.python.org\u002F3\u002Ftutorial\u002Fclasses.html\"],\n    \"extract_depth\": \"basic\"\n  }'\n```\n\n### Targeted Extraction with Query\n\n```bash\ncurl --request POST \\\n  --url https:\u002F\u002Fapi.tavily.com\u002Fextract \\\n  --header \"Authorization: Bearer $TAVILY_API_KEY\" \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --data '{\n    \"urls\": [\n      \"https:\u002F\u002Fexample.com\u002Freact-hooks\",\n      \"https:\u002F\u002Fexample.com\u002Freact-state\"\n    ],\n    \"query\": \"useState and useEffect patterns\",\n    \"chunks_per_source\": 2\n  }'\n```\n\n### JavaScript-Heavy Pages\n\n```bash\ncurl --request POST \\\n  --url https:\u002F\u002Fapi.tavily.com\u002Fextract \\\n  --header \"Authorization: Bearer $TAVILY_API_KEY\" \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --data '{\n    \"urls\": [\"https:\u002F\u002Fapp.example.com\u002Fdashboard\"],\n    \"extract_depth\": \"advanced\",\n    \"timeout\": 60\n  }'\n```\n\n### Batch Extraction\n\n```bash\ncurl --request POST \\\n  --url https:\u002F\u002Fapi.tavily.com\u002Fextract \\\n  --header \"Authorization: Bearer $TAVILY_API_KEY\" \\\n  --header 'Content-Type: application\u002Fjson' \\\n  --data '{\n    \"urls\": [\n      \"https:\u002F\u002Fexample.com\u002Fpage1\",\n      \"https:\u002F\u002Fexample.com\u002Fpage2\",\n      \"https:\u002F\u002Fexample.com\u002Fpage3\",\n      \"https:\u002F\u002Fexample.com\u002Fpage4\",\n      \"https:\u002F\u002Fexample.com\u002Fpage5\"\n    ],\n    \"extract_depth\": \"basic\"\n  }'\n```\n\n## Tips\n\n- **Max 20 URLs per request** - batch larger lists\n- **Use `query` + `chunks_per_source`** to get only relevant content\n- **Try `basic` first**, fall back to `advanced` if content is missing\n- **Set longer `timeout`** for slow pages (up to 60s)\n- **Check `failed_results`** for URLs that couldn't be extracted\n",{"name":5,"description":7},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002Faiskillstore\u002Fmarketplace\u002Ftavily-ai\u002Fextract",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill extract",{"tool":60,"command":61},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill extract",{"tool":63,"command":64},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill extract","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Ftavily-ai\u002Fextract\u002FSKILL.md",true,[68,74],{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"scripts\u002Fextract.sh","SCRIPT","脚本",5249,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Ftavily-ai\u002Fextract\u002Fscripts\u002Fextract.sh",{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":79},"skill-report.json","REFERENCE","参考文档",26390,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Faiskillstore\u002Fmarketplace\u002Ftavily-ai\u002Fextract\u002Fskill-report.json",[81,95,105,114,120,127],{"skillNo":82,"name":83,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":91,"publishedAt":40},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[86],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[92,93,94],"model","model hierarchy","model hierarchy skill",{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":101,"publishedAt":40},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[100],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},[102,103,104],"MCP","zoom","zoom mcp",{"skillNo":106,"name":107,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":40},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[111,112,113,103],"sdk","zoom apps sdk","apps",{"skillNo":115,"name":116,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":40},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[116],{"skillNo":121,"name":122,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":126,"publishedAt":40},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[125],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},[122],{"skillNo":128,"name":129,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":40},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[129]]