Skip to content

Page Extractor

Tool pipeline: the agent requests the page, Fetch URL brings it, Transform reduces it to the fields that matter — and only then the model reads it.

Updated on Sep 02, 2026

An entire web page within the model's context is expensive and noisy: menus, footers, cookie banners. What the agent needs is the title and text.

This flow shows tool chaining — the pipeline — which is the feature that almost nobody uses and saves the most tokens: the next tool processes the previous result before it reaches the model.

How to import

On the platform: Agents → Import, choose the downloaded file. It enters as a new draft (nothing existing is changed), with refreshed observability IDs. Then fill in what belongs to your environment — credentials, URLs, and knowledge bases — and publish.

The file

page-extractor.hinow-agent.jsonjson
{
 "format": "hinow.agent",
 "version": 1,
 "exported_at": "2026-09-01T00:00:00Z",
 "credentials_included": false,
 "agent": {
  "name": "Extrator de páginas",
  "description": "Pipeline de ferramentas: busca a página, estrutura o resultado e só então entrega ao agente.",
  "avatar": null,
  "model": "hinow/hicode",
  "system_prompt": null,
  "config": {},
  "tools": null,
  "workflow": {
   "nodes": [
    {
     "id": "start",
     "type": "start",
     "position": {
      "x": 300,
      "y": 0
     },
     "data": {
      "label": "Início",
      "variables": []
     }
    },
    {
     "id": "agent-1",
     "type": "agent",
     "position": {
      "x": 285,
      "y": 170
     },
     "data": {
      "name": "extrator",
      "model": "hinow/hicode",
      "system_prompt": "O usuário envia uma URL. Use a ferramenta fetch_url para buscar o conteúdo e apresente: título da página e resumo em 3 bullets. Se não houver URL, peça uma.",
      "config": {}
     }
    },
    {
     "id": "fetch-1",
     "type": "fetch_url",
     "position": {
      "x": 560,
      "y": 90
     },
     "data": {
      "label": "Buscar página"
     }
    },
    {
     "id": "tf-1",
     "type": "transform",
     "position": {
      "x": 560,
      "y": 240
     },
     "data": {
      "label": "Estruturar",
      "config": {
       "type": "pick",
       "isArray": false,
       "fields": [
        {
         "source": "title",
         "target": "titulo"
        },
        {
         "source": "content",
         "target": "conteudo"
        }
       ]
      }
     }
    },
    {
     "id": "end-1",
     "type": "end",
     "position": {
      "x": 305,
      "y": 340
     },
     "data": {
      "label": "Fim"
     }
    }
   ],
   "edges": [
    {
     "id": "e-start-agent-1-d",
     "source": "start",
     "target": "agent-1"
    },
    {
     "id": "e-agent-1-end-1-d",
     "source": "agent-1",
     "target": "end-1"
    },
    {
     "id": "e-fetch-1-agent-1-tool",
     "source": "fetch-1",
     "target": "agent-1",
     "sourceHandle": "tool",
     "targetHandle": "slot-0"
    },
    {
     "id": "e-fetch-1-tf-1-output",
     "source": "fetch-1",
     "target": "tf-1",
     "sourceHandle": "output"
    }
   ]
  }
 }
}

Card by card

CardWhy it's hereWhat it does
**Agent extractor**Who converses and decides.Receives the URL from the user and calls the tool. If no URL came, it asks.
**Fetch URL**Brings the content.Downloads the page and extracts the content. Connected to the agent's **slot** — it's a tool the model can call.
**Transform**Reduces before the model sees it.Mode pick: keeps only titletitulo and contentconteudo. Not in the agent's slot: it's **in the output** of Fetch URL.

The connection that changes everything

Notice the two different connections leaving the tools:

  • fetch-1 → agent-1 with targetHandle: "slot-0"agent tool: enters the list of tools the model can call.
  • fetch-1 → tf-1 with sourceHandle: "output"pipeline: the result from Fetch URL passes through Transform before returning.

Transform doesn't appear as a tool to the model. It's a filter on the return path — and that's why the context doesn't overflow.

How to adapt to your case

  • Monitor concurrency or pricing: Web Search → Fetch URL → Transform, and the agent receives a clean list.
  • After your Webhook: the same Transform reduces your API's fat response to the 4 fields that matter — the practical workaround for responseMapping that doesn't run yet.
  • Summarize instead of cut: replace Transform with a Summarize card when the content is flowing text, not JSON.

All ready-made flows

Other complete agents to import and adapt.