{
  "schemaVersion": "1.0",
  "item": {
    "slug": "flights-search-plus",
    "name": "flights",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/syf8888/flights-search-plus",
    "canonicalUrl": "https://clawhub.ai/syf8888/flights-search-plus",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/flights-search-plus",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=flights-search-plus",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "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/flights-search-plus"
    },
    "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/flights-search-plus",
    "agentPageUrl": "https://openagent3.xyz/skills/flights-search-plus/agent",
    "manifestUrl": "https://openagent3.xyz/skills/flights-search-plus/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/flights-search-plus/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": "✈️ Flight Search Skill",
        "body": "Query real-time flights via the 51smart API (skill.flight.51smart.com). Supports one-way, round-trip, and price calendar.\n\nNote: This skill calls the above public API directly via HTTP POST. No local scripts or authentication required. User data (city/date) is used solely for flight search."
      },
      {
        "title": "Workflow",
        "body": "Parse Input → Extract origin, destination, dates, passengers, cabin class, trip type\nComplete Missing Info → Ask the user if any required fields are missing\nCall API → POST directly to https://skill.flight.51smart.com/api/search\nFormat Output → Display results in a clear, structured format"
      },
      {
        "title": "Step 1: Parse User Input",
        "body": "FieldDescriptionDefaultRequiredfromCityIATA airport code of departure city—✅toCityIATA airport code of destination city—✅fromDateDeparture date (YYYY-MM-DD)—✅returnDateReturn date (YYYY-MM-DD)—Required for round-tripadultNumberNumber of adults1—childNumberNumber of children0—cabinClassE / B / F / PE—flightTypeoneWay / roundTriponeWay—\n\nCabin Codes:\n\nE = Economy\nP = Premium Economy\nB = Business\nF = First"
      },
      {
        "title": "China",
        "body": "CityCodeCityCodeBeijingPEK/PKXShanghai HongqiaoSHAShanghai PudongPVGGuangzhouCANShenzhenSZXChengduCTUHangzhouHGHNanjingNKGWuhanWUHXi'anXIYChongqingCKGXiamenXMNKunmingKMGSanyaSYXHaikouHAKQingdaoTAOZhengzhouCGOChangshaCSXJinanTNAHarbinHRBShenyangSHEDalianDLCTianjinTSNHefeiHFEGuiyangKWENanningNNGUrumqiURCLhasaLXA"
      },
      {
        "title": "International",
        "body": "CityCodeCityCodeHong KongHKGTaipeiTPEMacauMFMTokyo NaritaNRTTokyo HanedaHNDOsakaKIXSeoulICNBusanPUSSingaporeSINBangkok SuvarnabhumiBKKBangkok Don MueangDMKKuala LumpurKULJakartaCGKManilaMNLSydneySYDMelbourneMELDubaiDXBAbu DhabiAUHLondon HeathrowLHRLondon GatwickLGWParisCDGFrankfurtFRAAmsterdamAMSRomeFCONew York JFKJFKNew York NewarkEWRLos AngelesLAXSan FranciscoSFOLas VegasLASChicagoORDVancouverYVRTorontoYYZ\n\nFor cities not listed above, infer the IATA code based on common conventions, or ask the user to confirm the full airport name."
      },
      {
        "title": "Step 3: Call API",
        "body": "Send an HTTP POST request directly — no local scripts required.\n\nEndpoint: POST https://skill.flight.51smart.com/api/search\nContent-Type: application/json\nAuth: Not required"
      },
      {
        "title": "One-way Request Example",
        "body": "{\n  \"adultNumber\": 1,\n  \"cabinClass\": \"E\",\n  \"childNumber\": 0,\n  \"cid\": \"123456\",\n  \"flightType\": \"oneWay\",\n  \"flights\": [\n    {\n      \"fromCity\": \"PEK\",\n      \"fromDate\": \"2026-03-15\",\n      \"toCity\": \"SHA\"\n    }\n  ]\n}"
      },
      {
        "title": "Round-trip Request Example",
        "body": "{\n  \"adultNumber\": 2,\n  \"cabinClass\": \"B\",\n  \"childNumber\": 1,\n  \"cid\": \"123456\",\n  \"flightType\": \"roundTrip\",\n  \"flights\": [\n    { \"fromCity\": \"PEK\", \"fromDate\": \"2026-03-15\", \"toCity\": \"NRT\" },\n    { \"fromCity\": \"NRT\", \"fromDate\": \"2026-03-22\", \"toCity\": \"PEK\" }\n  ]\n}"
      },
      {
        "title": "Price Calendar",
        "body": "The price calendar is achieved by sending multiple one-way requests for consecutive dates and aggregating results."
      },
      {
        "title": "One-way / Round-trip Results",
        "body": "✈️ Beijing (PEK) → Shanghai (SHA)\n📅 Mar 15, 2026  |  Economy  |  Adult × 1\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n #  Flight      Depart→Arrive       Duration  Stops   Price (USD)  Baggage\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n 1  UA1597      22:38→00:06(+1)     1h28m     Nonstop $81.86       1PC/23KG\n 2  CA1234      09:00→11:20         2h20m     Nonstop $95.00       1PC/23KG\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n2 flights found\nLowest: $81.86 (before tax), incl. tax: $116.80"
      },
      {
        "title": "Price Calendar Results",
        "body": "📅 Price Calendar\n✈️ Shanghai (SHA) → Los Angeles (LAX)  |  Economy\n\nDate            Lowest          Flights\n─────────────────────────────────────\n2026-04-01      $520.00 ⭐       8\n2026-04-02      $490.00 🏆 Best  6\n2026-04-03      $535.00          7\n2026-04-04      $510.00          5\n2026-04-05      $580.00          6\n─────────────────────────────────────\nRecommended date: 2026-04-02 ($490.00)"
      },
      {
        "title": "Field Interpretation Rules",
        "body": "Total price incl. tax = price + tax (adult fare)\nMultiple passengers = adult total × adultNumber + child total × childNumber\nStops = number of segments - 1; show stopover city when stopQuantity > 0\nBaggage = baggages[].pieces + baggages[].weight; note \"baggage not included\" when freeBaggage: false\nLimited seats = show ⚠️ \"Only X seats left\" when maxSeatsRemain ≤ 3"
      },
      {
        "title": "Key Response Fields",
        "body": "FieldDescriptionstatus0 = successmessage\"SUCCESS\" indicates normal responseroutings[]List of flight optionsroutings[].prices[]Prices by passenger type (ADT = Adult, CHD = Child)routings[].segments[]Segment details (each stopover is a separate segment)routings[].rule.baggages[]Free baggage allowanceroutings[].rule.freeBaggagefalse = baggage must be purchased separatelyroutings[].maxSeatsRemainRemaining seatspassengerTypeADT = Adult, CHD = Child"
      },
      {
        "title": "Error Handling",
        "body": "ScenarioActionstatus != 0 or message != \"SUCCESS\"Inform the user the query failed; suggest trying a different dateroutings is an empty listNotify that no flights are available for this route/dateNetwork timeoutRetry once; if it fails again, ask the user to try laterUnrecognized city codeAsk the user to confirm the full city or airport namechildNumber > adultNumberPrompt: \"Number of children cannot exceed the number of adults\""
      }
    ],
    "body": "✈️ Flight Search Skill\n\nQuery real-time flights via the 51smart API (skill.flight.51smart.com). Supports one-way, round-trip, and price calendar.\n\nNote: This skill calls the above public API directly via HTTP POST. No local scripts or authentication required. User data (city/date) is used solely for flight search.\n\nWorkflow\nParse Input → Extract origin, destination, dates, passengers, cabin class, trip type\nComplete Missing Info → Ask the user if any required fields are missing\nCall API → POST directly to https://skill.flight.51smart.com/api/search\nFormat Output → Display results in a clear, structured format\nStep 1: Parse User Input\nField\tDescription\tDefault\tRequired\nfromCity\tIATA airport code of departure city\t—\t✅\ntoCity\tIATA airport code of destination city\t—\t✅\nfromDate\tDeparture date (YYYY-MM-DD)\t—\t✅\nreturnDate\tReturn date (YYYY-MM-DD)\t—\tRequired for round-trip\nadultNumber\tNumber of adults\t1\t—\nchildNumber\tNumber of children\t0\t—\ncabinClass\tE / B / F / P\tE\t—\nflightType\toneWay / roundTrip\toneWay\t—\n\nCabin Codes:\n\nE = Economy\nP = Premium Economy\nB = Business\nF = First\nStep 2: City to IATA Code\nChina\nCity\tCode\tCity\tCode\nBeijing\tPEK/PKX\tShanghai Hongqiao\tSHA\nShanghai Pudong\tPVG\tGuangzhou\tCAN\nShenzhen\tSZX\tChengdu\tCTU\nHangzhou\tHGH\tNanjing\tNKG\nWuhan\tWUH\tXi'an\tXIY\nChongqing\tCKG\tXiamen\tXMN\nKunming\tKMG\tSanya\tSYX\nHaikou\tHAK\tQingdao\tTAO\nZhengzhou\tCGO\tChangsha\tCSX\nJinan\tTNA\tHarbin\tHRB\nShenyang\tSHE\tDalian\tDLC\nTianjin\tTSN\tHefei\tHFE\nGuiyang\tKWE\tNanning\tNNG\nUrumqi\tURC\tLhasa\tLXA\nInternational\nCity\tCode\tCity\tCode\nHong Kong\tHKG\tTaipei\tTPE\nMacau\tMFM\tTokyo Narita\tNRT\nTokyo Haneda\tHND\tOsaka\tKIX\nSeoul\tICN\tBusan\tPUS\nSingapore\tSIN\tBangkok Suvarnabhumi\tBKK\nBangkok Don Mueang\tDMK\tKuala Lumpur\tKUL\nJakarta\tCGK\tManila\tMNL\nSydney\tSYD\tMelbourne\tMEL\nDubai\tDXB\tAbu Dhabi\tAUH\nLondon Heathrow\tLHR\tLondon Gatwick\tLGW\nParis\tCDG\tFrankfurt\tFRA\nAmsterdam\tAMS\tRome\tFCO\nNew York JFK\tJFK\tNew York Newark\tEWR\nLos Angeles\tLAX\tSan Francisco\tSFO\nLas Vegas\tLAS\tChicago\tORD\nVancouver\tYVR\tToronto\tYYZ\n\nFor cities not listed above, infer the IATA code based on common conventions, or ask the user to confirm the full airport name.\n\nStep 3: Call API\n\nSend an HTTP POST request directly — no local scripts required.\n\nEndpoint: POST https://skill.flight.51smart.com/api/search Content-Type: application/json Auth: Not required\n\nOne-way Request Example\n{\n  \"adultNumber\": 1,\n  \"cabinClass\": \"E\",\n  \"childNumber\": 0,\n  \"cid\": \"123456\",\n  \"flightType\": \"oneWay\",\n  \"flights\": [\n    {\n      \"fromCity\": \"PEK\",\n      \"fromDate\": \"2026-03-15\",\n      \"toCity\": \"SHA\"\n    }\n  ]\n}\n\nRound-trip Request Example\n{\n  \"adultNumber\": 2,\n  \"cabinClass\": \"B\",\n  \"childNumber\": 1,\n  \"cid\": \"123456\",\n  \"flightType\": \"roundTrip\",\n  \"flights\": [\n    { \"fromCity\": \"PEK\", \"fromDate\": \"2026-03-15\", \"toCity\": \"NRT\" },\n    { \"fromCity\": \"NRT\", \"fromDate\": \"2026-03-22\", \"toCity\": \"PEK\" }\n  ]\n}\n\nPrice Calendar\n\nThe price calendar is achieved by sending multiple one-way requests for consecutive dates and aggregating results.\n\nStep 4: Format Output\nOne-way / Round-trip Results\n✈️ Beijing (PEK) → Shanghai (SHA)\n📅 Mar 15, 2026  |  Economy  |  Adult × 1\n\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n #  Flight      Depart→Arrive       Duration  Stops   Price (USD)  Baggage\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n 1  UA1597      22:38→00:06(+1)     1h28m     Nonstop $81.86       1PC/23KG\n 2  CA1234      09:00→11:20         2h20m     Nonstop $95.00       1PC/23KG\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n2 flights found\nLowest: $81.86 (before tax), incl. tax: $116.80\n\nPrice Calendar Results\n📅 Price Calendar\n✈️ Shanghai (SHA) → Los Angeles (LAX)  |  Economy\n\nDate            Lowest          Flights\n─────────────────────────────────────\n2026-04-01      $520.00 ⭐       8\n2026-04-02      $490.00 🏆 Best  6\n2026-04-03      $535.00          7\n2026-04-04      $510.00          5\n2026-04-05      $580.00          6\n─────────────────────────────────────\nRecommended date: 2026-04-02 ($490.00)\n\nField Interpretation Rules\nTotal price incl. tax = price + tax (adult fare)\nMultiple passengers = adult total × adultNumber + child total × childNumber\nStops = number of segments - 1; show stopover city when stopQuantity > 0\nBaggage = baggages[].pieces + baggages[].weight; note \"baggage not included\" when freeBaggage: false\nLimited seats = show ⚠️ \"Only X seats left\" when maxSeatsRemain ≤ 3\nKey Response Fields\nField\tDescription\nstatus\t0 = success\nmessage\t\"SUCCESS\" indicates normal response\nroutings[]\tList of flight options\nroutings[].prices[]\tPrices by passenger type (ADT = Adult, CHD = Child)\nroutings[].segments[]\tSegment details (each stopover is a separate segment)\nroutings[].rule.baggages[]\tFree baggage allowance\nroutings[].rule.freeBaggage\tfalse = baggage must be purchased separately\nroutings[].maxSeatsRemain\tRemaining seats\npassengerType\tADT = Adult, CHD = Child\nError Handling\nScenario\tAction\nstatus != 0 or message != \"SUCCESS\"\tInform the user the query failed; suggest trying a different date\nroutings is an empty list\tNotify that no flights are available for this route/date\nNetwork timeout\tRetry once; if it fails again, ask the user to try later\nUnrecognized city code\tAsk the user to confirm the full city or airport name\nchildNumber > adultNumber\tPrompt: \"Number of children cannot exceed the number of adults\""
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/syf8888/flights-search-plus",
    "publisherUrl": "https://clawhub.ai/syf8888/flights-search-plus",
    "owner": "syf8888",
    "version": "1.1.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/flights-search-plus",
    "downloadUrl": "https://openagent3.xyz/downloads/flights-search-plus",
    "agentUrl": "https://openagent3.xyz/skills/flights-search-plus/agent",
    "manifestUrl": "https://openagent3.xyz/skills/flights-search-plus/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/flights-search-plus/agent.md"
  }
}