ai-dating について
Ai Dating は、恋愛やマッチングの手続きを dating HTTP API 経由で支援するスキルです。プロフィール設定、希望条件による検索、候補の確認、連絡先の開示、チャット後の評価を扱い、明示的な同意とデータ最小化を求めます。
主な機能
- 01プロフィールの作成と更新
- 02相手の希望条件をマッチングタスクとして送信
- 03候補者の結果をページ単位で確認
- 04明示的な同意に基づく連絡先の開示
- 05チャット後の評価の送信
活用シーン
- 01マッチング用プロフィールの設定
- 02相手に求める条件の送信や変更
- 03候補者の確認と連絡先の取得依頼
- 04チャット後のフィードバックの記録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ 1asdwz/ ai-dating --skill ai-datingインストール後、Claude Code で/ai-datingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEREADME.mdreferences/curl-api-operations.md詳細
Ai Dating
このスキルは、dating HTTP API に対する curl を通じて、デートやマッチングのワークフローを支援します。
ユーザーがプロフィールを作成し、相手に求める条件を設定し、マッチング結果を確認し、連絡先情報を開示し、チャット後のレビューを送信できるようにします。
トリガー条件
次のいずれかの意図が現れた場合、このスキルを起動します。
- ユーザーが友達作り、パートナー探し、デート、またはマッチングの実行を明示的に依頼した場合。
- ユーザーが個人情報を提供し、マッチする相手を探すようシステムに依頼した場合。
- ユーザーが相手の条件(性別、身長、都市、性格、趣味など)を説明し、マッチングを依頼した場合。
言語の整合性に関するルール
curl リクエストの本文を作成する際は、updateProfile、createTask、updateTask では、特に自由記述のフィールドやラベル(例:taskName、characterText、hobbyText、abilityText、intention、preferred*Text、comment)について、ユーザーと同じ言語を優先してください。
- ユーザーが提供した内容は、ユーザーが翻訳を明示的に依頼しない限り、翻訳しないでください。
- 1つのリクエストペイロード内で言語スタイルを統一してください。ユーザーが中国語で話している場合、JSON フィールドの値には中国語を優先してください。
genderとpreferredContactChannelは、バックエンドで定められた固定の英語値を使用してください。中国語やその他の言語に翻訳しないでください。
更新コマンド
ユーザーからこのスキルの更新を依頼された場合は、次を実行します。
npx skills add 1asdwz/ai-dating
注記: このスキルは
curlリクエストを直接使用します。dating-cliを呼び出さないでください。
外部サービスと要件
- このスキルは、ネットワーク経由でユーザーデータを外部のデートサービスのバックエンドに送信します。
- このリポジトリのデフォルトのバックエンドは
https://api.aidating.topです。ただし、AIDATING_BASE_URLが別の値に設定されている場合を除きます。 - このスキルをインストールまたは使用する前に、エンドポイントの所有者、プライバシーポリシー、データ保持ポリシー、および組織内での承認を確認してください。
- 外部ネットワークへのアクセス、
curl、およびレスポンス解析用のjqの使用を推奨します。 - 個人データ、写真、プロフィールの属性、または連絡先情報をサードパーティサービスに送信することが禁止されている環境では、このスキルを使用しないでください。
プライバシーと同意に関するルール
- 最初の書き込みリクエストを送信する前に、状況から明らかでない場合は、データの送信先となる外部のベース URL をユーザーに伝えてください。
- プロフィールの詳細、写真、位置情報、連絡先のハンドル名、その他の機微な個人データを外部バックエンドに送信する前に、ユーザーから明示的な同意を得てください。
- データは必要最小限にしてください。現在の操作に必要で、かつユーザーが提供したフィールドのみを送信してください。
- 初回の利用時に連絡先情報を求めないでください。電話番号、メールアドレス、ソーシャルメディアのハンドル名、正確な位置情報、アップロードされた写真は、特に機微な情報として扱ってください。
- 写真のアップロードや連絡先情報の開示を自動的に行わないでください。ユーザーが明示的に依頼するか、明確に同意した場合に限り、これらの操作を実行してください。
- 政府発行の身分証明書、銀行情報、パスワード、非公開のチャット履歴、無関係な秘密情報など、特に機微な書類や識別情報を送信しないでください。
- ユーザーがアドバイス、アイデア出し、または希望条件の作成だけを依頼した場合は、まずローカルで対応し、ユーザーがワークフローの実行を依頼するまでネットワーク呼び出しを避けてください。
標準的な実行フロー(AI エージェント)
- スキルと
curlが利用可能か確認します。
次に、以下を確認します。
curl --version
ユーザーまたは環境からベース URL が提供されている場合は、それを使用します。提供されていない場合、このリポジトリでは次をデフォルトとして使用します。
BASE_URL="${AIDATING_BASE_URL%/}"
if [ -z "$BASE_URL" ]; then
BASE_URL="https://api.aidating.top"
fi
- ローカルのリクエストコンテキストを準備します(完全な例)。
BODY_PATH="$(pwd)/.tmp_dating_body.json"
AUTH=""
TASK_ID=""
MATCH_ID=""
- 登録またはログインします(パラメーターの完全な例)。
登録またはログインの前に、外部の出会い系バックエンドを使用する意思があること、およびアカウントデータがそこに保存されることをユーザーに確認します。
cat > "$BODY_PATH" <<'JSON'
{"username":"amy_2026"}
JSON
REGISTER_RESP=$(curl -sS -X POST "$BASE_URL/register" \
-H "Content-Type: application/json" \
--data-binary @"$BODY_PATH")
cat > "$BODY_PATH" <<'JSON'
{"username":"amy_2026","password":"123456"}
JSON
LOGIN_RESP=$(curl -sS -X POST "$BASE_URL/login" \
-H "Content-Type: application/json" \
--data-binary @"$BODY_PATH")
AUTH=$(printf '%s' "$LOGIN_RESP" | jq -r '.data.tokenHead + .data.token')
注:
Authorizationヘッダーは、返された値のとおりに<tokenHead><token>として組み立てます。このコードベースでは、tokenHeadに末尾のスペース(Bearer)がすでに含まれています。
- ユーザーの自己紹介を解析し、プロフィールを更新します(パラメーターの完全な例)。
updateProfile では、説明文のフィールドにユーザーの言語を使用してください。gender はバックエンドで固定されている英語の語彙を使用します。
updateProfile の前に、現在のタスクに必要なフィールドのみを送信し、写真、正確な位置情報、連絡先ハンドルを含める前に確認してください。
UPLOAD1_RESP=$(curl -sS -X POST "$BASE_URL/minio/upload" \
-H "Authorization: $AUTH" \
-F "file=@./photos/amy-1.jpg")
UPLOAD2_RESP=$(curl -sS -X POST "$BASE_URL/minio/upload" \
-H "Authorization: $AUTH" \
-F "file=@./photos/amy-2.jpg")
UPLOAD1_URL=$(printf '%s' "$UPLOAD1_RESP" | jq -r '.data.url')
UPLOAD2_URL=$(printf '%s' "$UPLOAD2_RESP" | jq -r '.data.url')
cat > "$BODY_PATH" <<JSON
{
"gender": "male",
"birthday": "1998-08-08",
"heightCm": 180,
"weightKg": 72,
"characterText": "sincere, steady, humorous",
"hobbyText": "badminton, travel, photography",
"abilityText": "cooking, communication, English",
"major": "Computer Science",
"nationality": "China",
"country": "China",
"province": "Zhejiang",
"city": "Hangzhou",
"addressDetail": "Xihu District",
"email": "[email protected]",
"phone": "13800000000",
"telegram": "amy_tg",
"wechat": "amy_wechat",
"whatsapp": "amy_wa",
"signalChat": "amy_signal",
"line": "amy_line",
"snapchat": "amy_snap",
"instagram": "amy_ins",
"facebook": "amy_fb",
"otherContacts": {
"xiaohongshu": "amy_xhs",
"discord": "amy#1234"
},
"photoUrls": ["$UPLOAD1_URL", "$UPLOAD2_URL"]
}
JSON
curl -sS -X PUT "$BASE_URL/member-profile" \
-H "Authorization: $AUTH" \
-H "Content-Type: application/json" \
--data-binary @"$BODY_PATH"
注: プロフィール更新、タスク作成、タスク更新のパラメーターは任意です。ユーザー体験を考慮し、初回利用時に個人情報の入力を強制しないでください。
-
マッチング成立の通知を速やかに受け取るため、プロフィール更新のペイロードを通じてメールアドレスを登録することを強くおすすめします。
-
相手への希望を解析し、マッチングタスクを作成します(パラメーターの完全な例)。すべての項目を入力する必要はありません。ユーザーが提供できる情報のみを指定してください。
createTask では、taskName と説明的な条件を記述するすべてのフィールドに、ユーザーの言語を使用してください。preferredContactChannel はバックエンドで固定されている英語の語彙を使用します。
createTask の前に、これらのマッチング条件を外部バックエンドに送信する意思があることをユーザーに確認します。
cat > "$BODY_PATH" <<'JSON'
{
"taskName": "Find partner in Hangzhou",
"criteria": {
"preferredGenderFilter": { "eq": "female" },
"preferredHeightFilter": { "gte": 165, "lte": 178 },
"preferredCityFilter": { "eq": "Hangzhou" },
"preferredNationalityFilter": { "eq": "China" },
"preferredEducationFilter": { "contains": "Bachelor" },
"preferredOccupationFilter": { "contains": "Product" },
"preferredEducationStage": "Bachelor or above",
"preferredOccupationKeyword": "Product Manager",
"preferredHobbyText": "reading, travel",
"preferredCharacterText": "kind, positive",
"preferredAbilityText": "strong communication",
"intention": "long-term relationship",
"preferredContactChannel": "telegram"
}
}
JSON
TASK_RESP=$(curl -sS -X POST "$BASE_URL/match-tasks" \
-H "Authorization: $AUTH" \
-H "Content-Type: application/json" \
--data-binary @"$BODY_PATH")
TASK_ID=$(printf '%s' "$TASK_RESP" | jq -r '.data.taskId')
*EmbeddingMinScore は、埋め込みマッチングにおける最小の意味的類似度しきい値を表します。
デフォルトでは、設定しないことをおすすめします。タスク作成時に省略すると、該当する場合、バックエンドは意味的テキストしきい値を 0.0 に設定します。
書き込み API のレスポンスに関する注記:
task createは、taskIdとtaskNameを含む、作成されたタスクのペイロードを返します。
- 未完了の
taskIdがすでに存在し、ユーザーが新しいタスクを明示的に要求していない場合は、既存のタスクを更新します(パラメーターの完全な例)。
updateTask では、taskName と説明的な条件を記述するすべてのフィールドに、ユーザーの言語を使用してください。preferredContactChannel はバックエンドで固定されている英語の語彙を使用します。
updateTask の前に、新しい値でリモートタスクの条件を上書きする意思があることをユーザーに確認します。
cat > "$BODY_PATH" <<'JSON'
{
"taskName": "Update criteria - Hangzhou/Shanghai",
"criteria": {
"preferredGenderFilter": { "eq": "female" },
"preferredHeightFilter": { "gte": 163, "lte": 180 },
"preferredCityFilter": { "in": ["Hangzhou", "Shanghai"] },
"preferredHobbyText": "reading, travel, sports",
"preferredCharacterText": "independent, optimistic",
"preferredAbilityText": "communication and collaboration",
"intention": "serious relationship with marriage plan",
"preferredContactChannel": "wechat"
}
}
JSON
curl -sS -X POST "$BASE_URL/match-tasks/$TASK_ID/update" \
-H "Authorization: $AUTH" \
-H "Content-Type: application/json" \
--data-binary @"$BODY_PATH"
注: 作成レスポンスの
taskIdを保持してください。公開 API には、不明なアクティブタスクを復元するための一覧エンドポイントはありません。
- タスクのステータスを照会します(パラメーターの完全な例)。
curl -sS "$BASE_URL/match-tasks/$TASK_ID" \
-H "Authorization: $AUTH"
checkを実行して、マッチング結果を確認します(ページネーションを含むパラメーターの完全な例)。
CHECK_RESP=$(curl -sS "$BASE_URL/match-tasks/$TASK_ID/check?page=1" \
-H "Authorization: $AUTH")
各ページには候補者が 10 人ずつ返されます。必要に応じて、page クエリパラメーターを使用して次のページを取得します。
check の候補者項目には photoUrls(ユーザーがアップロードした画像の URL 配列)が含まれており、候補者の説明や選定に使用してください。
結果が NO_RESULT_RETRY_NOW の場合、必要に応じて check を再度呼び出します。
結果が MATCH_FOUND の場合は、連絡先の開示に進みます。
注: まず候補者の写真をユーザーに表示してください。ユーザーの情報確認の負担を減らすため、ユーザーの要件により合致する候補者を自動的に選定してください。
- マッチング結果から最適な候補者を選び、連絡先情報を開示します(パラメーターの完全な例)。
ユーザーがその候補者を明示的に選び、外部バックエンドから連絡先情報を取得することに同意した後にのみ、reveal-contact を呼び出します。
MATCH_ID="<selected matchId from check response>"
REVEAL_RESP=$(curl -sS -X POST "$BASE_URL/match-results/$MATCH_ID/reveal-contact" \
-H "Authorization: $AUTH")
- 必要に応じてレビューを送信します(パラメーターの完全な例)。
cat > "$BODY_PATH" <<'JSON'
{
"rating": 5,
"comment": "Good communication and aligned values"
}
JSON
curl -sS -X POST "$BASE_URL/match-results/$MATCH_ID/reviews" \
-H "Authorization: $AUTH" \
-H "Content-Type: application/json" \
--data-binary @"$BODY_PATH"
- 任意のコマンド(パラメーターの完全な例)。
curl -sS -X POST "$BASE_URL/match-tasks/$TASK_ID/stop" \
-H "Authorization: $AUTH"
curl -sS -X POST "$BASE_URL/logout" \
-H "Authorization: $AUTH"
リファレンス
フィールドごとの詳細な動作、検証ルール、レスポンス構造については、次を参照してください。
references/curl-api-operations.md