{
  "schemaVersion": "1.0",
  "item": {
    "slug": "langsearch",
    "name": "Langsearch",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/vaibhav1805/langsearch",
    "canonicalUrl": "https://clawhub.ai/vaibhav1805/langsearch",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/langsearch",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=langsearch",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "scripts/web_search_example.py",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/langsearch"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/langsearch",
    "agentPageUrl": "https://openagent3.xyz/skills/langsearch/agent",
    "manifestUrl": "https://openagent3.xyz/skills/langsearch/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/langsearch/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "⚠️ Security & Credentials",
        "body": "Required Credentials:\n\nLANGSEARCH_API_KEY - Your free LangSearch API key (required)\n\nSecurity Best Practices:\n\nGet a free API key - Sign up at langsearch.com/api-keys\nProtect your API key - Never commit .env files containing LANGSEARCH_API_KEY to version control\nUse environment variables - Store the key in .env or set via export LANGSEARCH_API_KEY=\"...\"\nMonitor usage - Check your API usage on the LangSearch dashboard\nCode inspection - This tool only uses the official LangSearch API. All communication is via HTTPS to api.langsearch.com\n\nNetwork Access:\n\nOnly connects to: https://api.langsearch.com (official LangSearch API)\nNo external data collection or telemetry\nNo tracking or logging sent elsewhere"
      },
      {
        "title": "Overview",
        "body": "LangSearch provides free APIs for web search and semantic reranking. It combines keyword search precision with vector-based semantic matching, making it ideal for integrating current web information into LLM applications and building RAG systems."
      },
      {
        "title": "Prerequisites",
        "body": "Get a free API key at https://langsearch.com/api-keys\nSet your API key as an environment variable: export LANGSEARCH_API_KEY=\"your-api-key\""
      },
      {
        "title": "Basic Web Search",
        "body": "The simplest way to search the web using LangSearch:\n\nimport requests\nimport json\nimport os\n\napi_key = os.getenv(\"LANGSEARCH_API_KEY\")\nheaders = {\n    \"Authorization\": f\"Bearer {api_key}\",\n    \"Content-Type\": \"application/json\"\n}\n\nquery = \"latest AI developments 2025\"\npayload = {\n    \"query\": query,\n    \"count\": 5,\n    \"summary\": True\n}\n\nresponse = requests.post(\n    \"https://api.langsearch.com/v1/web-search\",\n    headers=headers,\n    json=payload\n)\n\nresults = response.json()\nprint(json.dumps(results, indent=2))\n\nOr using cURL:\n\ncurl -X POST https://api.langsearch.com/v1/web-search \\\n  -H \"Authorization: Bearer $LANGSEARCH_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"query\": \"latest AI developments 2025\",\n    \"count\": 5,\n    \"summary\": true\n  }'"
      },
      {
        "title": "Web Search API",
        "body": "The web search endpoint retrieves information from billions of web documents using hybrid search (keyword + vector matching) with optional summaries."
      },
      {
        "title": "Endpoint",
        "body": "POST https://api.langsearch.com/v1/web-search"
      },
      {
        "title": "Request Parameters",
        "body": "ParameterTypeRequiredDescriptionquerystringYesThe search querycountintegerNoNumber of results to return (default: 10, max: 100)summarybooleanNoInclude markdown summaries in results (default: false)freshnessstringNoFilter results by freshness (day, week, month, year)"
      },
      {
        "title": "Response Structure",
        "body": "The API returns an array of search results with:\n\ntitle - Result title\nurl - Result URL\nsnippet - Text excerpt from the page\nsummary - Markdown formatted summary (if summary: true in request)\nscore - Relevance score"
      },
      {
        "title": "Example Use Cases",
        "body": "Current Information Retrieval\nWhen your LLM needs up-to-date information:\n\n# Search for recent developments\nresponse = requests.post(\n    \"https://api.langsearch.com/v1/web-search\",\n    headers=headers,\n    json={\n        \"query\": \"Python 3.14 release notes\",\n        \"count\": 3,\n        \"summary\": True,\n        \"freshness\": \"week\"\n    }\n)\n\nMulti-Query Research\nBuild context from multiple searches:\n\nqueries = [\n    \"climate change mitigation strategies\",\n    \"renewable energy trends 2025\",\n    \"carbon capture technology\"\n]\n\nall_results = []\nfor query in queries:\n    response = requests.post(\n        \"https://api.langsearch.com/v1/web-search\",\n        headers=headers,\n        json={\"query\": query, \"count\": 5, \"summary\": True}\n    )\n    all_results.extend(response.json())"
      },
      {
        "title": "Semantic Reranking API",
        "body": "Improve search accuracy by reranking results based on semantic relevance to your query."
      },
      {
        "title": "Endpoint",
        "body": "POST https://api.langsearch.com/v1/rerank"
      },
      {
        "title": "Request Parameters",
        "body": "ParameterTypeRequiredDescriptionquerystringYesThe search query for contextdocumentsarrayYesArray of documents to rerank (each with title, text, etc.)modelstringNoReranking model (default: langsearch-rerank-1)top_nintegerNoNumber of top results to return (default: 10)return_documentsbooleanNoInclude full documents in response (default: false)"
      },
      {
        "title": "Example: Reranking Web Search Results",
        "body": "# Get initial search results\nsearch_response = requests.post(\n    \"https://api.langsearch.com/v1/web-search\",\n    headers=headers,\n    json={\"query\": \"machine learning deployment best practices\", \"count\": 10}\n)\n\nsearch_results = search_response.json()\n\n# Prepare documents for reranking\ndocuments = [\n    {\"title\": r.get(\"title\", \"\"), \"text\": r.get(\"snippet\", \"\")}\n    for r in search_results\n]\n\n# Rerank for better relevance\nrerank_response = requests.post(\n    \"https://api.langsearch.com/v1/rerank\",\n    headers=headers,\n    json={\n        \"query\": \"best practices for deploying ML models in production\",\n        \"documents\": documents,\n        \"top_n\": 5\n    }\n)\n\nreranked = rerank_response.json()"
      },
      {
        "title": "Building RAG Applications",
        "body": "Combine web search with LLM context for better information retrieval and generation:\n\ndef rag_query(user_question):\n    # Step 1: Search the web for relevant information\n    search_response = requests.post(\n        \"https://api.langsearch.com/v1/web-search\",\n        headers=headers,\n        json={\n            \"query\": user_question,\n            \"count\": 5,\n            \"summary\": True\n        }\n    )\n\n    search_results = search_response.json()\n\n    # Step 2: Extract summaries and URLs for context\n    context = \"\\n\".join([\n        f\"- {r['title']}: {r.get('summary', r.get('snippet', ''))}\"\n        for r in search_results\n    ])\n\n    # Step 3: Use with your LLM\n    # This is where you'd call your LLM with the context\n    rag_context = f\"\"\"\nBased on recent web search results:\n\n{context}\n\nAnswer the user's question: {user_question}\n\"\"\"\n\n    return rag_context, search_results"
      },
      {
        "title": "Error Handling",
        "body": "Common HTTP status codes:\n\nStatusMeaningAction200SuccessResults returned normally401UnauthorizedCheck API key is valid and set correctly429Rate limitedRetry with exponential backoff500Server errorRetry the request later\n\nSee scripts/web_search_example.py for a complete example with error handling."
      },
      {
        "title": "Resources",
        "body": "This skill includes example resource directories that demonstrate how to organize different types of bundled resources:"
      },
      {
        "title": "scripts/",
        "body": "Executable code (Python/Bash/etc.) that can be run directly to perform specific operations.\n\nExamples from other skills:\n\nPDF skill: fill_fillable_fields.py, extract_form_field_info.py - utilities for PDF manipulation\nDOCX skill: document.py, utilities.py - Python modules for document processing\n\nAppropriate for: Python scripts, shell scripts, or any executable code that performs automation, data processing, or specific operations.\n\nNote: Scripts may be executed without loading into context, but can still be read by Claude for patching or environment adjustments."
      },
      {
        "title": "references/",
        "body": "Documentation and reference material intended to be loaded into context to inform Claude's process and thinking.\n\nExamples from other skills:\n\nProduct management: communication.md, context_building.md - detailed workflow guides\nBigQuery: API reference documentation and query examples\nFinance: Schema documentation, company policies\n\nAppropriate for: In-depth documentation, API references, database schemas, comprehensive guides, or any detailed information that Claude should reference while working."
      },
      {
        "title": "assets/",
        "body": "Files not intended to be loaded into context, but rather used within the output Claude produces.\n\nExamples from other skills:\n\nBrand styling: PowerPoint template files (.pptx), logo files\nFrontend builder: HTML/React boilerplate project directories\nTypography: Font files (.ttf, .woff2)\n\nAppropriate for: Templates, boilerplate code, document templates, images, icons, fonts, or any files meant to be copied or used in the final output.\n\nAny unneeded directories can be deleted. Not every skill requires all three types of resources."
      }
    ],
    "body": "LangSearch\n⚠️ Security & Credentials\n\nRequired Credentials:\n\nLANGSEARCH_API_KEY - Your free LangSearch API key (required)\n\nSecurity Best Practices:\n\nGet a free API key - Sign up at langsearch.com/api-keys\nProtect your API key - Never commit .env files containing LANGSEARCH_API_KEY to version control\nUse environment variables - Store the key in .env or set via export LANGSEARCH_API_KEY=\"...\"\nMonitor usage - Check your API usage on the LangSearch dashboard\nCode inspection - This tool only uses the official LangSearch API. All communication is via HTTPS to api.langsearch.com\n\nNetwork Access:\n\nOnly connects to: https://api.langsearch.com (official LangSearch API)\nNo external data collection or telemetry\nNo tracking or logging sent elsewhere\nOverview\n\nLangSearch provides free APIs for web search and semantic reranking. It combines keyword search precision with vector-based semantic matching, making it ideal for integrating current web information into LLM applications and building RAG systems.\n\nQuick Start\nPrerequisites\nGet a free API key at https://langsearch.com/api-keys\nSet your API key as an environment variable: export LANGSEARCH_API_KEY=\"your-api-key\"\nBasic Web Search\n\nThe simplest way to search the web using LangSearch:\n\nimport requests\nimport json\nimport os\n\napi_key = os.getenv(\"LANGSEARCH_API_KEY\")\nheaders = {\n    \"Authorization\": f\"Bearer {api_key}\",\n    \"Content-Type\": \"application/json\"\n}\n\nquery = \"latest AI developments 2025\"\npayload = {\n    \"query\": query,\n    \"count\": 5,\n    \"summary\": True\n}\n\nresponse = requests.post(\n    \"https://api.langsearch.com/v1/web-search\",\n    headers=headers,\n    json=payload\n)\n\nresults = response.json()\nprint(json.dumps(results, indent=2))\n\n\nOr using cURL:\n\ncurl -X POST https://api.langsearch.com/v1/web-search \\\n  -H \"Authorization: Bearer $LANGSEARCH_API_KEY\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"query\": \"latest AI developments 2025\",\n    \"count\": 5,\n    \"summary\": true\n  }'\n\nWeb Search API\n\nThe web search endpoint retrieves information from billions of web documents using hybrid search (keyword + vector matching) with optional summaries.\n\nEndpoint\n\nPOST https://api.langsearch.com/v1/web-search\n\nRequest Parameters\nParameter\tType\tRequired\tDescription\nquery\tstring\tYes\tThe search query\ncount\tinteger\tNo\tNumber of results to return (default: 10, max: 100)\nsummary\tboolean\tNo\tInclude markdown summaries in results (default: false)\nfreshness\tstring\tNo\tFilter results by freshness (day, week, month, year)\nResponse Structure\n\nThe API returns an array of search results with:\n\ntitle - Result title\nurl - Result URL\nsnippet - Text excerpt from the page\nsummary - Markdown formatted summary (if summary: true in request)\nscore - Relevance score\nExample Use Cases\n\nCurrent Information Retrieval When your LLM needs up-to-date information:\n\n# Search for recent developments\nresponse = requests.post(\n    \"https://api.langsearch.com/v1/web-search\",\n    headers=headers,\n    json={\n        \"query\": \"Python 3.14 release notes\",\n        \"count\": 3,\n        \"summary\": True,\n        \"freshness\": \"week\"\n    }\n)\n\n\nMulti-Query Research Build context from multiple searches:\n\nqueries = [\n    \"climate change mitigation strategies\",\n    \"renewable energy trends 2025\",\n    \"carbon capture technology\"\n]\n\nall_results = []\nfor query in queries:\n    response = requests.post(\n        \"https://api.langsearch.com/v1/web-search\",\n        headers=headers,\n        json={\"query\": query, \"count\": 5, \"summary\": True}\n    )\n    all_results.extend(response.json())\n\nSemantic Reranking API\n\nImprove search accuracy by reranking results based on semantic relevance to your query.\n\nEndpoint\n\nPOST https://api.langsearch.com/v1/rerank\n\nRequest Parameters\nParameter\tType\tRequired\tDescription\nquery\tstring\tYes\tThe search query for context\ndocuments\tarray\tYes\tArray of documents to rerank (each with title, text, etc.)\nmodel\tstring\tNo\tReranking model (default: langsearch-rerank-1)\ntop_n\tinteger\tNo\tNumber of top results to return (default: 10)\nreturn_documents\tboolean\tNo\tInclude full documents in response (default: false)\nExample: Reranking Web Search Results\n# Get initial search results\nsearch_response = requests.post(\n    \"https://api.langsearch.com/v1/web-search\",\n    headers=headers,\n    json={\"query\": \"machine learning deployment best practices\", \"count\": 10}\n)\n\nsearch_results = search_response.json()\n\n# Prepare documents for reranking\ndocuments = [\n    {\"title\": r.get(\"title\", \"\"), \"text\": r.get(\"snippet\", \"\")}\n    for r in search_results\n]\n\n# Rerank for better relevance\nrerank_response = requests.post(\n    \"https://api.langsearch.com/v1/rerank\",\n    headers=headers,\n    json={\n        \"query\": \"best practices for deploying ML models in production\",\n        \"documents\": documents,\n        \"top_n\": 5\n    }\n)\n\nreranked = rerank_response.json()\n\nBuilding RAG Applications\n\nCombine web search with LLM context for better information retrieval and generation:\n\ndef rag_query(user_question):\n    # Step 1: Search the web for relevant information\n    search_response = requests.post(\n        \"https://api.langsearch.com/v1/web-search\",\n        headers=headers,\n        json={\n            \"query\": user_question,\n            \"count\": 5,\n            \"summary\": True\n        }\n    )\n\n    search_results = search_response.json()\n\n    # Step 2: Extract summaries and URLs for context\n    context = \"\\n\".join([\n        f\"- {r['title']}: {r.get('summary', r.get('snippet', ''))}\"\n        for r in search_results\n    ])\n\n    # Step 3: Use with your LLM\n    # This is where you'd call your LLM with the context\n    rag_context = f\"\"\"\nBased on recent web search results:\n\n{context}\n\nAnswer the user's question: {user_question}\n\"\"\"\n\n    return rag_context, search_results\n\nError Handling\n\nCommon HTTP status codes:\n\nStatus\tMeaning\tAction\n200\tSuccess\tResults returned normally\n401\tUnauthorized\tCheck API key is valid and set correctly\n429\tRate limited\tRetry with exponential backoff\n500\tServer error\tRetry the request later\n\nSee scripts/web_search_example.py for a complete example with error handling.\n\nResources\n\nThis skill includes example resource directories that demonstrate how to organize different types of bundled resources:\n\nscripts/\n\nExecutable code (Python/Bash/etc.) that can be run directly to perform specific operations.\n\nExamples from other skills:\n\nPDF skill: fill_fillable_fields.py, extract_form_field_info.py - utilities for PDF manipulation\nDOCX skill: document.py, utilities.py - Python modules for document processing\n\nAppropriate for: Python scripts, shell scripts, or any executable code that performs automation, data processing, or specific operations.\n\nNote: Scripts may be executed without loading into context, but can still be read by Claude for patching or environment adjustments.\n\nreferences/\n\nDocumentation and reference material intended to be loaded into context to inform Claude's process and thinking.\n\nExamples from other skills:\n\nProduct management: communication.md, context_building.md - detailed workflow guides\nBigQuery: API reference documentation and query examples\nFinance: Schema documentation, company policies\n\nAppropriate for: In-depth documentation, API references, database schemas, comprehensive guides, or any detailed information that Claude should reference while working.\n\nassets/\n\nFiles not intended to be loaded into context, but rather used within the output Claude produces.\n\nExamples from other skills:\n\nBrand styling: PowerPoint template files (.pptx), logo files\nFrontend builder: HTML/React boilerplate project directories\nTypography: Font files (.ttf, .woff2)\n\nAppropriate for: Templates, boilerplate code, document templates, images, icons, fonts, or any files meant to be copied or used in the final output.\n\nAny unneeded directories can be deleted. Not every skill requires all three types of resources."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/vaibhav1805/langsearch",
    "publisherUrl": "https://clawhub.ai/vaibhav1805/langsearch",
    "owner": "vaibhav1805",
    "version": "1.0.4",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/langsearch",
    "downloadUrl": "https://openagent3.xyz/downloads/langsearch",
    "agentUrl": "https://openagent3.xyz/skills/langsearch/agent",
    "manifestUrl": "https://openagent3.xyz/skills/langsearch/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/langsearch/agent.md"
  }
}