メインコンテンツへスキップ

Refrain

Refrain クラスは、ローカルのブラウザインスタンスで手順書を実行します。
import { Refrain } from "@refrainai/sdk";

const client = new Refrain({
  ai: {
    modelId: "claude-sonnet-4-6",
    provider: "anthropic",
    apiKey: process.env.ANTHROPIC_API_KEY!,
  },
});

設定

コンストラクタは RefrainConfig オブジェクトを受け取ります:
プロパティ必須デフォルト説明
aiYesAI モデル設定(下記参照)
headlessNotrueヘッドレスモードでブラウザを起動
loggerFactoryNonoopカスタムロガー実装
debugNofalseデバッグログを有効化
apiKeyNoプラン機能用 API キー
localeNo"en"UI 言語: "en" または "ja"
stealthNobot 検出回避(Pro+)
proxyNoHTTP プロキシ URL または設定オブジェクト

AI モデル設定

プロパティ必須説明
modelIdYesモデル識別子(例: "claude-sonnet-4-6", "gpt-4o"
providerYesanthropic | openai | openai-compatible | google | azure | bedrock | vertex
apiKeyNoプロバイダーの API キー
baseURLNoカスタムエンドポイント(openai-compatible 用)
modelOverridesNo用途別モデル ID(下記参照)

プロバイダー固有のプロパティ

プロパティ説明
azureResourceNameAzure リソース名
azureApiVersionAzure API バージョン

モデルオーバーライド

特定のタスクで使用するモデルを上書きします(Business+ プラン):
const client = new Refrain({
  ai: {
    modelId: "claude-sonnet-4-6",
    provider: "anthropic",
    apiKey: "sk-ant-...",
    modelOverrides: {
      selector: "claude-haiku-4-5-20251001",    // セレクタ解決に高速モデル
      extraction: "claude-haiku-4-5-20251001",  // データ抽出に高速モデル
      review: "claude-sonnet-4-6",              // レビューに Sonnet
      vision: "claude-sonnet-4-6",              // Vision 対応モデル
    },
  },
});
用途説明
exploration手順書生成
exploration-light通常の探索ステップ
selector高頻度のセレクタ解決
extraction高頻度のデータ抽出
reviewレビュー、パッチ、提案
fallbackAgent Fallback
visionVision Fallback(スクリーンショットベース)

プロキシ設定

// URL 文字列
const client = new Refrain({
  ai: { ... },
  proxy: "http://user:[email protected]:8080",
});

// 設定オブジェクト
const client = new Refrain({
  ai: { ... },
  proxy: {
    server: "http://proxy.example.com:8080",
    username: "user",
    password: "pass",
  },
});

execute()

const report = await client.execute(runbook, options);

ExecuteOptions

プロパティ必須デフォルト説明
contextMarkdownYes補足情報コンテキスト Markdown
variablesNoテンプレート変数の値
secretsNoシークレット変数(ログでマスク)
stepDelayNoYAML の値ステップ間の待機時間(ms)
executionStrategyNoカスタムリトライ戦略
enableSelectorCacheNofalse成功したセレクタ解決を永続化
enableAgentFallbackNofalseAI 代替パス探索
enableVisionFallbackNofalseスクリーンショットベースの解決
outputDirNoダウンロード・エクスポートのディレクトリ
screenshotDirNoスクリーンショット保存ディレクトリ
debugLogPathNoデバッグログのパス(JSONL)
runbookPathNo手順書ファイルパス(キャッシュキーとして使用)
mergeDownloadsNofalseダウンロードした CSV ファイルをマージ
jobTimeoutMsNoプランの値ジョブタイムアウト(ミリ秒)
skillsNoスキルプラグイン名
dataStoreNoメモリデータコレクションストア

ExecutionReport

execute() メソッドは ExecutionReport を返します:
interface ExecutionReport {
  runbookTitle: string;
  startUrl: string;
  totalSteps: number;
  executed: number;
  succeeded: number;
  failed: number;
  skipped: number;
  aborted: boolean;
  steps: StepExecutionResult[];
  totalDurationMs: number;
  memoryCollections?: Record<string, number>;
  downloadedFiles?: string[];
  videoPaths?: string[];
  aiMetrics?: AIMetricsSummary;
}
完全な StepExecutionResult のリファレンスは型リファレンスを参照してください。

loadRunbook()

YAML ファイルを読み込みパースします:
import { loadRunbook } from "@refrainai/sdk";

const runbook = await loadRunbook("./runbooks/login-flow.yaml");
console.log(runbook.title, runbook.steps.length);

dispose()

リソースをクリーンアップします:
await client.dispose();
ブラウザプロセスを確実に終了するため、終了時は必ず dispose() を呼び出してください。