Back to Skills
    🦞

    yutori-web-research

    Use Yutori’s Research API and Browsing API

    By @juanpin
    View on GitHub
    SKILL.md
    ---
    name: yutori-web-research
    description: Use Yutori’s Research API and Browsing API (cloud browser) to research topics, collect sources, and extract structured facts from the web. Use when the user asks to “research X”, “monitor/find papers”, or “navigate to a site and extract info” and you have access to YUTORI dev/prod endpoints via YUTORI_API_BASE and an API key in env (YUTORI_API_KEY or ~/.openclaw/openclaw.json env.YUTORI_API_KEY).
    ---
    
    # yutori-web-research
    
    Use Yutori’s cloud agents for two things:
    
    1) **Research** (wide/deep web research + citations) via `POST /v1/research/tasks`
    2) **Browsing** (web navigation agent on a cloud browser) via `POST /v1/browsing/tasks`
    
    This skill is for **web tasks** where a dedicated web agent is helpful (papers, competitors, product info, extracting lists from a site), and where OpenClaw’s local `web_fetch` or `browser` tool is not ideal.
    
    ## Preconditions (auth + endpoint)
    
    - Requires **YUTORI_API_KEY** (preferred: provided by OpenClaw Gateway env; fallback: `~/.openclaw/openclaw.json` at `env.YUTORI_API_KEY`).
    - Endpoint defaults to **dev** unless overridden:
      - Set `YUTORI_API_BASE=https://api.dev.yutori.com` (dev)
      - or `YUTORI_API_BASE=https://api.yutori.com` (prod)
    
    If requests return `403 Forbidden`, the key likely lacks access to the requested API product (Research/Browsing).
    
    ## Bundled runner scripts
    
    This skill expects a small Node runner script to exist (or be bundled alongside this skill):
    
    - `yutori-research.mjs` — create + poll a research task; prints **pretty text** output.
    
    Recommended: bundle it under `scripts/yutori-research.mjs` in this skill folder.
    
    ## Workflow: Research a topic (brief + reading list)
    
    When the user asks for research (example: “RL papers in the last month”):
    
    1) Write a tight query prompt that requests:
       - **1-page brief** (themes + trends)
       - **curated reading list** (10–15 items, each with title, 1–2 sentence summary, why it matters, and link)
       - Prefer primary sources (arXiv + publisher pages)
    
    2) Run the research task using the runner script (example):
    
    ```bash
    cd /Users/juanpin/.openclaw/workspace
    node yutori-research.mjs "Research reinforcement learning papers from the last 30 days. Output (1) a concise 1-page brief of themes/trends and (2) a curated list of 12 papers with title, 2-sentence summary, why it matters, and a link. Prefer arXiv + conference links."
    ```
    
    3) Return results to the user as **clean bullets** (not raw JSON), and include source URLs.
    
    ## Workflow: Browse a site and extract info (e.g., employees list)
    
    Use the Browsing API when the user asks:
    - “Navigate to <site> and list …”
    - “Fill a form / click through pages / collect items”
    
    Create a browsing task (example curl):
    
    ```bash
    curl --request POST \
      --url "$YUTORI_API_BASE/v1/browsing/tasks" \
      --header "x-api-key: $YUTORI_API_KEY" \
      --header "Content-Type: application/json" \
      --data '{
        "task": "Give me a list of all employees (names and titles) of Yutori.",
        "start_url": "https://yutori.com",
        "max_steps": 60
      }'
    ```
    
    Poll until `succeeded`, then return a deduplicated list.
    
    ## Output style
    
    - Prefer **pretty text** + bullets.
    - Include the key source URLs.
    - If the agent output contains HTML (e.g., `<pre>...</pre>`), strip it and return plain text.
    
    ## Troubleshooting
    
    - `401 Missing API key header`: ensure you are sending the correct header. Yutori uses `x-api-key` for most APIs.
    - `403 Forbidden`: key doesn’t have access to that product in that environment.
    - Long-running tasks: share the `view_url` and optionally poll longer.