O Schematron V2 Small extrai JSON tipado de HTML, mas não abre sites nem controla um navegador. Use primeiro um navegador local autorizado, como o Tabbit Browser, para capturar apenas o conteúdo necessário; depois envie o HTML com um JSON Schema à Inference.net. A API não recebe instruções livres nem ferramentas de navegador, então o esquema precisa descrever a extração. A documentação oficial mostra esse padrão.
Para uma página autenticada, use um agente local que consiga acessar o Tabbit CLI em uma aba de tarefa separada e leia somente o registro necessário. Valide o resultado e salve-o como um rascunho nomeado para revisão. Não envie dados da conta ou da página a uma API externa sem autorização e permissão de tratamento.
Principais conclusões
Small extrai dados do HTML; não navega, clica, autentica nem escolhe uma página.
O ID de API documentado é
inference-net/schematron-v2-small.Capture e limite o conteúdo no navegador. O Tabbit CLI conecta um cliente local ao navegador.
Defina as regras dos campos no esquema, não em um prompt de sistema.
Separe páginas públicas e autenticadas e compare cada resultado à fonte.
Schematron V2 Small em resumo
| Necessidade | O que Small faz | O que outro componente precisa fazer |
|---|---|---|
| Ler conteúdo da página | Extrai campos do HTML recebido | Tabbit Browser ou coletor autorizado obtém o HTML |
| Seguir regras de extração | Retorna valores conforme o JSON Schema | O esquema define campos, tipos, descrições e requisitos |
| Abrir uma URL | Não consegue; a API recebe HTML | Um agente local abre uma página permitida |
| Usar uma sessão autenticada | O modelo não acessa a sessão | Tabbit abre uma aba de tarefa no ambiente autorizado |
| Conferir a exatidão | Mantém a estrutura solicitada | Código ou revisor compara os valores com a fonte |
A Inference.net posiciona Small como a opção focada em qualidade para esquemas complexos e páginas longas. A documentação indica contexto de 128K tokens e recomenda limpar o HTML com lxml; páginas muito extensas devem ser reduzidas ou divididas. São informações do fornecedor, não medições deste artigo. Consulte a documentação do Schematron.
Separe captura e extração
Captura. Uma tarefa local abre uma página pública ou autorizada, espera a renderização e devolve um trecho limitado de HTML. Não capture cookies, dados de perfil, campos ocultos ou conteúdo sem relação.
Extração. O aplicativo envia o HTML como mensagem do usuário e o JSON Schema em
response_formatà API. O cliente valida os valores estruturados retornados.
O Schematron não recebe a URL, a sessão do navegador nem instruções de navegação. Em páginas renderizadas por JavaScript, uma requisição HTTP pode retornar só uma estrutura vazia; renderize a página no navegador primeiro. O exemplo abaixo adapta o padrão oficial para uma nota de versão.
import os
from pathlib import Path
from typing import Optional
from openai import OpenAI
from pydantic import BaseModel, Field
class ReleaseNote(BaseModel):
record_id: str = Field(description="ID estável exato exibido na página.")
title: str = Field(description="Título visível exato do registro.")
status: Optional[str] = Field(description="Status visível; null se ausente.")
date: Optional[str] = Field(description="Data exibida na fonte; não inferir.")
client = OpenAI(
base_url="https://api.inference.net/v1",
api_key=os.environ["INFERENCE_API_KEY"],
)
bounded_html = Path("approved-record.html").read_text(encoding="utf-8")
response = client.chat.completions.parse(
model="inference-net/schematron-v2-small",
messages=[{"role": "user", "content": bounded_html}],
response_format=ReleaseNote,
temperature=0,
)
record = response.choices[0].message.parsed
if record is None:
raise ValueError("No parsed record returned")
print(record.model_dump_json())bounded_html é o trecho retornado pelo navegador. A mensagem contém HTML, sem instruções. As descrições do esquema explicam cada campo. Consulte o guia inicial e a documentação do modelo para configuração e acesso atuais. Não coloque uma chave real em prompts, páginas ou arquivos do Git.
Faça verificações diferentes para páginas públicas e autenticadas
| Fonte | Regra de captura | Antes de enviar à API | Revisão |
|---|---|---|---|
| Página pública de produto ou documentação | Mantenha o trecho relevante e seus rótulos próximos | Remova scripts, estilos, navegação e outros registros | Compare cada valor ao conteúdo visível |
| Página de trabalho autenticada | Leia apenas a conta e o registro autorizados | Exclua dados pessoais, credenciais, campos ocultos e registros irrelevantes | Confira o ID e os campos importantes na aba original |
Comece com uma página pública pequena e um esquema explícito. Para conteúdo privado, o limite dos dados importa mais que a conveniência. Você precisa ter permissão para ler a página e para enviar o conteúdo ao provedor. Se a segunda permissão não estiver clara, mantenha o processamento local ou consulte um administrador.
Capture localmente com Tabbit CLI
Instale o Tabbit Browser e o CLI local. Escolha um cliente de agente que possa executar ferramentas locais. A sintaxe do Skill depende do cliente: use /tabbit quando ele oferecer Skills nomeados, /skill:tabbit no Pi ou a opção documentada pelo cliente. Descoberta do Skill, acesso ao executável do CLI e login no site são verificações distintas. Veja como conectar um agente ao navegador existente e a configuração do Tabbit CLI para Codex.
Dê um nome à tarefa e use uma aba própria. Por exemplo, peça ao agente local para abrir notas públicas de versão, capturar só o contêiner do registro e retornar HTML e URL. O comando nodejs usa um ID de solicitação único:
"$HOME/.local/bin/tabbit-cli" nodejs \
--task "Revisão de extração de notas de versão" \
--request-id release-notes-capture-20261110 <<'JS'
await page.goto('https://example.com/release-notes', {waitUntil: 'domcontentloaded'});
const result = await page.evaluate(() => {
const record = document.querySelector('[data-record-id="GEO-104"]');
if (!record) return null;
const fields = [
['Record ID', '[data-field="record-id"]'],
['Title', 'h1'],
['Status', '[data-field="status"]'],
['Date', 'time'],
];
const fragment = document.createElement('section');
for (const [label, selector] of fields) {
const element = record.querySelector(selector);
if (!element || !element.checkVisibility({ visibilityProperty: true })) continue;
const row = document.createElement('p');
row.textContent = label + ': ' + element.innerText.trim().slice(0, 500);
fragment.append(row);
}
return fragment.childElementCount ? fragment.outerHTML : null;
});
return {url: page.url(), html: result};
JSRevise o fragmento e salve o HTML autorizado em approved-record.html antes de executar o exemplo em Python. A captura reconstrói o HTML a partir dos campos visíveis permitidos.
O seletor é apenas ilustrativo. Inspecione a página, escolha um contêiner estável e limite o tamanho do HTML. Neste ambiente, não use --group: o Skill instalado informa que o runtime não aceita essa opção sem valor. Se for necessário login, use somente o ambiente Tabbit autorizado e confirme a conta certa. Um teste local anterior mostrou que uma segunda tarefa CLI conseguia ler uma página de teste após a criação de uma sessão temporária. Isso confirma a reutilização de sessão nesse teste, não acesso a um site externo ou integração com agente externo.
Compare o ID e os campos importantes com a aba fonte. Salve o resultado como Revisão das notas de versão — GEO-104. Mantenha a página original para consulta enquanto o agente trabalha na própria aba. O checklist da primeira tarefa de navegador ajuda a limitar a transferência.
Quando Small é adequado e onde ele para
Considere Small quando o HTML já está disponível e você precisa de uma saída tipada. Ele não substitui um agente de navegador. O navegador local cuida da navegação e da sessão autorizada, o Schematron extrai do HTML limitado, o código valida tipos e evidências e uma pessoa revisa as exceções.
A Inference.net posiciona Turbo para vazão e custo, e Small para esquemas complexos e páginas longas. Compare-os com uma amostra rotulada própria. Em layouts repetitivos, seletores ou uma API podem ser mais simples e baratos. Para HTML irregular, a extração por esquema pode reduzir parsers específicos, mas ainda exige monitoramento.
Em uma discussão no Reddit, uma pessoa com mais de 2.000 arquivos HTML descreveu tabelas aninhadas e texto variável que dificultavam XPath fixo. Em outra conversa, um profissional relatou usar o LLM em produção como uma camada leve de raciocínio sobre elementos DOM já extraídos. São experiências individuais de scraping, não testes do Schematron V2 Small: discussão sobre HTML irregular e uso em produção.
Para tarefas repetidas, consulte o guia do Tabbit CLI, a comparação entre CLI e Browser MCP e a página sobre perfis, espaços de trabalho e grupos de abas. Se o resultado orientar uma decisão, mantenha juntos o valor, a URL fonte, o ID, a data e o status da revisão. JSON válido pelo esquema facilita o repasse, mas não prova que a página foi interpretada corretamente.
Comece com um teste autorizado pequeno: capture um registro público, defina os campos necessários, execute a API com sua conta e compare cada valor à fonte antes de expandir.
Se ainda estiver decidindo o que delegar, leia o que é um navegador agêntico e o guia de automação de navegador. Eles explicam a interação que ocorre antes da extração.
Perguntas frequentes
O Schematron V2 Small abre sites sozinho?
Não. A Inference.net descreve o Schematron como um modelo de extração de HTML. Um navegador ou coletor autorizado precisa obter a página e enviar o HTML e o esquema à API.
O Schematron V2 Small aceita instruções em texto livre?
A documentação diz que o modelo não usa instruções de usuário ou de sistema. Defina as regras no JSON Schema com tipos, campos obrigatórios e descrições.
Posso usá-lo em uma página com sessão iniciada?
Sim, se a tarefa do navegador local tiver permissão para ler a página e você puder enviar o conteúdo à Inference.net. Limite a captura e exclua dados pessoais ou confidenciais.
Qual é o ID do Schematron V2 Small?
A documentação da Inference.net identifica o modelo como inference-net/schematron-v2-small. Verifique a lista de modelos e o acesso da conta antes de implantar.
Quando devo escolher Small ou Turbo?
A Inference.net posiciona Small para esquemas complexos e páginas longas, e Turbo para mais vazão e menor custo em escala. Compare ambos com uma amostra rotulada do seu próprio conteúdo.
Posso usar o JSON sem revisão?
Não. Valide a resposta com o esquema e confira os valores importantes na fonte. Encaminhe dados ausentes ou ambíguos para revisão humana. JSON válido não garante dados corretos.