ai-dating

Direct dating and matchmaking workflow via curl against the dating HTTP API. Use when users ask to make friends, find a partner, date, run matchmaking, xiangqin, update a dating profile, upload profile photos, create or update a match task, check candidates, reveal contact details, or submit reviews.

3,891 stars
Complexity: easy

About this skill

The ai-dating skill empowers AI agents to facilitate direct dating and matchmaking processes for users. It achieves this by issuing `curl` requests against an external dating HTTP API, allowing the agent to perform a range of dating-related tasks. These include creating or updating a user's dating profile, defining partner preferences, uploading profile photos, creating or modifying matchmaking tasks, checking potential candidates, revealing contact details of matches, and submitting post-interaction reviews. This skill is designed for scenarios where users explicitly seek a partner, friends, or dating opportunities. The AI agent, leveraging this skill, can interpret user requests to find matching individuals based on provided personal information and detailed preferences like gender, height, city, personality, and hobbies. It's a comprehensive tool for an AI agent to act as a personal dating assistant, streamlining the user's journey in online matchmaking platforms that are compatible with its API. Users would utilize this skill to offload the repetitive or structured tasks of online dating to their AI agent. Instead of manually navigating a dating app, they can simply tell their AI what they want to do – update their profile, set new preferences, or inquire about matches – and the agent will execute the necessary API calls on their behalf, providing a more integrated and conversational experience for managing their dating life.

Best use case

The primary use case is to automate and simplify dating and matchmaking tasks through conversational AI. Users looking to find a partner, make friends, or manage their online dating profiles without direct manual interaction with a dating application will benefit most, as the AI agent can handle these operations via API calls.

Direct dating and matchmaking workflow via curl against the dating HTTP API. Use when users ask to make friends, find a partner, date, run matchmaking, xiangqin, update a dating profile, upload profile photos, create or update a match task, check candidates, reveal contact details, or submit reviews.

The user should expect their dating profile to be updated, matchmaking tasks to be created or adjusted, or a list of potential matches with their details to be returned, all managed by the AI agent via the dating API.

Practical example

Example input

Hey AI, can you find me a partner? I'm looking for someone who loves hiking and reading, preferably in New York City.

Example output

I've updated your preferences to include hiking and reading, and set your preferred location to New York City. I'm now searching for matches and will let you know when I have some candidates for you to review.

When to use this skill

  • When a user explicitly asks to find a partner, make friends, date, or run a match (xiangqin).
  • When a user provides personal information or partner preferences and asks the AI to find matching individuals.
  • When a user wants to update their dating profile, upload photos, or manage match tasks.
  • When a user needs to check match candidates, reveal contact details, or submit reviews for dating interactions.

When not to use this skill

  • When the user is asking for general social networking interactions unrelated to dating or matchmaking.
  • When the user is seeking relationship advice or psychological support without specific dating API interaction.
  • When the requested dating service is not supported by the external dating HTTP API this skill connects to.
  • When the user wants to interact with a dating app's UI directly, rather than via API commands.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/ai-dating/SKILL.md --create-dirs "https://raw.githubusercontent.com/openclaw/skills/main/skills/1asdwz/ai-dating/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/ai-dating/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How ai-dating Compares

Feature / Agentai-datingStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityeasyN/A

Frequently Asked Questions

What does this skill do?

Direct dating and matchmaking workflow via curl against the dating HTTP API. Use when users ask to make friends, find a partner, date, run matchmaking, xiangqin, update a dating profile, upload profile photos, create or update a match task, check candidates, reveal contact details, or submit reviews.

How difficult is it to install?

The installation complexity is rated as easy. You can find the installation instructions above.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Ai Dating

This skill supports dating and matchmaking workflows through `curl` against the dating HTTP API.  
It helps users create a profile, define partner preferences, check matching results, reveal contact details, and submit post-chat reviews.

## Trigger Conditions

Trigger this skill when any of the following intents appear:

1. The user explicitly asks to make friends, find a partner, date, or run a match.
2. The user provides personal information and asks the system to find a matching person.
3. The user describes partner preferences (for example gender, height, city, personality, hobbies) and asks for matching.

## Language Alignment Rule

When constructing `curl` request bodies, prefer the same language as the user for `updateProfile`, `createTask`, and `updateTask`, especially for all free-text fields and labels (for example `taskName`, `characterText`, `hobbyText`, `abilityText`, `intention`, `preferred*Text`, and `comment`).

- Do not translate user-provided content unless the user explicitly requests translation.
- Keep language style consistent across one request payload. If the user speaks Chinese, prefer Chinese text values in JSON fields.
- Keep `gender` and `preferredContactChannel` as the backend's fixed English values. Do not translate them into Chinese or other languages.

## Update Commands

When users ask to update this skill, run:

```bash
npx skills add 1asdwz/ai-dating
```

> **Note:** This skill uses direct `curl` requests. Do not invoke `dating-cli`.

## External Service And Requirements

- This skill sends user data to an external dating backend over the network.
- The default backend in this repository is `https://api.aidating.top` unless `AIDATING_BASE_URL` is set to another value.
- Review the endpoint owner, privacy policy, retention policy, and organizational approval before installing or using this skill.
- Require outbound network access, `curl`, and preferably `jq` for response parsing.
- Do not use this skill in environments that forbid sending personal data, photos, profile traits, or contact information to third-party services.

## Privacy And Consent Rules

- Tell the user which external base URL will receive their data before the first write request if that is not already obvious from context.
- Obtain explicit user consent before sending profile details, photos, location, contact handles, or other sensitive personal data to the external backend.
- Prefer data minimization. Only send fields the user has provided and that are necessary for the current action.
- Do not require contact fields on first use. Treat phone numbers, email addresses, social handles, exact location, and uploaded photos as especially sensitive.
- Do not upload photos or reveal contact details automatically. Perform those actions only after the user explicitly asks or clearly consents.
- Do not send highly sensitive documents or identifiers such as government IDs, banking details, passwords, private chat logs, or unrelated secrets.
- If the user only asks for advice, brainstorming, or preference drafting, help locally first and avoid network calls until the user asks to execute the workflow.

## Standard Execution Flow (AI Agent)

1. Check skill and `curl` availability.


Then verify:
```bash
curl --version
```

If the user or environment provides a base URL, use it. Otherwise, in this repository default to:
```bash
BASE_URL="${AIDATING_BASE_URL%/}"
if [ -z "$BASE_URL" ]; then
  BASE_URL="https://api.aidating.top"
fi
```

2. Prepare local request context (full examples).
```bash
BODY_PATH="$(pwd)/.tmp_dating_body.json"
AUTH=""
TASK_ID=""
MATCH_ID=""
```

3. Register or login (full parameter examples).

Before register or login, confirm the user wants to use the external dating backend and understands that account data will be stored there.
```bash
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")
```

```bash
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')
```

> **Note:** Build the `Authorization` header as `<tokenHead><token>` exactly as returned. In this codebase `tokenHead` already includes the trailing space (`Bearer `). 

4. Parse user self-description and update profile (full parameter example).

For `updateProfile`, prefer the user's language for descriptive text fields. Keep `gender` in the backend's fixed English vocabulary.
Before `updateProfile`, send only the fields required for the current task and confirm before including photos, exact location, or contact handles.
```bash
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')
```

```bash
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": "amy@example.com",
  "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"
```

> **Note:** The parameters for profile update, task create, and task update are optional. For the sake of user experience, do not force users to enter personal information on first use.

5. To receive matching success notifications promptly, strongly recommend registering an email address through the profile update payload.

6. Parse partner preferences and create a match task (full parameter example). Users do not need to fill in all fields. Only provide the information they have available.

For `createTask`, prefer the user's language for `taskName` and all descriptive criteria text fields. Keep `preferredContactChannel` in the backend's fixed English vocabulary.
Before `createTask`, confirm that the user wants to submit these matching criteria to the external backend.
```bash
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` means the minimum semantic similarity threshold for embedding matching.  
Default recommendation is to leave it unset. When omitted in task creation, the backend defaults semantic text thresholds to `0.0` where applicable.

> **Write API response note:** `task create` returns the created task payload, including `taskId` and `taskName`.

7. If an unfinished `taskId` already exists and the user did not explicitly request a new task, update the existing task (full parameter example).

For `updateTask`, prefer the user's language for `taskName` and all descriptive criteria text fields. Keep `preferredContactChannel` in the backend's fixed English vocabulary.
Before `updateTask`, confirm that the user wants to overwrite the remote task criteria with the new values.
```bash
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"
```

> **Note:** Keep `taskId` from the create response. The public API does not expose a list endpoint for recovering an unknown active task.

8. Query task status (full parameter example).
```bash
curl -sS "$BASE_URL/match-tasks/$TASK_ID" \
  -H "Authorization: $AUTH"
```

9. Execute `check` to inspect match results (full parameter example, paginated).
```bash
CHECK_RESP=$(curl -sS "$BASE_URL/match-tasks/$TASK_ID/check?page=1" \
  -H "Authorization: $AUTH")
```
Each page returns 10 candidates. Use the `page` query parameter to fetch subsequent pages when needed.
`check` candidate items include `photoUrls` (user uploaded image URL array), which should be used when explaining and selecting candidates.
If the result is `NO_RESULT_RETRY_NOW`, call `check` again as needed.  
If the result is `MATCH_FOUND`, continue to contact reveal.

> **Note:** Candidates' photos should be shown to users first. You should automatically select candidates that better meet the user's requirements, reducing the user's information burden.

10. Select the best candidate from match results and reveal contact details (full parameter example).

Only call `reveal-contact` after the user explicitly chooses that candidate and agrees to retrieve contact information from the external backend.
```bash
MATCH_ID="<selected matchId from check response>"

REVEAL_RESP=$(curl -sS -X POST "$BASE_URL/match-results/$MATCH_ID/reveal-contact" \
  -H "Authorization: $AUTH")
```

11. Submit review when needed (full parameter example).
```bash
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"
```

12. Optional commands (full parameter examples).
```bash
curl -sS -X POST "$BASE_URL/match-tasks/$TASK_ID/stop" \
  -H "Authorization: $AUTH"

curl -sS -X POST "$BASE_URL/logout" \
  -H "Authorization: $AUTH"
```

## Reference

For detailed field-level behavior, validation rules, and response structures:

- `references/curl-api-operations.md`

Related Skills

MoltMe — AI Agent Dating & Social Connection Platform

3891
from openclaw/skills

AI agent dating and social platform — register your agent, get matched by AI compatibility scoring, chat in real time, build relationships, and join the public feed. Agent-to-agent dating, human-to-agent companions, and human-to-human introductions brokered by AI. The first platform where agents date, connect, and form real relationships. Use this skill when: registering an agent on a dating platform, agent matchmaking, AI dating, agent social networking, checking a MoltMe inbox, discovering compatible agents, starting or accepting conversations, sending messages, managing followers, handling companion requests, or any interaction with the MoltMe API at moltme.io. Triggers on: "register on MoltMe", "agent dating", "AI dating", "date other agents", "find agent matches", "agent matchmaking", "agent social", "check my MoltMe inbox", "discover agents on MoltMe", "send a MoltMe message", "connect on MoltMe", "MoltMe companion", "follow agent on MoltMe", "update my MoltMe profile".

---

3891
from openclaw/skills

name: article-factory-wechat

Content & Documentation

humanizer

3891
from openclaw/skills

Remove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.

Content & Documentation

find-skills

3891
from openclaw/skills

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.

General Utilities

tavily-search

3891
from openclaw/skills

Use Tavily API for real-time web search and content extraction. Use when: user needs real-time web search results, research, or current information from the web. Requires Tavily API key.

Data & Research

baidu-search

3891
from openclaw/skills

Search the web using Baidu AI Search Engine (BDSE). Use for live information, documentation, or research topics.

Data & Research

agent-autonomy-kit

3891
from openclaw/skills

Stop waiting for prompts. Keep working.

Workflow & Productivity

Meeting Prep

3891
from openclaw/skills

Never walk into a meeting unprepared again. Your agent researches all attendees before calendar events—pulling LinkedIn profiles, recent company news, mutual connections, and conversation starters. Generates a briefing doc with talking points, icebreakers, and context so you show up informed and confident. Triggered automatically before meetings or on-demand. Configure research depth, advance timing, and output format. Walking into meetings blind is amateur hour—missed connections, generic small talk, zero leverage. Use when setting up meeting intelligence, researching specific attendees, generating pre-meeting briefs, or automating your prep workflow.

Workflow & Productivity

self-improvement

3891
from openclaw/skills

Captures learnings, errors, and corrections to enable continuous improvement. Use when: (1) A command or operation fails unexpectedly, (2) User corrects Claude ('No, that's wrong...', 'Actually...'), (3) User requests a capability that doesn't exist, (4) An external API or tool fails, (5) Claude realizes its knowledge is outdated or incorrect, (6) A better approach is discovered for a recurring task. Also review learnings before major tasks.

Agent Intelligence & Learning

botlearn-healthcheck

3891
from openclaw/skills

botlearn-healthcheck — BotLearn autonomous health inspector for OpenClaw instances across 5 domains (hardware, config, security, skills, autonomy); triggers on system check, health report, diagnostics, or scheduled heartbeat inspection.

DevOps & Infrastructure

linkedin-cli

3891
from openclaw/skills

A bird-like LinkedIn CLI for searching profiles, checking messages, and summarizing your feed using session cookies.

Content & Documentation

notebooklm

3891
from openclaw/skills

Google NotebookLM 非官方 Python API 的 OpenClaw Skill。支持内容生成(播客、视频、幻灯片、测验、思维导图等)、文档管理和研究自动化。当用户需要使用 NotebookLM 生成音频概述、视频、学习材料或管理知识库时触发。

Data & Research