dating-pilot
Tinder dating assistant CLI with smart profile filtering and conversation management. All commands output JSON.
Feature Overview
- - Smart Filtering: Browse and like profiles by age and distance preferences
- Conversation Manager: Manage messages, draft smart replies, send follow-ups
- Status Monitoring: Query chat system status and recent activity summary
- Photo Diagnosis: Analyze profile photos against dating best practices and get per-photo scores with improvement suggestions
Security & Privacy
Source: Published on npm. The source code will be open-sourced on GitHub in a future release.
Authentication: This tool does not collect, store, or transmit any Tinder account credentials. It operates through Playwright on a browser session where the user has already logged into Tinder. No passwords or auth tokens are extracted from the browser.
Data Flow: Conversation data is sent only to the AI endpoint configured by the user (e.g., Claude API). The tool does not relay, collect, or forward any data to third-party servers. All API calls are made directly from the user's machine.
Local Storage: Configuration (including AI API key) is stored locally in ~/.dating-pilot/ on the user's machine. No data is transmitted to any remote server operated by this tool's author.
No Telemetry: There is no telemetry, analytics, crash reporting, or log uploading of any kind. The tool operates entirely offline except for direct calls to Tinder (via browser) and the user-configured AI endpoint.
API Key Best Practices: The AI API key is provided by the user and used solely for calling the user-specified AI service. It is recommended to use a dedicated, permission-scoped API key rather than a master key.
Getting Started
Before use, configure AI parameters (only Anthropic-format APIs are supported, e.g., Claude API or compatible proxy services). Tinder must already be logged in via your browser — this tool uses that existing browser session and never asks for your Tinder credentials.
CODEBLOCK0
Command Reference
Global Options
- -
--help — Show help information
config — Configure AI, proxy, and location
CODEBLOCK1
| Parameter | Required | Description |
|---|
| INLINECODE2 | Required on first use | AI API endpoint (Anthropic format) |
| INLINECODE3 |
Required on first use | AI API key |
|
--ai-model | No | AI model name (e.g.,
claude-sonnet-4-6) |
|
--proxy | No | Network proxy for regions where Tinder requires one (e.g.,
socks5://host:port) |
|
--latitude | No | Latitude for match location preference |
|
--longitude | No | Longitude for match location preference |
|
--timezone | No | Timezone for match location preference (e.g.,
Asia/Shanghai) |
|
--show | No | Show current configuration |
swipe — Batch swipe with filters
CODEBLOCK2
| Parameter | Required | Description |
|---|
| INLINECODE13 | Yes | Target number of likes |
| INLINECODE14 |
No | Minimum age |
|
--max-age | No | Maximum age |
|
--max-distance | No | Maximum distance (km) |
Output example:
CODEBLOCK3
chat start — Start conversation manager
⚠️ Long-running task: Once started, the conversation manager runs in the background. Use exec background:true to invoke.
Automatically checks configuration and launches the browser on startup (no manual launch needed). Use chat stop at any time to terminate the manager and release all resources.
CODEBLOCK4
| Parameter | Required | Description |
|---|
| INLINECODE19 | No | Maximum number of chats to handle at once (default: all). Use a small number (e.g., 3-5) to start. |
| INLINECODE20 |
No | User preferences (injected into AI personality, e.g., "girls who like sports") |
chat stop — Stop conversation manager
CODEBLOCK5
Stops the conversation manager and releases resources.
chat status — Query chat status
CODEBLOCK6
| Parameter | Required | Description |
|---|
| INLINECODE21 | No | Query activity summary for the last N minutes |
Output example (with --since 30):
CODEBLOCK7
chat proactive — Send follow-up messages
CODEBLOCK8
Analyzes conversations and sends follow-up messages to active matches. This runs autonomously once triggered, sending messages to matches that haven't responded. The scope is limited by the --max-chats value set in chat start. Requires the conversation manager to be initialized. Use chat stop to terminate at any time.
open — Open a specific user's chat
CODEBLOCK9
send — Send a message
CODEBLOCK10
If --user is specified, it will first open that user's chat before sending.
diagnose — Analyze profile photos
Analyzes your Tinder profile photos against dating photo best practices using Vision API. Automatically launches the browser and fetches your latest profile photos from Tinder — no need to run chat start first.
CODEBLOCK11
Output example:
CODEBLOCK12
Typical Workflow
CODEBLOCK13
Heartbeat Monitoring
Used together with HEARTBEAT.md. The Agent periodically calls dating-pilot chat status --since 30 to get recent activity:
- - Activity detected: Summarize new message count, AI reply count, and active chat list, then report to user
- No activity: Return INLINECODE29
Recommended heartbeat interval: INLINECODE30
Notes
- 1. Configuration required before first use — Run
dating-pilot config to set AI parameters before using INLINECODE32 - Smart replies only support Anthropic-format APIs — e.g., Claude API or compatible proxy services
- chat start is a long-running task — Use
exec background:true to run in the background, otherwise it will block the Agent - chat start auto-launches the browser — No manual launch needed, but Tinder must already be logged in via the browser
- Conflict detection — While conversation manager is running, commands that operate the browser (swipe/open/send) will be rejected; run
chat stop first - Like limit — Free users have a daily like limit; operate in batches (10-20 per batch)
- Data stays local — All configuration and conversation data remain on your machine. No data is sent anywhere except to Tinder (via browser) and your configured AI endpoint
- Use a dedicated API key — For safety, use a separate, permission-scoped API key rather than your primary key
- Start small with proactive messaging — Use
--max-chats with a small number first to review AI message quality before scaling up
dating-pilot
Tinder约会助手CLI工具,具备智能资料筛选和对话管理功能。所有命令输出JSON格式。
功能概览
- - 智能筛选:按年龄和距离偏好浏览并点赞资料
- 对话管理器:管理消息、起草智能回复、发送跟进消息
- 状态监控:查询聊天系统状态及近期活动摘要
- 照片诊断:根据约会最佳实践分析个人资料照片,获取每张照片的评分和改进建议
安全与隐私
来源:发布于npm。源代码将在未来版本中于GitHub开源。
身份验证:本工具不会收集、存储或传输任何Tinder账户凭证。它通过Playwright在用户已登录Tinder的浏览器会话中运行。不会从浏览器中提取任何密码或身份验证令牌。
数据流:对话数据仅发送至用户配置的AI端点(如Claude API)。本工具不会将任何数据中继、收集或转发至第三方服务器。所有API调用均直接从用户设备发起。
本地存储:配置信息(包括AI API密钥)存储在用户设备的~/.dating-pilot/目录中。不会向本工具作者运营的任何远程服务器传输数据。
无遥测:不包含任何形式的遥测、分析、崩溃报告或日志上传。除直接调用Tinder(通过浏览器)和用户配置的AI端点外,本工具完全离线运行。
API密钥最佳实践:AI API密钥由用户提供,仅用于调用用户指定的AI服务。建议使用专用且权限受限的API密钥,而非主密钥。
快速开始
使用前需配置AI参数(仅支持Anthropic格式的API,如Claude API或兼容的代理服务)。Tinder必须已在浏览器中登录——本工具使用该现有浏览器会话,绝不会要求输入Tinder凭证。
bash
必需:配置AI
dating-pilot config --ai-base-url
--ai-api-key --ai-model claude-sonnet-4-6
可选:设置网络代理(适用于需要代理才能访问Tinder的地区)及匹配的位置偏好
dating-pilot config --proxy --latitude 32.06 --longitude 118.79 --timezone Asia/Shanghai
命令参考
全局选项
config — 配置AI、代理和位置
bash
设置AI配置(仅支持Anthropic格式的API)
dating-pilot config --ai-base-url --ai-api-key --ai-model
设置网络代理(适用于需要代理才能访问Tinder的地区)
dating-pilot config --proxy
设置匹配位置偏好
dating-pilot config --latitude 32.06 --longitude 118.79 --timezone Asia/Shanghai
可组合使用
dating-pilot config --ai-base-url --ai-api-key --proxy
查看当前配置
dating-pilot config --show
| 参数 | 必需 | 描述 |
|---|
| --ai-base-url | 首次使用必需 | AI API端点(Anthropic格式) |
| --ai-api-key |
首次使用必需 | AI API密钥 |
| --ai-model | 否 | AI模型名称(如claude-sonnet-4-6) |
| --proxy | 否 | 用于需要代理才能访问Tinder地区的网络代理(如socks5://host:port) |
| --latitude | 否 | 匹配位置偏好的纬度 |
| --longitude | 否 | 匹配位置偏好的经度 |
| --timezone | 否 | 匹配位置偏好的时区(如Asia/Shanghai) |
| --show | 否 | 显示当前配置 |
swipe — 带筛选条件的批量滑动
bash
dating-pilot swipe --like-count [--min-age ] [--max-age ] [--max-distance ]
| 参数 | 必需 | 描述 |
|---|
| --like-count | 是 | 目标点赞数量 |
| --min-age |
否 | 最小年龄 |
| --max-age | 否 | 最大年龄 |
| --max-distance | 否 | 最大距离(公里) |
输出示例:
json
{
success: true,
message: 筛选滑动完成:已点赞10,已跳过5,已匹配2,
data: {
likedCount: 10,
skippedCount: 5,
matchedCount: 2
}
}
chat start — 启动对话管理器
⚠️ 长时间运行任务:启动后,对话管理器将在后台运行。请使用exec background:true调用。
启动时自动检查配置并启动浏览器(无需手动启动)。随时使用chat stop终止管理器并释放所有资源。
bash
dating-pilot chat start [--max-chats ] [--user-preferences ]
| 参数 | 必需 | 描述 |
|---|
| --max-chats | 否 | 同时处理的最大聊天数量(默认:全部)。建议从小数量开始(如3-5个)。 |
| --user-preferences |
否 | 用户偏好(注入AI个性,如喜欢运动的女孩) |
chat stop — 停止对话管理器
bash
dating-pilot chat stop
停止对话管理器并释放资源。
chat status — 查询聊天状态
bash
dating-pilot chat status [--since ]
| 参数 | 必需 | 描述 |
|---|
| --since | 否 | 查询最近N分钟内的活动摘要 |
输出示例(使用--since 30):
json
{
success: true,
data: {
initialized: true,
browserId: tinder,
recentActivity: {
since: 2026-03-11T10:00:00.000Z,
newMessagesReceived: 5,
aiRepliesSent: 3,
activeChats: [
{
sessionId: abc123,
userName: Alice,
lastMessage: 哈哈好的,这周末见!,
lastMessageTime: 2026-03-11T10:25:00.000Z,
direction: in
}
]
}
}
}
chat proactive — 发送跟进消息
bash
dating-pilot chat proactive
分析对话并向活跃匹配对象发送跟进消息。触发后将自动运行,向尚未回复的匹配对象发送消息。范围受chat start中设置的--max-chats值限制。需要对话管理器已初始化。随时使用chat stop终止。
open — 打开指定用户的聊天
bash
dating-pilot open --user
send — 发送消息
bash
dating-pilot send --message [--user ]
如果指定了--user,将先打开该用户的聊天再发送消息。
diagnose — 分析个人资料照片
使用Vision API分析您的Tinder个人资料照片是否符合约会照片最佳实践。自动启动浏览器并从Tinder获取您最新的个人资料照片——无需先运行chat start。
bash
dating-pilot diagnose
输出示例:
json
{
success: true,
message: 照片诊断完成。总体评分:7/10,
data: {
overallScore: 7,
photoCount: 4,
summary: 首张照片清晰展示面部,效果出色。缺少动作和宠物照片。,
photos: [
{
index: 0,
score: 8,
detectedCategory: 肖像,
strengths: [面部清晰, 光线良好],
suggestions: [尝试更自然的场景],
ruleViolations: []
}
],
combinationAdvice: {
coveredCategories: [肖像, 旅行],
missingCategories: [动作, 趣味, 动物],
duplicateTypes: [],
suggestions: [添加一张展示爱好的动作照片, 包含一张与宠物的合影]
}
}
}
典型工作流程
bash
0. 首次使用:配置AI(仅支持Anthropic格式的API)
dating-pilot config --ai-base-url http://your-api.com/claude --ai-api-key sk-xxx --ai-model claude-sonnet-4-6
1. 诊断个人资料照片(可独立运行,无需启动chat)
dating-pilot diagnose
2. 筛选滑动:点赞10