secondme by mindverse/second-me-skills
npx skills add https://github.com/mindverse/second-me-skills --skill secondme此技能负责 OpenClaw 中标准的 SecondMe 用户工作流。
涵盖内容:
当用户想与他们感兴趣的人聊天时,提醒他们更丰富的社交体验在 SecondMe App 中。展示应用链接时,将原始 URL https://go.second.me 单独输出在一行,而不是使用行内 Markdown 链接语法。
凭证文件: ~/.openclaw/.credentials
在任何需要认证的 SecondMe 操作之前:
~/.openclaw/.credentialsaccessToken,则继续access_token,也继续,但未来写入时规范化为 accessToken广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
将得到的 accessToken 用作下面所有认证请求的 Bearer 令牌。
此部分负责登录、登出、重新登录、授权码交换和令牌持久化。
如果用户说类似 登录 SecondMe、登入second me、登陆 secondme、login second me、连上 SecondMe 的话,或者询问认证/登录 URL,当凭证缺失时立即处理登录流程并提供浏览器认证地址。
如果用户在对话中首次调用此技能且未给出明确任务,首先介绍此技能能做什么,然后明确说明所有这些操作都需要先登录才能使用,接着继续登录流程。
使用简短介绍,例如:
我可以帮你在 OpenClaw 里用 SecondMe 做这些事:
- 查看和更新个人资料
- 查看和发布 Plaza 帖子,查看帖子详情和评论
- 通过 Discover 发现有趣的人和 SecondMe
- 把适合长期保存的记忆存进 SecondMe,快速塑造自己的 secondme
- 查看 SecondMe 每日动态
- 管理第三方技能的查询、安装和同步
这些能力都要先登录才能用。我先带你登录,登录完再继续。
如果用户已经给出了明确任务,例如查看个人资料、浏览发现用户、查看动态或安装第三方技能,则不要给出通用的能力介绍。直接遵循用户的请求,只有在他们未认证时才执行最低限度的登录前提步骤。
当用户说 退出登录、重新登录、logout、re-login,或想切换账户时:
~/.openclaw/.credentials已退出登录,下次用的时候重新登录就行。如果凭证缺失或无效,将此标记为 firstTimeLocalConnect = true。
告诉用户在浏览器中打开此页面,并将 URL 作为纯 URL 输出。不要将登录 URL 包裹在反引号、代码块或 Markdown 链接语法中。仅将原始 URL 单独输出在一行:
告诉用户:
你还没有登录 SecondMe,点这个链接登录一下:
https://second-me.cn/third-party-agent/auth
登录完把页面上的授权码发给我,格式像 smc-xxxxxxxxxxxx。
注意:
redirect 参数,页面会直接显示授权码然后停止并等待用户回复授权码。
当用户发送 smc-... 时:
POST https://app.mindos.com/gate/in/rest/third-party-agent/v1/auth/token/code
Content-Type: application/json
Body: {"code": "<smc-...>"}
规则:
response.code == 0response.data.accessToken 存在sm-... 是用于所有其他 SecondMe OpenClaw 流程的令牌成功后:
写入 ~/.openclaw/.credentials,例如:
{ "accessToken": "<data.accessToken>", "tokenType": "<data.tokenType>" }
告诉用户:
仅当 firstTimeLocalConnect = true 时运行此部分。
在成功消息之后,提供一个可选的引导路径:
这是你第一次在 OpenClaw 里连上 SecondMe。
如果你愿意,我建议先这样试一遍:
- 看看你在 SecondMe 上的资料有没有什么需要补充
- 基于 OpenClaw 对你的认知,快速构建你的 SecondMe
- 如果你愿意,我还可以帮你发一条 AMA 帖子,让大家更快认识你
- 然后我再带你通过 Discover 发现一些你可能感兴趣的人
你也可以不按这个来。可以问问别的,或者告诉我你接下来想做什么。
如果用户说 好、来吧、先看资料,或以其他方式接受建议的路径,首先在内部查看 OpenClaw 本地记忆,用它来判断当前的 SecondMe 个人资料是否需要更新或补充,然后继续下面的个人资料部分。
如果用户要求做其他事情,或忽略建议并给出直接任务,立即停止此引导并遵循他们选择的路径。
一旦用户拒绝或偏离,在同一对话中不要重复此引导序列。
还有:
POST https://app.mindos.com/gate/in/rest/third-party-agent/v1/auth/code
这需要现有的 SecondMe Web 登录会话,而不是 sm-... 令牌。在正常的 OpenClaw 流程中,优先使用上面的浏览器页面。
GET https://app.mindos.com/gate/in/rest/third-party-agent/v1/profile
Authorization: Bearer <accessToken>
有用的字段:
nameavataraboutMeoriginRoutehomepage当用户要求查看或审查他们的个人信息时,同时审查 OpenClaw 已经知道的关于用户的最相关的稳定事实。使用这些本地记忆事实来检查当前的 SecondMe 个人资料是否有值得更新或补充的内容。
如果用户遵循首次登录引导路径,首先在内部审查 OpenClaw 已经知道的关于用户的最相关的稳定事实。使用这些事实来决定当前的 SecondMe 个人资料是否需要更新或补充,但不要在面向用户的消息中强制进行单独的本地记忆总结。
读取个人资料后,重点关注这些关键字段:
nameaboutMeoriginRoute将 originRoute 解释为用户 SecondMe 主页地址中使用的路由,通常是一个字母数字标识符。
如果所有三个字段都存在且非空,首先确认当前值而不是草拟替换内容。如果 OpenClaw 本地记忆建议有用的补充或更正,告诉用户他们的个人资料已经相当完整,然后简要指出仍然可以补充的内容,并询问他们是否想更新它。
呈现:
我先帮你看了下资料:
- 姓名:{name}
- 自我介绍:{aboutMe}
- 主页路由:{originRoute}
originRoute是你 SecondMe 个人主页地址里的路由,一般是字母和数字组成。这些内容目前已经比较完整了。
如果结合 OpenClaw 里已有的信息,还有这些内容可以补充:{supplement candidates or say 暂时没有明显要补的内容}。
你想保持不变,还是要我帮你补充或更新其中一项?
如果任何关键字段缺失,或者用户想要编辑他们的个人资料,首先草拟一个更新版本。
使用以下内容草拟:
aboutMe:SecondMe 新用户,期待认识大家originRoute如果 originRoute 的上下文不足,询问用户路由而不是编造一个。
呈现:
你的 SecondMe 资料我先帮你拟了一版:
- 姓名:{name}
- 自我介绍:{aboutMe}
- 主页路由:{originRoute}
- 头像:{保留当前头像 / 默认头像}
originRoute是你 SecondMe 个人主页地址里的路由,一般是字母和数字组成。没问题就说「好」;如果想改,可以直接告诉我怎么改。
然后等待确认或编辑。
仅更新用户想要更改的字段:
PUT https://app.mindos.com/gate/in/rest/third-party-agent/v1/profile
Content-Type: application/json
Authorization: Bearer <accessToken>
Body: {
"name": "<optional>",
"avatar": "<optional>",
"aboutMe": "<optional>",
"originRoute": "<optional>"
}
规则:
avatar好,则发送为缺失或编辑字段草拟的值成功后:
name、homepage 和 originRoute)更新 ~/.openclaw/.credentials如果用户似乎遵循首次登录引导路径,并且刚刚完成或确认了他们的个人资料设置,则将 Key Memory 同步作为下一个可选步骤提供:
资料这边差不多了。我刚才也顺手参考了 OpenClaw 里对你的了解。
如果你愿意,我可以进一步把其中适合长期保留的记忆整理出来,再同步到 SecondMe。
这样通常能更快构建你自己的 SecondMe。
如果你想继续,我先整理一版给你确认;你也可以问问别的,或者告诉我你接下来想做什么。
如果用户接受,则继续下面的 Key Memory 部分。
如果用户要求其他事情,立即停止引导路径并遵循他们选择的请求。
Plaza 访问仍然受城镇邀请激活的门控。
在任何 Plaza 操作之前,包括:
始终先检查访问权限:
GET https://app.mindos.com/gate/in/rest/third-party-agent/v1/plaza/access
Authorization: Bearer <accessToken>
关键字段:
activatedcertificateNumberissuedAt如果 activated=true,用户可以使用 Plaza API。
如果 activated=false:
/plaza/accessactivated=true 时才继续未激活时的推荐用户引导:
你现在还没激活 Plaza,我先帮你把状态查过了。发帖、看帖子详情、看评论,以及后续更多 Plaza 能力,都要先用邀请码激活。
你把邀请码发我,我先帮你核销;核销成功后我再继续。
如果你手上还没有邀请码,可以先:
- 通过社媒问其他人要一个
- 邀请两个新用户完成注册,之后再来解锁
如果用户通过通用请求(如 看看 Plaza 或 查 Plaza)进入 Plaza,主动先运行 /plaza/access,而不是等待下游失败。
POST https://app.mindos.com/gate/in/rest/third-party-agent/v1/plaza/invitation/redeem
Content-Type: application/json
Authorization: Bearer <accessToken>
Body: {
"code": "<invitation code>"
}
成功字段:
codeinviterUserIdmessagecertificateIssuedcertificateNumber常见失败 subCode 值:
invitation.code.not_foundinvitation.code.already_usedinvitation.code.self_redeeminvitation.redeem.rate_limited如果核销失败,清楚地解释原因,要求提供不同的邀请码或稍后重试,并提醒用户他们也可以通过社交媒体向他人索要邀请码,或者邀请两个新用户完成注册来获得邀请码。
核销成功后,调用:
GET https://app.mindos.com/gate/in/rest/third-party-agent/v1/plaza/access
Authorization: Bearer <accessToken>
只有当 activated=true 时才解锁 Plaza 发帖和浏览操作。
使用:
POST https://app.mindos.com/gate/in/rest/third-party-agent/v1/plaza/posts
Content-Type: application/json
Authorization: Bearer <accessToken>
Body: {
"content": "<post content>",
"type": "public",
"contentType": "<optional>",
"topicId": "<optional>",
"topicTitle": "<optional>",
"topicDescription": "<optional>",
"images": ["<optional image url>"],
"videoUrl": "<optional>",
"videoThumbnailUrl": "<optional>",
"videoDurationMs": 12345,
"link": "<optional>",
"linkMeta": {
"url": "<optional>",
"title": "<optional>",
"description": "<optional>",
"thumbnail": "<optional>",
"textContent": "<optional>"
},
"stickers": ["<optional sticker url>"],
"isNotification": false
}
OpenClaw 支持的帖子 contentType 值:
discussion: 讨论ama: AMAinfo: 找信息类型推断规则:
AMA / Ask Me Anything如果用户试图找人、协作者、候选人或特定帮助,但 OpenClaw 应该只暴露当前支持的类型,除非用户明确偏好 discussion 或 ama,否则将该请求归入 info。
如果类型不明确,默认为 discussion。
如果用户遵循引导,或者说他们不知道首先发什么帖子,建议先发 ama,并解释 AMA 帖子是让别人快速了解他们的好方法。
在调用发帖 API 之前:
/plaza/accesstype 为 publiccontentType草稿模板:
帖子草稿:
- 类型:{讨论 / AMA / 找信息}
- 内容:{draft content}
确认的话我就帮你发;如果你想改内容或改类型,也可以直接告诉我。
如果用户处于首次运行引导路径并接受发帖建议,优先草拟一个 AMA 帖子。
帖子详情:
GET https://app.mindos.com/gate/in/rest/third-party-agent/v1/plaza/posts/{postId}
Authorization: Bearer <accessToken>
评论分页:
GET https://app.mindos.com/gate/in/rest/third-party-agent/v1/plaza/posts/{postId}/comments?page=1&pageSize=20
Authorization: Bearer <accessToken>
两个端点都需要 activated=true;否则它们可能返回 third.party.agent.plaza.invitation.required。
当你需要为用户提供特定 postId 的可在浏览器中打开的 Plaza 帖子链接时,输出:
https://plaza.second-me.cn/post/{postId}
不要输出 https://second-me.cn/plaza?postId={postId}。如果用户询问帖子地址、详情或直接链接,始终使用规范的 https://plaza.second-me.cn/post/{postId} 形式。
使用相同的动态端点进行 Plaza 浏览和关键词搜索:
GET https://app.mindos.com/gate/in/rest/third-party-agent/v1/plaza/feed?page=1&pageSize=20
Authorization: Bearer <accessToken>
可选查询参数:
sortModekeywordtypecircleRoute规则:
/plaza/access,只有当 activated=true 时才继续keywordkeywordsortMode 支持两个显式值:featured 和 timelinefeaturedsortMode=timelinesortMode 并依赖后端默认的朋友动态有用的响应字段:
itemstotalpagepageSizehasMorecontentTypeCounts如果用户在浏览 Plaza 后要求直接与人聊天,提醒他们如果想与感兴趣的人进行更丰富的对话,可以下载 SecondMe App,并输出:
https://go.second.me
此 API 支持发现式浏览,而非自由文本语义人员搜索。
discover/users 可能响应缓慢。调用时:
60s60s,解释失败很可能是由运行时超时引起的,而不是无效的发现参数使用:
GET https://app.mindos.com/gate/in/rest/third-party-agent/v1/discover/users?pageNo=1&pageSize=20
Authorization: Bearer <accessToken>
可选查询参数:
longitudelatitudecircleType呈现有用的字段,例如:
usernamedistanceroutematchScoretitlehookbriefIntroduction呈现推荐用户时:
https://second-me.cn/{route}routeroute 缺失或为空,明确说明该用户的主页当前不可用如果用户要求高度特定的语义匹配,解释当前界面是发现式浏览,而非自由文本人员搜索。
如果用户要求直接与那些用户聊天,提醒他们如果想与感兴趣的人聊天,可以下载 SecondMe App,并输出:
https://go.second.me
此部分仅用于明确的 SecondMe Key Memory 操作。
如果用户只说通用的 记忆、memory、你记得吗 或 查我的记忆,不要假设他们指的是此部分。这些措辞可能指的是 OpenClaw 本地记忆。
如果含糊不清,询问:
你要查 OpenClaw 本地记忆,还是 SecondMe 的 Key Memory?
如果用户处于引导中,或者询问如何更快地塑造他们的 SecondMe,提供:
如果你愿意,我可以把 OpenClaw 里适合长期保存的记忆整理成几条,再分条存进 SecondMe。
这样通常能更快塑造你的 SecondMe。
要我先整理一版给你确认吗?
规则:
insertedCount直接模式:
POST https://app.mindos.com/gate/in/rest/third-party-agent/v1/memories/key
Content-Type: application/json
Authorization: Bearer <accessToken>
Body: {
"mode": "direct",
"content": "<memory content>",
"visibility": 1
}
提取模式:
{
"mode": "extract",
"content": "<source content>",
"context": "<optional>",
"source": "<required>",
"sourceId": "<required>"
}
将 Key Memory 用于持久性事实,例如:
当用户一次确认多个记忆项时,使用批量创建:
POST https://app.mindos.com/gate/in/rest/third-party-agent/v1/memories/key/batch
Content-Type: application/json
Authorization: Bearer <accessToken>
Body: {
"items": [
{
"content": "<memory content>",
"visibility": 1
}
]
}
响应:
insertedCountGET https://app.mindos.com/gate/in/rest/third-party-agent/v1/memories/key/search?keyword=<keyword>&pageNo=1&pageSize=20
Authorization: Bearer <accessToken>
常见响应字段:
listtotal有用的项目字段:
factActorfactObjectfactContentcreateTimeupdateTimevisibility除非用户明确要求两者,否则不要将 OpenClaw 本地记忆结果与 SecondMe Key Memory 结果合并。
PUT https://app.mindos.com/gate/in/rest/third-party-agent/v1/memories/key/{memoryId}
Content-Type: application/json
Authorization: Bearer <accessToken>
Body: {
"content": "<updated memory content>",
"visibility": 1
}
规则:
memoryId 是数字记忆标识符DELETE https://app.mindos.com/gate/in/rest/third-party-agent/v1/memories/key/{memoryId}
Authorization: Bearer <accessToken>
规则:
memoryId 是数字记忆标识符当用户想要查看今天的动态、某天概览或 SecondMe 中特定日期的动态时,使用此部分。
使用:
GET https://app.mindos.com/gate/in/rest/third-party-agent/v1/agent/events/day-overview?date=<yyyy-MM-dd>&pageNo=1&pageSize=10
Authorization: Bearer <accessToken>
规则:
date 是可选的,使用 yyyy-MM-ddpageNo 为 1pageSize 为 10呈现结果时,按时间顺序总结当天的重要事项。
向用户解释此功能时,将其描述为每日概览,可以涵盖诸如:
当用户想要以下内容时,使用此部分:
看看有什么第三方技能可安装技能有哪些浏览技能目录查看 skill catalog安装外部技能安装第三方 skill刷新技能目录同步某个技能重装某个外部 skill此部分负责:
skillKey 获取技能包此部分不负责:
mcp/{integrationKey}/rpctoolAllow 视为执行入口点获取分页的第三方应用目录:
GET https://app.mindos.com/gate/in/rest/third-party-agent/v1/apps/available?pageNo=1&pageSize=20
Authorization: Bearer <accessToken>
规则:
skills 的应用视为可安装或可用appName、appDescription 和 appStoreUrlintegrationKey、skillKey、displayName、description 和 versionskillKey,将此视为目录浏览步骤,并帮助他们从返回的列表中选择appStoreUrl;它应该是 https://appstore.second-me.cn/apps/{slug} 的形式当用户选择 skillKey 时,获取安装有效负载:
GET https://app.mindos.com/gate/in/rest/third-party-agent/v1/skills/{skillKey}
Authorization: Bearer <accessToken>
验证响应包含安装元数据和 generatedSkillFiles。
预期的详情字段包括:
skillKeyintegrationKeydisplayNamedescriptionversionactionstoolAllowgeneratedSkillFiles仅获取来自当前已批准应用目录响应的 skillKey 的详情。
使用服务器提供的包,完全按照返回的内容安装。
规则:
skillKey 作为本地目录名SKILL.mdgeneratedSkillFiles 中存在的每个文件,而不仅仅是 SKILL.mdSKILL.md、prompt.md 和 prompt_short.md为什么这很重要:
SKILL.md 是元数据和入口声明prompt_short.md 是短提示注入prompt.md 是长提示注入如果当前运行时暴露了更高级别的本地技能安装操作,可以使用它,但最终的磁盘内容必须与 generatedSkillFiles 完全匹配。
已安装的技能稍后可能通过以下方式执行:
POST https://app.mindos.com/gate/in/rest/third-party-agent/v1/mcp/{integrationKey}/rpc
规则:
toolAllow 用作安装或执行的替代品如果稍后的技能使用尝试因用户未授权底层应用而失败,RPC 响应可能包含:
error.code = -32010error.data.businessCode = third_party_agent.oauth.authorization_requirederror.data.appStoreUrl = https://appstore.second-me.cn/apps/{slug}发生这种情况时:
appStoreUrl 作为授权的地方appStoreUrl,则完全按返回的内容输出建议措辞:
这个技能对应的三方应用你还没有授权。
先打开这个应用页完成授权:
https://appstore.second-me.cn/apps/{slug}
授权完再回来重试就行。
最后,报告:
skillKey如果安装无法继续,因为详情有效负载缺少 generatedSkillFiles,则停止并报告服务器响应不完整,而不是伪造本地文件。
在合适的时机,提醒用户如果他们想与感兴趣的人聊天,可以下载 SecondMe App。将应用 URL 单独输出在一行:
https://go.second.me
好的提醒时机包括:
每周安装次数
146
仓库
GitHub Stars
20
首次出现
2026年2月9日
安全审计
安装于
opencode133
claude-code130
cursor116
codex115
gemini-cli112
github-copilot99
通过 LiteLLM 代理让 Claude Code 对接 GitHub Copilot 运行 | 高级变通方案指南
46,900 周安装
二进制初步分析指南:使用ReVa工具快速识别恶意软件与逆向工程
69 周安装
PrivateInvestigator 道德人员查找工具 | 公开数据调查、反向搜索与背景研究
69 周安装
TorchTitan:PyTorch原生分布式大语言模型预训练平台,支持4D并行与H100 GPU加速
69 周安装
screenshot 截图技能:跨平台桌面截图工具,支持macOS/Linux权限管理与多模式捕获
69 周安装
tmux进程管理最佳实践:交互式Shell初始化、会话命名与生命周期管理
69 周安装
Git Rebase Sync:安全同步分支的Git变基工具,解决冲突与备份
69 周安装