TabbitBlog

ログイン済みブラウザーでSchematron V2 Turboを使う

Schematron V2 TurboはHTMLからschemaに沿ったデータを抽出します。ブラウザー操作と下書き作成は別のローカルエージェントが担当します。

この記事の内容
  1. 先に結論
  2. ブラウザー操作と抽出を分担する
  3. 許可されたページだけを読む
  4. 名前付きレビュー用下書きを作る
  5. 機能ごとに問題を確認する

Schematron V2 Turboだけではログイン済みブラウザーを操作できません。HTMLからschemaに沿って項目を抽出するモデルであり、Inference.netはSchematron抽出モデルがツール呼び出しに対応しないと明記しています。チーム文書の下書きを作るには、別のローカルエージェントか人がTabbit BrowserとTabbit CLIで許可されたページを開き、必要なHTMLを抽出モデルに渡します。その後、担当者が元ページと名前付きの下書きを照合します。

inference-net/schematron-v2-turbo が返すのはschemaに沿った項目です。ページ移動、クリック、書き込みはしません。公式のSchematronドキュメントでは、抽出指示はschemaに含め、通常のsystem/userプロンプトは使わないと説明しています。コーディングエージェントの資料でも、Schematron抽出モデルはツール呼び出し非対応とされています。

先に結論

  • HTMLから型の決まった項目を抽出する用途に使い、ブラウザー操作エージェントとは考えない。

  • Inference.netの正確なモデルIDは inference-net/schematron-v2-turbo。

  • ローカルの担当者がログイン済みページを開く。クライアントがローカルツールに対応すればTabbit CLIを使える。

  • 抽出ルールはJSON Schemaのフィールド説明に書く。通常のsystem/userプロンプトは使えない。

  • 元ページは読み取り専用にし、共有下書きを保存する前に人が各項目を確認する。

ブラウザー操作と抽出を分担する

担当できることそれだけではできないこと
Schematron V2 TurboInference.net APIでHTMLをschema準拠のJSONに変換ブラウザーを開く、移動する、クリックする、共有文書を編集する
ローカルのブラウザー担当者選択したTabbit環境でCLIからページを読む元ページを見ずに抽出値が正しいと判断する
汎用ローカルエージェントローカル操作を調整し、設定済みAPIを呼び出すブラウザーツールが別プロファイルを使う場合にセッションを再利用する
人のレビュアー下書きと元ページを比較し、次の作業を決めるschemaに合うだけで内容が正しいと思い込まない

対応クライアントではTabbitの /tabbit Skillがローカルランチャーの使い方を伝えます。Skill選択画面を使うクライアントもあります。Codexなら /skills一覧を確認します。Skillの検出、CLIの接続、サイトへのログインは別々の確認です。既存ブラウザーにエージェントを接続する方法でプロファイルと権限を確認してください。

許可されたページだけを読む

Tabbit Browserをインストールし、使うプロファイルでチームサイトを開いてログインします。HTMLをInference.net APIに送る前に、組織の情報管理ルールで許可されているか確かめてください。次にローカルエージェントでTabbit Skillを読み込み、名前を付けた別タスクタブからCLIを使います。クライアントがローカル操作を実行できなければ、正確なURLと読み取り専用の確認項目をローカルエージェントか人に渡してください。リモートモデルはブラウザーのセッションを引き継ぎません。

例として、許可されたリリースノート2ページから見出しと表示中の状態を読み取ります。最初は読み取りだけにし、ページのタイトルとURLも返させると照合しやすくなります。ブラウザーエージェントの初回タスク確認表は範囲の絞り方を説明し、Web検索とブラウザー操作の違いは検索結果では非公開ページのアクセスを証明できない理由を説明します。

HTMLを用意した後で、schemaに抽出項目を記述します。次はAPI呼び出しの例です。このコードは記事用に実行していません。

import { readFile } from "node:fs/promises";
import OpenAI from "openai";
import { z } from "zod";
import { zodResponseFormat } from "openai/helpers/zod";

const client = new OpenAI({
  baseURL: "https://api.inference.net/v1",
  apiKey: process.env.INFERENCE_API_KEY,
});

const ReleaseNote = z.object({
  title: z.string().describe("ページに表示された正確なタイトル。"),
  updatedDate: z.string().describe("表示中の更新日。なければ not shown。"),
  status: z.string().describe("ページ上の状態。なければ not shown。"),
  owner: z.string().describe("ページにあるチーム名または担当者。なければ not shown。"),
});

const sourceUrl = new URL(process.argv[2]);
if (!["http:", "https:"].includes(sourceUrl.protocol)) {
  throw new Error("Expected an HTTP or HTTPS source URL");
}
const html = await readFile("approved-record.html", "utf8");

const response = await client.chat.completions.parse({
  model: "inference-net/schematron-v2-turbo",
  messages: [{ role: "user", content: html }],
  response_format: zodResponseFormat(ReleaseNote, "release_note"),
  temperature: 0,
});

const extracted = response.choices[0].message.parsed;
if (!extracted) throw new Error("No parsed record returned");
console.log(JSON.stringify({ ...extracted, sourceUrl: sourceUrl.href }));

許可された HTML を approved-record.html に保存し、Tabbit で取得した URL を第 1 引数として渡します。クライアントが抽出後に URL を添えるので、モデルが返すのはページ上の 4 項目です。

名前付きレビュー用下書きを作る

SchematronのJSONは、別の文章作成ステップに渡します。ローカル担当者や汎用エージェントは項目を整理できますが、抽出モデルがブラウザーを開いたり共有文書を更新したりしたとは説明しないでください。

抽出した項目と各ページのURLから「リリースノート確認 - 11月10日」という下書きを作ってください。
各ページにタイトル、表示中の更新日、状態、担当者、URLを含め、
not shown とした項目も残してください。
書き込み操作を開いたり、チーム文書を保存・送信したりしないでください。
通常のTabbitタブで元ページと項目を照合してから、
文書の担当者が保存内容を決めます。

名前を付けると、文書の担当者が確認すべきものを見つけられます。元ページは通常のTabbitタブに残し、別のタスクタブで読み取りを行います。この環境の合成セッション試験では最初の要求がHTTP 401でした。一時Cookieを設定すると別タスクが練習ページを読み取りました。チームのアカウントは使わず、Schematron APIも文書更新も行っていません。

実在アカウント情報を含まない、Authorized training workspaceと表示されたローカル合成ページ。
ローカルの練習ページです。チーム文書やSchematronの出力ではありません。

機能ごとに問題を確認する

症状次に確認すること
JSONは返るがページが開かない正常です。別のローカル担当者を使います。Schematronはツール呼び出し非対応です。
APIがモデルIDを拒否する最新モデル一覧で inference-net/schematron-v2-turbo を確認します。
欄が抜ける、意味が曖昧schemaに説明と未表示時の処理を追加し、該当HTMLを渡します。
形式は合うが値が違う元ページと比較します。schema準拠は事実確認ではありません。
Tabbit Skillが見つからないクライアントのSkill選択画面または保存先を確認して再起動します。
サイトがログインを要求する同じTabbitプロファイルで自分で開き、許可されていればログインします。

ローカルのクライアント接続はモデル選択と別です。Tabbit CLIは対応するローカルクライアントのブラウザー操作に使えますが、SchematronがTabbitの対応Agentモデルだとは述べていません。ブラウザーMCPとCLIの比較、Tabbit CLIの完全ガイド、エージェントブラウザーの役割も参考になります。ローカル環境が必要ならダウンロードページからTabbitを入手してください。

V2 Turboでログイン済みブラウザーを操作した第一手の報告は見つかりませんでした。以前の世代のAPIについてレート制限やサーバーエラーを報告する古いReddit投稿はありますが、V2 Turboの状態を示すものではないため、現在の挙動の根拠にはしません。これは例示の引き継ぎ手順で、検証済みの統合ではありません。

モデルは公式に説明されたHTML抽出に使います。ローカル担当者に許可済みページを読ませ、保存前に名前付き草稿の各項目を照合してください。

よくある質問

Schematron V2 TurboのAPIモデルIDは何ですか?

Inference.netのドキュメントでは `inference-net/schematron-v2-turbo` です。クライアントを設定する前に、プロバイダーの最新モデル一覧を確認してください。

Schematron V2 Turboはログイン済みページを開けますか?

開けません。HTMLから構造化データを抽出するモデルです。Inference.netはSchematron抽出モデルがツール呼び出しに対応しないと明記しています。

構造化出力はブラウザーツール呼び出しと同じですか?

違います。JSON Schemaは応答の形を指定しますが、ページ移動やクリック、共有文書の編集はできません。

ログイン済みページのHTMLはどう渡しますか?

許可されたローカルブラウザー担当者がページを読み、必要なHTMLを準備します。社内情報をAPIに送る前に組織の規則を確認してください。

クライアントでTabbit CLIを実行できない場合は?

Tabbit SkillとCLIを使えるローカルエージェントを使うか、自分でページを読みます。リモートのモデル呼び出しはローカルのログイン状態を引き継ぎません。

共有文書の流れをSchematronで試しましたか?

いいえ。これは作業の引き継ぎ例です。ローカルのTabbitセッション確認では合成ページを使い、Schematron APIもチーム文書も操作していません。

次のステップへ

Tabbit と一緒に仕事をしましょう。

タブをまたいで調査し、繰り返しのブラウザ作業を自動化し、あらゆる文脈を手の届くところに。