工具增长闭环
log_action
记录你(或用户)刚在某个增长条目上做过或观察到的事:发生了什么(一句话就够)、只有确知变了才填的新阶段、何时跟进,以及任何结果。
记录你(或用户)刚在某个增长条目上做过或观察到的事:发生了什么(一句话就够)、只有确知变了才填的新阶段、何时跟进,以及任何结果。传机会 id 或 URL(未知的 URL 会自动登记);两者都没有时,只记录这次行动。服务端从不根据行动推断阶段。不要把私信原文或个人数据写进摘要。用 idempotency_key 让重试安全。
以上是服务端发布的英文描述的译文;英文原文见英文页。工具名、参数名和取值保持原样。
| 字段 | 值 |
|---|---|
| 工具包 | Core (core) |
| 每次调用的预估成本 | $0 |
| 工具包每月上限 | 无 |
| 项目 | 按顺序确定:显式的 project → 请求头 → 凭据默认项目 → 工作区默认项目 |
参数
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
project | 否 | string | 项目 slug 或 id。省略则用凭据或工作区的默认项目。 |
opportunity_id | 否 | string | 这件事涉及的机会(来自 track 或 get_briefing 的 id)。用它或 url,不要两个都用。 |
url | 否 | string (≤ 2000 字符) | 或者传涉及的帖子/主页 URL;未知的 URL 会自动登记。 |
title | 否 | string (≤ 200 字符) | 新登记 URL 的标题。 |
action | 是 | object | 做了什么或观察到什么。 |
action.kind | 否 | string (≤ 50 字符) | 行动的类型,例如 'comment'、'dm'、'post'、'email'。默认 'action'。 |
action.summary | 是 | string | 一句话说明发生了什么,例如 'Replied with a comparison table'。不要写私信原文。 |
action.channel | 否 | string (≤ 100 字符) | 在哪里,例如 'reddit'、'x'、'xiaohongshu'。 |
action.url | 否 | string (≤ 2000 字符) | 指向你发布内容的链接,例如你的评论 URL。 |
action.occurred_at | 否 | ISO 时间 | 发生的时间(ISO 时间)。默认:现在。 |
stage | 否 | "discovered" | "contacted" | "replied" | "willing_to_talk" | "converted" | "dropped" | 新阶段,只有确知变了才填:discovered、contacted、replied、willing_to_talk、converted 或 dropped。 |
next_followup | 否 | ISO 时间 | {in_days} | {at} | null | 何时跟进:{"in_days": 3}、{"at": ISO 时间},或一个 ISO 时间。null 表示清除。默认:按阶段给出的建议。 |
experiment_id | 否 | string | 把这次行动挂到某个实验上(来自 track 的 id)。 |
link_code | 否 | string (≤ 32 字符) | 这次行动用到的短链接的 code(来自 track type=link),用于点击归因。 |
outcome | 否 | object | 这次行动的结果,如果有的话。 |
outcome.type | 是 | string (≤ 60 字符) | 达成了什么,例如 'signup'、'reply'、'call_booked'。 |
outcome.value | 否 | number | 数量,例如 1 或 49.9。 |
outcome.unit | 否 | string (≤ 20 字符) | 数值的单位,例如 'usd'、'count'。 |
outcome.evidence | 否 | string | 你怎么知道的,例如 'Reply in thread from the author'。 |
note | 否 | string | 补充说明,一两句话。 |
idempotency_key | 否 | string (≤ 100 字符) | 任意唯一字符串;用同一个 key 重复调用,不会记录两次。 |
示例调用
{
"project": "acme-crm",
"url": "https://www.reddit.com/r/SaaS/comments/1abc23/looking_for_a_lightweight_crm",
"action": {
"kind": "comment",
"summary": "Replied with a comparison table",
"channel": "reddit"
},
"stage": "contacted",
"experiment_id": "exp_7Hn2LpWc0",
"idempotency_key": "2026-10-16-comment-1abc23"
}REST:POST https://service.opennomos.com/v1/tools/log_action,以上 JSON 作为请求体。MCP:tools/call,name: "log_action",以上 JSON 作为 arguments。
示例结果
示例里的值是示意性的;结构来自服务端代码。
{
"project": {
"id": "prj_k3Vd9aQx2",
"slug": "acme-crm"
},
"action_id": "act_Lw03pKd8",
"opportunity": {
"id": "opp_Qm4x9TnB1",
"stage": "contacted",
"next_followup_at": "2026-10-19T09:30:00.000Z",
"events": 3
},
"experiment_progress": {
"id": "exp_7Hn2LpWc0",
"metric": "willing_to_talk",
"current": 1,
"target": 3,
"deadline_at": "2026-10-30T09:00:00.000Z"
},
"hints": []
}说明
- 闭环里回写的那一半。OpenNomos 从不发帖、回复或给任何人发消息:由你(或用户)在别处做,然后在这里记录。
- 传
opportunity_id或url(未知的 URL 会自动登记)。两者都没有时,只记录这次行动。 - 默认行为:服务端从不推断阶段。省略
stage,阶段不变。省略next_followup,跟进时间不变,除非阶段确实变了,这时会按新阶段设置:contacted+3 天,replied+2,willing_to_talk+2,converted和dropped清除。next_followup: null清除。详见 log_action 的默认行为。 outcome记录一个结果(type,可选value、unit、evidence)。只有关联到机会或短链接时,才算已归因(direct);否则是unknown。见归因。idempotency_key让重试变得安全:用同一个 key 重复调用,会重放第一次的结果(带duplicate: true),而不是记录两次。当行动挂在某个实验上时,会出现experiment_progress。hints里可能有一行警告,例如outcome.type是willing_to_talk但阶段没有改。- 不要把私信原文或个人数据写进
summary或note。
错误
被拒绝的调用(输入有误、id 未知、触发限流)返回 message 和 code;走 MCP 时结果带 isError: true。见错误。