Proof of Type Input について
Proof of Type Inputは、人が入力したことを検証できるテキスト欄をサイトに追加します。コメントや記事を受け付けるサイトの開発者向けで、文字単位の入力とスマートフォンでの確認により署名付き証明を生成し、文章自体から推測しません。
主な機能
- 01検証可能な人間入力欄の埋め込み
- 02署名付き証明トークンの生成
- 03テキスト、サイトオリジン、トークンの検証
- 04JavaScriptとReactに対応
- 05オンラインとオフラインでの検証
活用シーン
- 01コメントフォームの人間入力を検証
- 02投稿記事やレビューの確認
- 03サーバー保存前の証明検証
MCP 対応
MCPサーバーは、フレームワーク別のクイックスタート、証明トークンの検証、トピック解説を提供し、コーディングエージェントによる実装を支援します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://www.proofoftype.com/mcpclaude mcp add --transport http com-proofoftype-input https://www.proofoftype.com/mcp{"mcpServers":{"com-proofoftype-input":{"type":"http","url":"https://www.proofoftype.com/mcp"}}}Cursor で開く{"servers":{"com-proofoftype-input":{"type":"http","url":"https://www.proofoftype.com/mcp"}}}VS Code で開く{"mcpServers":{"com-proofoftype-input":{"type":"http","url":"https://www.proofoftype.com/mcp"}}}{"mcpServers":{"com-proofoftype-input":{"serverUrl":"https://www.proofoftype.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
3| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| framework | enum | いいえ | デフォルト:htmlhtml | javascript | react | nextjs | express | python | wordpress | curl | offline |
詳細
人間による入力の証明
人間が入力したことを証明するテキストボックスです。
スクリプトタグを1つ追加するだけで、サイトのコメント、投稿、レビュー、記事に、実際に人間が入力したことを証明する仕組みを組み込めます。Proof of Typeにサインインし、1文字ずつ入力し(貼り付けやAI生成テキストは不可)、スマートフォンでFace IDまたは指紋認証を使って確認します。サーバーにはテキストと署名済みの証明トークンが送られ、あなたや誰でも検証できます。
- ライブデモとドキュメント: https://www.proofoftype.com/developers
- APIリファレンス: https://www.proofoftype.com/developers/api
- AI アシスタント向け: https://www.proofoftype.com/llms.txt
<script src="https://www.proofoftype.com/sdk/v1.js" async></script>
<form method="post" action="/comments">
<div data-proofoftype data-name="comment" data-placeholder="Write a comment"></div>
<button>Post</button>
</form>
フォームが送信されると、ユーザーがスマートフォンで確認し、その後サーバーに次の情報が届きます。
| フィールド | 内容 |
|---|---|
comment | 入力されたとおりのテキスト |
comment_proof | 証明トークン(EdDSA署名付きJWT) |
AI コーディングエージェントで構築する(MCP)
サイトをバイブコーディングしていますか?Proof of Type MCP サーバーに接続して、エージェントに「人間が入力したことを証明するコメントボックスを作って」と依頼してください。
claude mcp add --transport http proofoftype https://www.proofoftype.com/mcp
その他のクライアント(Cursor、VS Code、…):
{ "mcpServers": { "proofoftype": { "url": "https://www.proofoftype.com/mcp" } } }
ツール:get_quickstart(framework)、verify_proof(token, text, origin)、explain(topic)。
その理由
AI生成テキストは今や無料で無尽蔵に作成でき、AI検出ツールは完成した文章から推測することしかできないため、どちらの方向にも誤判定します。Proof of Typeは推測しません。テキストがどのように作られたかを証明します。
- ユーザーは当社の入力欄にキーを1つずつ入力します。proofoftype.comのセキュアなフレーム内で動作するため、ホストページ、拡張機能、スクリプトでキー入力を偽装することはできません。
- 入力は当社のサーバーで時間計測され(即時入力や再生はできません)、人間らしい入力リズムが採点されます。
- ユーザーはProof of TypeアプリでFace IDまたは指紋認証を使い、正確なテキストをスマートフォンで承認します。スマートフォンのハードウェアがアプリを証明します(Apple App Attest、Android key attestation)。スクリプトではこの手順を実行できません。
貼り付けたテキストや生成されたテキストには、証明が付与されません。
サーバーで検証する
テキストを保存する前に、必ず証明を確認してください。有効で、テキストと一致し、あなたのサイトで作成された場合にのみ受け入れます。
const r = await fetch('https://www.proofoftype.com/api/v1/verify', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
token: req.body.comment_proof,
text: req.body.comment, // the exact text
origin: 'https://your-site.com', // your site
max_age_seconds: 600, // made in the last 10 minutes
}),
}).then((res) => res.json());
if (!r.valid || !r.text_matches || !r.origin_matches || !r.fresh) {
return res.status(400).send('Please type your comment in the box.');
}
// Use each proof once: store r.proof.id with the comment, refuse repeats
// (proof tokens are public — they're in proof links).
// r.proof.author: the Proof of Type username who typed it
// r.proof.link: a link pasted with the text, if any
ヘルパーを使う場合は、server.mjsをプロジェクトにコピーしてください(verifyProof({ token, text, origin }))。
または、APIを直接呼び出すこともできます(キーは不要です)。
curl -s https://www.proofoftype.com/api/v1/verify \
-H 'Content-Type: application/json' \
-d '{"token":"<comment_proof>","text":"<comment>","origin":"https://your-site.com"}'
{ "valid": true, "text_matches": true, "origin_matches": true,
"proof": { "id": "pot_…", "author": "yogev", "origin": "https://your-site.com",
"typed_at": "2026-10-11T18:20:31.000Z", "score": 87, "words": 6, "text_sha256": "…" } }
オフライン検証
証明トークンはEdDSA(Ed25519)で署名されたJWTです。公開鍵:https://www.proofoftype.com/.well-known/jwks.json
import { createRemoteJWKSet, jwtVerify } from 'jose';
import { createHash } from 'node:crypto';
const JWKS = createRemoteJWKSet(new URL('https://www.proofoftype.com/.well-known/jwks.json'));
const { payload } = await jwtVerify(token, JWKS, {
issuer: 'https://www.proofoftype.com',
audience: 'https://your-site.com',
});
if (payload.text_sha256 !== createHash('sha256').update(text, 'utf8').digest('hex')) throw new Error('Not the signed text');
| クレーム | 内容 |
|---|---|
iss | https://www.proofoftype.com |
sub | 証明ID(pot_…) |
aud | 入力が行われたサイト |
iat | 検証された時刻 |
typed_by | "human" |
author | Proof of Typeのユーザー名 |
signed_on | "ios"または"android" |
text_sha256 | 正確なUTF-8テキストのSHA-256(16進数) |
score、wpm、words、chars | 人間らしさのスコア(0~100)、入力速度、長さ |
JavaScript API
const input = ProofOfType.mount('#editor', {
placeholder: 'Write your article…',
maxWords: 2000,
button: false, // verify from your own button
});
input.on('change', ({ words }) => {});
const proof = await input.verify(); // { text, html, token, author, score, url, … }
オプション:name、placeholder、maxWords(10~3000)、theme(auto | light | dark)、button、buttonLabel、form、typewriter(入力アニメーションを表示。デフォルトはtrue)、typewriterColor(例:'#e11d48')、sound(デフォルトはtrue)、allowLinks(デフォルトはtrue:貼り付けたリンクを1つ証明に署名します。検証レスポンスからproof.linkとして読み取れます。falseにすると、すべての貼り付けをブロックします)。result.htmlは表示用の書式にすぎず、証明の対象ではありません。サニタイズするか、result.textを使用してください。同じオプションはdata-属性(data-max-words、data-button-label、…)でも指定できます。
イベント:ready、signin、change、verified、error、resize。要素上でもDOMイベント(proofoftype:verified)としてディスパッチされます。
React
react.jsxをプロジェクトにコピーしてください。SDKは自動的に読み込まれます。
import { HumanInput } from './react.jsx';
<HumanInput placeholder="Write a comment" onVerified={(r) => save(r.text, r.token)} />
TypeScriptの型定義:index.d.ts。
プライバシー
- Proof of Type は、サイト上で入力されたテキストを保存しません。証明に署名されるのは、その SHA-256 のみです。
- キーストロークは検証され、破棄されます。テキストがページに届くのは検証後で、届くのはページの実際のオリジンだけです。
- サイトが取得するのは Proof of Type のユーザー名だけで、メールアドレスやアカウント情報は取得しません。
- 各証明は一度だけ使用できます。入力セッション 1 回、電話での署名 1 回、証明 1 つです。
オープンソースの範囲
このリポジトリには、ブラウザー SDK、React コンポーネント、サーバーヘルパー、型、サンプル(MIT)が含まれます。検証処理(キーストロークの取得、入力タイムライン、電話での署名)は Proof of Type 上で実行され、ホストページから変更できません。これが証明に価値をもたらします。
FAQ
サイト上のコメントが AI ではなく人間によって書かれたと、どうすればわかりますか? この入力欄をテキストボックスとして使用し、サーバー上で証明を検証してください。サインインした人が入力欄にテキストを入力し、電話で承認した場合にのみ証明が生成されます。
これは AI 検出ツールですか? いいえ。テキストから推測するのではなく、入力、時間の計測、人による署名というプロセスを証明します。
ユーザーにアカウントは必要ですか? はい。無料の Proof of Type アカウントと Proof of Type アプリ(iPhone または Android)が必要です。サインインはポップアップ 1 回で済み、証明ごとに Face ID または指紋認証を 1 回行います。
貼り付けはできますか? リンクのみ貼り付けできます。入力した単語の自動修正は許可されますが、予測入力、スワイプ入力、音声入力は許可されません。
費用はいくらですか? 人間は無料です。
リンク
- ドキュメント:https://www.proofoftype.com/developers
- API:https://www.proofoftype.com/developers/api
- OpenAPI:https://www.proofoftype.com/openapi.json
- 変更履歴:https://www.proofoftype.com/developers/changelog
- Proof of Type:https://www.proofoftype.com
MIT © Proof of Type
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。