ワンクリックで
anthropic-provider
Anthropic Messages API client patterns for Tampermonkey userscripts (browser-side fetch, vision support, error mapping)
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Anthropic Messages API client patterns for Tampermonkey userscripts (browser-side fetch, vision support, error mapping)
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Expert product design covering UI/UX design, design systems, prototyping, user research, and design thinking. Use when creating user journey maps, building wireframes, defining design tokens and component systems, planning usability tests, or establishing design principles for a product.
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
Design or review the OUCHN AI exam answer-tool architecture. Use when planning provider tool calling, tool-envelope fallback, DOM answer execution tools, error feedback, or refactoring AIResponse-driven answer filling into browser-safe tool execution.
Refine, parallelize, and verify a draft task specification into a fully planned implementation-ready task
Expert code review of current git changes with a senior engineer lens. Detects SOLID violations, security risks, and proposes actionable improvements.
| name | anthropic-provider |
| description | Anthropic Messages API client patterns for Tampermonkey userscripts (browser-side fetch, vision support, error mapping) |
Tampermonkey / 浏览器侧脚本里需要直连或经反代调用 Anthropic Messages API 的场合。代码不应硬编码 baseURL —— 由用户在 UI 设置项里填写,代码只负责拼接 /v1/messages 路径并带必需 headers。
POST {baseURL}/v1/messagesx-api-key: <sk-...>anthropic-version: 2023-06-01content-type: application/jsonanthropic-dangerous-direct-browser-access: true — 浏览器直连 api.anthropic.com 必需,反代无害;默认始终携带{
"model": "claude-sonnet-4-5",
"max_tokens": 2048,
"system": "可选系统 prompt(顶层字段,不在 messages 数组内)",
"messages": [
{ "role": "user", "content": "..." }
],
"temperature": 0.3
}
{
"id": "msg_...",
"type": "message",
"role": "assistant",
"content": [{ "type": "text", "text": "..." }],
"stop_reason": "end_turn",
"usage": { "input_tokens": N, "output_tokens": M }
}
取 data.content[0].text 作为最终答复。{ "type": "error", "error": { "type": "...", "message": "..." } },HTTP 状态码 400/401/429/500 等。claude-opus-4-5 — 最强能力,价格最高claude-sonnet-4-5 — 默认推荐,速度/价格/能力平衡claude-haiku-4-5 — 轻量低延迟UI 默认值与文档示例都用 claude-sonnet-4-5。
https://aigw.c5y.moe 或 https://api.anthropic.com),代码层统一拼接 /v1/messagesconst url = `${baseURL.replace(/\/+$/, '')}/v1/messages`;
https://aigw.c5y.moe现状:项目内 OpenAI Provider 使用原生 fetch,Anthropic Provider 保持一致用原生 fetch
Tampermonkey header 中 @connect * 已配置,无需改动
如遇浏览器拦截预检 / CORS 失败,回退方案:
function gmFetch({ url, headers, body }) {
return new Promise((resolve, reject) => {
GM_xmlhttpRequest({
method: 'POST',
url,
headers,
data: JSON.stringify(body),
responseType: 'text',
onload: r => resolve({ status: r.status, text: r.responseText }),
onerror: e => reject(e),
ontimeout: () => reject(new Error('timeout')),
});
});
}
仅当原生 fetch 报 CORS 时切到该路径。
与 OpenAI Provider 风格保持一致:
if (!response.ok) {
const errorText = await response.text();
throw new Error(`Anthropic ${response.status}: ${errorText.substring(0, 200)}`);
}
上层调用方按现有 OpenAI 错误链路处理(toast / 日志),不需要为 Anthropic 单独写 UI。
CORS 失败时的回退顺序:原生 fetch → GM_xmlhttpRequest。
function buildAnthropicVisionContent(text, imageBase64List) {
const parts = [{ type: 'text', text }];
for (const b64 of imageBase64List) {
const safeUri = sanitizeImageDataUri(b64);
if (!safeUri) continue;
const m = safeUri.match(/^data:(image\/[^;]+);base64,(.+)$/s);
if (!m) continue;
parts.push({
type: 'image',
source: { type: 'base64', media_type: m[1], data: m[2] },
});
}
return parts;
}
注意:source.data 是纯 base64,不带 data:image/...;base64, 前缀。media_type 仅支持 image/png | image/jpeg | image/gif | image/webp。
curl -X POST "${BASE_URL}/v1/messages" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-dangerous-direct-browser-access: true" \
-H "content-type: application/json" \
-d '{"model":"claude-sonnet-4-5","max_tokens":2048,"system":"...","messages":[{"role":"user","content":"hi"}],"temperature":0.3}'
stream: true,解析 content_block_delta 事件)messages[].content[].cache_control: { type: 'ephemeral' })