{
  "schemaVersion": "1.0",
  "item": {
    "slug": "browser-relay-xiaohongshu",
    "name": "Browser Relay",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/esojourn/browser-relay-xiaohongshu",
    "canonicalUrl": "https://clawhub.ai/esojourn/browser-relay-xiaohongshu",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/browser-relay-xiaohongshu",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=browser-relay-xiaohongshu",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "CLAUDE.md",
      "README.md",
      "SKILL.md",
      "relay.py",
      "requirements.txt",
      "start.sh"
    ],
    "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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.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/browser-relay-xiaohongshu"
    },
    "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/browser-relay-xiaohongshu",
    "agentPageUrl": "https://openagent3.xyz/skills/browser-relay-xiaohongshu/agent",
    "manifestUrl": "https://openagent3.xyz/skills/browser-relay-xiaohongshu/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/browser-relay-xiaohongshu/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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Browser Relay Skill",
        "body": "通过 HTTP relay 控制用户本地 Chromium，用于操作会封锁数据中心 IP 的网站（如小红书）。"
      },
      {
        "title": "架构",
        "body": "AI → HTTP (port 18792) → relay.py → CDP (port 9222) → 用户本地 Chromium\n\n所有请求从用户本地 IP 发出，绕过反爬。"
      },
      {
        "title": "安全说明",
        "body": "relay 仅监听 127.0.0.1（localhost），不会暴露到外部网络\n每次启动自动生成随机 auth token，所有 API 请求必须携带\ntoken 文件 (/tmp/browser-relay-token) 以 0600 权限写入，仅文件所有者可读\n/evaluate 端点允许在浏览器上下文中执行 JS，可访问 DOM、cookies、localStorage 等。仅限本地可信调用方使用，不应暴露给不受信任的客户端\n建议在隔离环境（虚拟机、容器）中运行，使用专用浏览器 profile（不含敏感站点的登录态）\nstart.sh 仅通过 PID 文件精确停止 relay 进程，不会影响其他进程"
      },
      {
        "title": "Agent 行为约束",
        "body": "使用此 skill 的 agent 必须遵守以下规则："
      },
      {
        "title": "exec 使用范围",
        "body": "exec 仅允许用于以下操作：\n\n向 127.0.0.1:18792（relay）和 127.0.0.1:9222（CDP）发送 HTTP 请求\n运行 start.sh 启动/停止 relay\n读取 /tmp/browser-relay-token\n保存截图到 ./screenshots/\n通过 Telegram Bot API 发送截图（仅限用户明确要求时）\n\n禁止使用 exec 执行上述范围之外的命令。"
      },
      {
        "title": "/evaluate 使用范围",
        "body": "/evaluate 仅允许用于 UI 自动化目的：\n\n查询 DOM 元素位置、文本内容、页面标题\n等待元素加载、检查页面状态\n模拟用户交互（滚动、表单填写）\n\n禁止通过 /evaluate 提取以下敏感数据：\n\ndocument.cookie\nlocalStorage / sessionStorage 中的 token 或凭据\n页面中的密码字段值\n任何认证相关的 header 或 token"
      },
      {
        "title": "数据外发限制",
        "body": "仅允许向 Telegram Bot API 发送截图图片，且仅在用户明确要求时\n禁止向任何外部端点发送从浏览器提取的文本数据、cookies、token 或凭据\n禁止将浏览器敏感数据写入 session_state 或 memory（auth token 除外，指 relay 自身的 token）"
      },
      {
        "title": "文件位置",
        "body": "以下路径均相对于项目安装目录，请根据实际位置调整。\n\nRelay 代码: ./relay.py\n启动脚本: ./start.sh\nToken 文件: /tmp/browser-relay-token\nPID 文件: /tmp/browser-relay.pid\n日志: /tmp/relay.log\n截图目录: ./screenshots/"
      },
      {
        "title": "启动流程",
        "body": "每次会话开始使用 relay 前，按以下步骤操作："
      },
      {
        "title": "1. 检查 Chromium 是否运行",
        "body": "curl -s http://127.0.0.1:9222/json/version\n\n如果连接失败，说明 Chromium 未启动，需要启动它（见下方\"启动 Chromium\"）。"
      },
      {
        "title": "2. 启动 Chromium（如果未运行）",
        "body": "DISPLAY=:0 nohup chromium --remote-debugging-port=9222 --remote-allow-origins=* > /dev/null 2>&1 &\n\n注意事项：\n\n必须加 --remote-allow-origins=* 否则 WebSocket 连接会被拒绝\n必须加 DISPLAY=:0（或对应的显示环境变量）以在用户桌面上显示\nPuppy Linux 环境，chromium 命令名可能是 chromium 或 chromium-browser，按实际情况调整\n启动后等待几秒再继续操作"
      },
      {
        "title": "3. 检查 relay 状态",
        "body": "curl -s http://127.0.0.1:18792/health\n\n如果返回 {\"status\":\"ok\"}，跳到步骤 5。否则继续。"
      },
      {
        "title": "4. 启动 relay",
        "body": "bash start.sh"
      },
      {
        "title": "5. 获取并缓存 token",
        "body": "cat /tmp/browser-relay-token\n\n读取后用 session_state 缓存到当前会话：\n\nsession_state set namespace=browser-relay key=token value=<token>\n\n后续所有请求从 session_state 读取 token，不重复读文件。"
      },
      {
        "title": "API 调用模板",
        "body": "所有请求都需要 Authorization: Bearer <token> 头。"
      },
      {
        "title": "获取标签页列表",
        "body": "curl -s -H \"Authorization: Bearer $TOKEN\" http://127.0.0.1:18792/tabs"
      },
      {
        "title": "导航",
        "body": "curl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"url\":\"https://www.xiaohongshu.com\"}' \\\n  http://127.0.0.1:18792/navigate"
      },
      {
        "title": "截图（带自动保存）",
        "body": "TOKEN=$(cat /tmp/browser-relay-token)\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"quality\":70}' http://127.0.0.1:18792/screenshot \\\n  | python3 -c \"\nimport sys, json, base64, os\nfrom datetime import datetime\ndata = json.load(sys.stdin)\nif data.get('ok'):\n    os.makedirs('./screenshots', exist_ok=True)\n    fname = datetime.now().strftime('%Y%m%d_%H%M%S') + '.jpg'\n    path = f'./screenshots/{fname}'\n    with open(path, 'wb') as f:\n        f.write(base64.b64decode(data['data']))\n    print(f'saved:{path} size:{os.path.getsize(path)}')\nelse:\n    print(f'error:{data}')\n\""
      },
      {
        "title": "截图并发送到 Telegram",
        "body": "当用户在 Telegram 上交互时，截图需要发送到 TG 才能看到。流程：\n\n# 1. 截图并保存\nTOKEN=$(cat /tmp/browser-relay-token)\nSCREENSHOT_PATH=\"/tmp/relay_screenshot.png\"\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"quality\":80}' http://127.0.0.1:18792/screenshot \\\n  | python3 -c \"\nimport sys, json, base64\ndata = json.load(sys.stdin)\nif data.get('ok'):\n    with open('$SCREENSHOT_PATH', 'wb') as f:\n        f.write(base64.b64decode(data['data']))\n    print('ok')\nelse:\n    print(f'error:{data}')\n\"\n\n# 2. 通过 Telegram Bot API 发送图片\nTG_BOT_TOKEN=\"<从 session_state 或 memory 获取>\"\nTG_CHAT_ID=\"<从 session_state 或 memory 获取>\"\ncurl -s -X POST \"https://api.telegram.org/bot${TG_BOT_TOKEN}/sendPhoto\" \\\n  -F \"chat_id=${TG_CHAT_ID}\" \\\n  -F \"photo=@${SCREENSHOT_PATH}\"\n\nTelegram 配置：\n\nBot Token 和 Chat ID 从 memory 或 session_state 获取\nChat ID 可从 session 信息中提取（telegram:alzmoltis_bot:<chat_id>）\n发送前确保截图文件存在且非空\n安全提示：建议使用专用 Bot（权限最小化），不要复用管理其他敏感频道的 Bot Token"
      },
      {
        "title": "点击（坐标）",
        "body": "curl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"x\":100,\"y\":200}' http://127.0.0.1:18792/click"
      },
      {
        "title": "点击（CSS 选择器）",
        "body": "curl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"selector\":\"button.submit\"}' http://127.0.0.1:18792/click"
      },
      {
        "title": "输入文字",
        "body": "curl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"text\":\"要输入的内容\"}' http://127.0.0.1:18792/type"
      },
      {
        "title": "按键",
        "body": "curl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"key\":\"Enter\"}' http://127.0.0.1:18792/keypress"
      },
      {
        "title": "滚动",
        "body": "curl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"y\":300}' http://127.0.0.1:18792/scroll"
      },
      {
        "title": "执行 JS",
        "body": "curl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"expression\":\"document.title\"}' http://127.0.0.1:18792/evaluate"
      },
      {
        "title": "等待元素出现",
        "body": "curl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"selector\":\".target-element\",\"timeout\":5000}' http://127.0.0.1:18792/wait"
      },
      {
        "title": "标签页管理",
        "body": "# 新建标签页\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"url\":\"https://example.com\"}' http://127.0.0.1:18792/tab/new\n\n# 切换标签页\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"tab_id\":\"xxx\"}' http://127.0.0.1:18792/tab/activate\n\n# 关闭标签页\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"tab_id\":\"xxx\"}' http://127.0.0.1:18792/tab/close"
      },
      {
        "title": "标准操作规范",
        "body": "截图确认制：任何发布/提交操作前，必须先截图让用户确认\n截图自动保存：所有截图保存到 ./screenshots/ 并带时间戳\nTelegram 截图发送：当用户在 TG 上交互时，截图通过 Telegram Bot API 发送，而不是仅保存到本地\nToken 会话缓存：token 只读一次，缓存在 session_state 中\n错误重连：如果请求失败（连接拒绝），自动尝试重启 relay\n操作间隔：点击/输入操作之间加 sleep 0.5~1 模拟人类节奏"
      },
      {
        "title": "停止 relay",
        "body": "bash start.sh stop"
      }
    ],
    "body": "Browser Relay Skill\n\n通过 HTTP relay 控制用户本地 Chromium，用于操作会封锁数据中心 IP 的网站（如小红书）。\n\n架构\nAI → HTTP (port 18792) → relay.py → CDP (port 9222) → 用户本地 Chromium\n\n\n所有请求从用户本地 IP 发出，绕过反爬。\n\n安全说明\nrelay 仅监听 127.0.0.1（localhost），不会暴露到外部网络\n每次启动自动生成随机 auth token，所有 API 请求必须携带\ntoken 文件 (/tmp/browser-relay-token) 以 0600 权限写入，仅文件所有者可读\n/evaluate 端点允许在浏览器上下文中执行 JS，可访问 DOM、cookies、localStorage 等。仅限本地可信调用方使用，不应暴露给不受信任的客户端\n建议在隔离环境（虚拟机、容器）中运行，使用专用浏览器 profile（不含敏感站点的登录态）\nstart.sh 仅通过 PID 文件精确停止 relay 进程，不会影响其他进程\nAgent 行为约束\n\n使用此 skill 的 agent 必须遵守以下规则：\n\nexec 使用范围\n\nexec 仅允许用于以下操作：\n\n向 127.0.0.1:18792（relay）和 127.0.0.1:9222（CDP）发送 HTTP 请求\n运行 start.sh 启动/停止 relay\n读取 /tmp/browser-relay-token\n保存截图到 ./screenshots/\n通过 Telegram Bot API 发送截图（仅限用户明确要求时）\n\n禁止使用 exec 执行上述范围之外的命令。\n\n/evaluate 使用范围\n\n/evaluate 仅允许用于 UI 自动化目的：\n\n查询 DOM 元素位置、文本内容、页面标题\n等待元素加载、检查页面状态\n模拟用户交互（滚动、表单填写）\n\n禁止通过 /evaluate 提取以下敏感数据：\n\ndocument.cookie\nlocalStorage / sessionStorage 中的 token 或凭据\n页面中的密码字段值\n任何认证相关的 header 或 token\n数据外发限制\n仅允许向 Telegram Bot API 发送截图图片，且仅在用户明确要求时\n禁止向任何外部端点发送从浏览器提取的文本数据、cookies、token 或凭据\n禁止将浏览器敏感数据写入 session_state 或 memory（auth token 除外，指 relay 自身的 token）\n文件位置\n\n以下路径均相对于项目安装目录，请根据实际位置调整。\n\nRelay 代码: ./relay.py\n启动脚本: ./start.sh\nToken 文件: /tmp/browser-relay-token\nPID 文件: /tmp/browser-relay.pid\n日志: /tmp/relay.log\n截图目录: ./screenshots/\n启动流程\n\n每次会话开始使用 relay 前，按以下步骤操作：\n\n1. 检查 Chromium 是否运行\ncurl -s http://127.0.0.1:9222/json/version\n\n\n如果连接失败，说明 Chromium 未启动，需要启动它（见下方\"启动 Chromium\"）。\n\n2. 启动 Chromium（如果未运行）\nDISPLAY=:0 nohup chromium --remote-debugging-port=9222 --remote-allow-origins=* > /dev/null 2>&1 &\n\n\n注意事项：\n\n必须加 --remote-allow-origins=* 否则 WebSocket 连接会被拒绝\n必须加 DISPLAY=:0（或对应的显示环境变量）以在用户桌面上显示\nPuppy Linux 环境，chromium 命令名可能是 chromium 或 chromium-browser，按实际情况调整\n启动后等待几秒再继续操作\n3. 检查 relay 状态\ncurl -s http://127.0.0.1:18792/health\n\n\n如果返回 {\"status\":\"ok\"}，跳到步骤 5。否则继续。\n\n4. 启动 relay\nbash start.sh\n\n5. 获取并缓存 token\ncat /tmp/browser-relay-token\n\n\n读取后用 session_state 缓存到当前会话：\n\nsession_state set namespace=browser-relay key=token value=<token>\n\n\n后续所有请求从 session_state 读取 token，不重复读文件。\n\nAPI 调用模板\n\n所有请求都需要 Authorization: Bearer <token> 头。\n\n获取标签页列表\ncurl -s -H \"Authorization: Bearer $TOKEN\" http://127.0.0.1:18792/tabs\n\n导航\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"url\":\"https://www.xiaohongshu.com\"}' \\\n  http://127.0.0.1:18792/navigate\n\n截图（带自动保存）\nTOKEN=$(cat /tmp/browser-relay-token)\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"quality\":70}' http://127.0.0.1:18792/screenshot \\\n  | python3 -c \"\nimport sys, json, base64, os\nfrom datetime import datetime\ndata = json.load(sys.stdin)\nif data.get('ok'):\n    os.makedirs('./screenshots', exist_ok=True)\n    fname = datetime.now().strftime('%Y%m%d_%H%M%S') + '.jpg'\n    path = f'./screenshots/{fname}'\n    with open(path, 'wb') as f:\n        f.write(base64.b64decode(data['data']))\n    print(f'saved:{path} size:{os.path.getsize(path)}')\nelse:\n    print(f'error:{data}')\n\"\n\n截图并发送到 Telegram\n\n当用户在 Telegram 上交互时，截图需要发送到 TG 才能看到。流程：\n\n# 1. 截图并保存\nTOKEN=$(cat /tmp/browser-relay-token)\nSCREENSHOT_PATH=\"/tmp/relay_screenshot.png\"\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"quality\":80}' http://127.0.0.1:18792/screenshot \\\n  | python3 -c \"\nimport sys, json, base64\ndata = json.load(sys.stdin)\nif data.get('ok'):\n    with open('$SCREENSHOT_PATH', 'wb') as f:\n        f.write(base64.b64decode(data['data']))\n    print('ok')\nelse:\n    print(f'error:{data}')\n\"\n\n# 2. 通过 Telegram Bot API 发送图片\nTG_BOT_TOKEN=\"<从 session_state 或 memory 获取>\"\nTG_CHAT_ID=\"<从 session_state 或 memory 获取>\"\ncurl -s -X POST \"https://api.telegram.org/bot${TG_BOT_TOKEN}/sendPhoto\" \\\n  -F \"chat_id=${TG_CHAT_ID}\" \\\n  -F \"photo=@${SCREENSHOT_PATH}\"\n\n\nTelegram 配置：\n\nBot Token 和 Chat ID 从 memory 或 session_state 获取\nChat ID 可从 session 信息中提取（telegram:alzmoltis_bot:<chat_id>）\n发送前确保截图文件存在且非空\n安全提示：建议使用专用 Bot（权限最小化），不要复用管理其他敏感频道的 Bot Token\n点击（坐标）\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"x\":100,\"y\":200}' http://127.0.0.1:18792/click\n\n点击（CSS 选择器）\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"selector\":\"button.submit\"}' http://127.0.0.1:18792/click\n\n输入文字\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"text\":\"要输入的内容\"}' http://127.0.0.1:18792/type\n\n按键\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"key\":\"Enter\"}' http://127.0.0.1:18792/keypress\n\n滚动\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"y\":300}' http://127.0.0.1:18792/scroll\n\n执行 JS\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"expression\":\"document.title\"}' http://127.0.0.1:18792/evaluate\n\n等待元素出现\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"selector\":\".target-element\",\"timeout\":5000}' http://127.0.0.1:18792/wait\n\n标签页管理\n# 新建标签页\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"url\":\"https://example.com\"}' http://127.0.0.1:18792/tab/new\n\n# 切换标签页\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"tab_id\":\"xxx\"}' http://127.0.0.1:18792/tab/activate\n\n# 关闭标签页\ncurl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\" \\\n  -d '{\"tab_id\":\"xxx\"}' http://127.0.0.1:18792/tab/close\n\n标准操作规范\n截图确认制：任何发布/提交操作前，必须先截图让用户确认\n截图自动保存：所有截图保存到 ./screenshots/ 并带时间戳\nTelegram 截图发送：当用户在 TG 上交互时，截图通过 Telegram Bot API 发送，而不是仅保存到本地\nToken 会话缓存：token 只读一次，缓存在 session_state 中\n错误重连：如果请求失败（连接拒绝），自动尝试重启 relay\n操作间隔：点击/输入操作之间加 sleep 0.5~1 模拟人类节奏\n停止 relay\nbash start.sh stop"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/esojourn/browser-relay-xiaohongshu",
    "publisherUrl": "https://clawhub.ai/esojourn/browser-relay-xiaohongshu",
    "owner": "esojourn",
    "version": "0.2.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/browser-relay-xiaohongshu",
    "downloadUrl": "https://openagent3.xyz/downloads/browser-relay-xiaohongshu",
    "agentUrl": "https://openagent3.xyz/skills/browser-relay-xiaohongshu/agent",
    "manifestUrl": "https://openagent3.xyz/skills/browser-relay-xiaohongshu/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/browser-relay-xiaohongshu/agent.md"
  }
}