{
  "schemaVersion": "1.0",
  "item": {
    "slug": "student-rooms",
    "name": "Student Rooms",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/gonzalopezgil/student-rooms",
    "canonicalUrl": "https://clawhub.ai/gonzalopezgil/student-rooms",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/student-rooms",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=student-rooms",
    "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-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-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/student-rooms"
    },
    "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/student-rooms",
    "agentPageUrl": "https://openagent3.xyz/skills/student-rooms/agent",
    "manifestUrl": "https://openagent3.xyz/skills/student-rooms/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/student-rooms/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": "student-rooms CLI",
        "body": "Multi-provider student accommodation finder and monitor. Query Yugo and Aparto for room availability, filter by semester and price, and get alerts when new options appear."
      },
      {
        "title": "Setup",
        "body": "cd /path/to/student-rooms-cli\nsource .venv/bin/activate\n\nConfig file: config.yaml (copy from config.sample.yaml if missing). Key settings:\n\ntarget:\n  country: \"Ireland\"\n  city: \"Dublin\"\nacademic_year:\n  start_year: 2026\n  end_year: 2027\nfilters:\n  max_weekly_price: 350.0\nnotifications:\n  type: \"openclaw\"  # or stdout | webhook | telegram\n  openclaw:\n    mode: \"message\"\n    channel: \"telegram\"\n    target: \"CHAT_ID\""
      },
      {
        "title": "Commands",
        "body": "All commands support --provider yugo|aparto|all (default: all) and --json for structured output."
      },
      {
        "title": "discover — List properties",
        "body": "python -m student_rooms discover --provider all\npython -m student_rooms discover --provider all --json\npython -m student_rooms discover --city Barcelona --provider aparto --json\n\nReturns property names, slugs, locations, and URLs for the target city."
      },
      {
        "title": "scan — One-shot availability check",
        "body": "# Semester 1 rooms (default filter)\npython -m student_rooms scan --provider all --json\n\n# All options (full year, semester 2, etc.)\npython -m student_rooms scan --all-options --json\n\n# Scan + send notification for top match\npython -m student_rooms scan --provider all --notify\n\nJSON output structure:\n\n{\n  \"matchCount\": 5,\n  \"matches\": [\n    {\n      \"provider\": \"yugo\",\n      \"property\": \"Residence Name\",\n      \"roomType\": \"Gold Ensuite\",\n      \"priceWeekly\": 310.0,\n      \"priceLabel\": \"€310/week\",\n      \"available\": true,\n      \"bookingUrl\": \"https://...\",\n      \"startDate\": \"2026-09-01\",\n      \"endDate\": \"2027-01-31\",\n      \"optionName\": \"Semester 1\",\n      \"dedupKey\": \"yugo|slug|gold ensuite|2026-27|Semester 1\"\n    }\n  ]\n}"
      },
      {
        "title": "watch — Continuous monitoring",
        "body": "python -m student_rooms watch --provider all\n\nScans at configured interval (default 1h + random jitter). Alerts only on new options not previously seen. Persists seen options locally to avoid duplicate alerts."
      },
      {
        "title": "probe-booking — Deep booking-flow probe",
        "body": "python -m student_rooms probe-booking --provider yugo --residence \"Dominick Place\" --json\npython -m student_rooms probe-booking --provider aparto --residence \"Binary Hub\" --json\n\nReturns booking context, available beds, direct booking links, and portal redirect URLs. Supports --residence, --room, --tenancy, --index filters."
      },
      {
        "title": "notify — Test notification",
        "body": "python -m student_rooms notify --message \"Test alert 🏠\""
      },
      {
        "title": "test-match — Test semester matching logic",
        "body": "python -m student_rooms test-match --from-year 2026 --to-year 2027 --name \"Semester 1\" --start-date 2026-09-01 --end-date 2027-01-31 --json"
      },
      {
        "title": "Location override",
        "body": "Override config target with CLI flags:\n\npython -m student_rooms scan --city Barcelona --country Spain --provider all --json"
      },
      {
        "title": "Agent usage tips",
        "body": "Always use --json for structured output.\nUse scan --json to check current availability; parse matchCount and matches array.\nUse discover --json to list what properties exist before scanning.\nUse watch as a background process for ongoing monitoring.\nCombine scan --notify to trigger alerts in a single command.\nThe dedupKey field in scan output uniquely identifies each option for tracking."
      },
      {
        "title": "OpenClaw integration",
        "body": "Set notifications.type: \"openclaw\" in config. Supports two modes:\n\nmessage: Sends alert text via openclaw message send to a channel/target.\nagent: Triggers an OpenClaw agent session with the alert as context.\n\nOptional: create_job_on_match: true creates a one-shot cron job for reservation assistance.\n\nThe tool works fully standalone — OpenClaw is only needed if you want the openclaw notification backend."
      },
      {
        "title": "Notification backends",
        "body": "BackendConfig keyRequiresstdout(default)Nothingwebhooknotifications.webhook.urlAny HTTP endpoint (Discord, Slack, ntfy.sh)telegramnotifications.telegram.bot_token + chat_idTelegram botopenclawnotifications.openclaw.targetOpenClaw CLI installed"
      },
      {
        "title": "Provider notes",
        "body": "Yugo: Dynamic API discovery (countries → cities → residences → rooms → tenancy options). Supports full booking-flow probing.\nAparto: Scrapes apartostudent.com for property discovery, then probes StarRez portal termIDs. IE/ES/IT share one portal; UK has a separate portal; France has no StarRez portal (discover-only)."
      }
    ],
    "body": "student-rooms CLI\n\nMulti-provider student accommodation finder and monitor. Query Yugo and Aparto for room availability, filter by semester and price, and get alerts when new options appear.\n\nSetup\ncd /path/to/student-rooms-cli\nsource .venv/bin/activate\n\n\nConfig file: config.yaml (copy from config.sample.yaml if missing). Key settings:\n\ntarget:\n  country: \"Ireland\"\n  city: \"Dublin\"\nacademic_year:\n  start_year: 2026\n  end_year: 2027\nfilters:\n  max_weekly_price: 350.0\nnotifications:\n  type: \"openclaw\"  # or stdout | webhook | telegram\n  openclaw:\n    mode: \"message\"\n    channel: \"telegram\"\n    target: \"CHAT_ID\"\n\nCommands\n\nAll commands support --provider yugo|aparto|all (default: all) and --json for structured output.\n\ndiscover — List properties\npython -m student_rooms discover --provider all\npython -m student_rooms discover --provider all --json\npython -m student_rooms discover --city Barcelona --provider aparto --json\n\n\nReturns property names, slugs, locations, and URLs for the target city.\n\nscan — One-shot availability check\n# Semester 1 rooms (default filter)\npython -m student_rooms scan --provider all --json\n\n# All options (full year, semester 2, etc.)\npython -m student_rooms scan --all-options --json\n\n# Scan + send notification for top match\npython -m student_rooms scan --provider all --notify\n\n\nJSON output structure:\n\n{\n  \"matchCount\": 5,\n  \"matches\": [\n    {\n      \"provider\": \"yugo\",\n      \"property\": \"Residence Name\",\n      \"roomType\": \"Gold Ensuite\",\n      \"priceWeekly\": 310.0,\n      \"priceLabel\": \"€310/week\",\n      \"available\": true,\n      \"bookingUrl\": \"https://...\",\n      \"startDate\": \"2026-09-01\",\n      \"endDate\": \"2027-01-31\",\n      \"optionName\": \"Semester 1\",\n      \"dedupKey\": \"yugo|slug|gold ensuite|2026-27|Semester 1\"\n    }\n  ]\n}\n\nwatch — Continuous monitoring\npython -m student_rooms watch --provider all\n\n\nScans at configured interval (default 1h + random jitter). Alerts only on new options not previously seen. Persists seen options locally to avoid duplicate alerts.\n\nprobe-booking — Deep booking-flow probe\npython -m student_rooms probe-booking --provider yugo --residence \"Dominick Place\" --json\npython -m student_rooms probe-booking --provider aparto --residence \"Binary Hub\" --json\n\n\nReturns booking context, available beds, direct booking links, and portal redirect URLs. Supports --residence, --room, --tenancy, --index filters.\n\nnotify — Test notification\npython -m student_rooms notify --message \"Test alert 🏠\"\n\ntest-match — Test semester matching logic\npython -m student_rooms test-match --from-year 2026 --to-year 2027 --name \"Semester 1\" --start-date 2026-09-01 --end-date 2027-01-31 --json\n\nLocation override\n\nOverride config target with CLI flags:\n\npython -m student_rooms scan --city Barcelona --country Spain --provider all --json\n\nAgent usage tips\nAlways use --json for structured output.\nUse scan --json to check current availability; parse matchCount and matches array.\nUse discover --json to list what properties exist before scanning.\nUse watch as a background process for ongoing monitoring.\nCombine scan --notify to trigger alerts in a single command.\nThe dedupKey field in scan output uniquely identifies each option for tracking.\nOpenClaw integration\n\nSet notifications.type: \"openclaw\" in config. Supports two modes:\n\nmessage: Sends alert text via openclaw message send to a channel/target.\nagent: Triggers an OpenClaw agent session with the alert as context.\n\nOptional: create_job_on_match: true creates a one-shot cron job for reservation assistance.\n\nThe tool works fully standalone — OpenClaw is only needed if you want the openclaw notification backend.\n\nNotification backends\nBackend\tConfig key\tRequires\nstdout\t(default)\tNothing\nwebhook\tnotifications.webhook.url\tAny HTTP endpoint (Discord, Slack, ntfy.sh)\ntelegram\tnotifications.telegram.bot_token + chat_id\tTelegram bot\nopenclaw\tnotifications.openclaw.target\tOpenClaw CLI installed\nProvider notes\nYugo: Dynamic API discovery (countries → cities → residences → rooms → tenancy options). Supports full booking-flow probing.\nAparto: Scrapes apartostudent.com for property discovery, then probes StarRez portal termIDs. IE/ES/IT share one portal; UK has a separate portal; France has no StarRez portal (discover-only)."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/gonzalopezgil/student-rooms",
    "publisherUrl": "https://clawhub.ai/gonzalopezgil/student-rooms",
    "owner": "gonzalopezgil",
    "version": "1.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/student-rooms",
    "downloadUrl": "https://openagent3.xyz/downloads/student-rooms",
    "agentUrl": "https://openagent3.xyz/skills/student-rooms/agent",
    "manifestUrl": "https://openagent3.xyz/skills/student-rooms/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/student-rooms/agent.md"
  }
}