mcpField
C
communication-history

communication-history

github.com/hubspot营销与增长281.7k 次安装今天更新
代码仓库

关于 communication-history

communication-history 是使用 HubSpot CLI 查看 CRM 活动及通话或会议转录的技能,可帮助 CRM 用户整理时间线、筛选活动记录,并结合相关记录准备通话简报。

主要功能

  1. 01按 CRM 记录列出活动
  2. 02按活动类型和日期筛选
  3. 03生成精简活动时间线
  4. 04获取通话和会议转录
  5. 05限制转录增强字段

适用场景

  1. 01查看联系人的近期互动
  2. 02为销售通话准备简报
  3. 03收集通话转录以供审阅

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/hubspot/agent-cli-skills --skill communication-history

安装后在 Claude Code 中输入/communication-history确认已加载。

详细介绍

先阅读 bulk-operations/SKILL.md——JSONL 管道传输、批量读取和 jq 重塑模式(resources/json-patterns.md)都适用。hubspot activities list --help 是事实依据。

输出格式

activities list 按时间从新到旧排序,每条活动返回一行扁平记录:{id, type, timestamp, lastModified, title, body, status, owner_id}。timestamp 和 lastModified 为 ISO 8601 格式;type 为 CALL|EMAIL|NOTE|MEETING|TASK。这与底层对象上的原始 hs_call_* / hs_timestamp(Unix 毫秒)不同——如有需要,可使用 hubspot objects get --type calls 获取。

进行特定时间点的筛选时,应比较 lastModified(hs_lastmodifieddate,即正文最后编辑时间),而不是 timestamp(活动创建时间),否则会包含截止时间之后编辑的内容。

某条记录的所有活动

传入 --contact、--deal、--company、--ticket 中的一个(且只能一个);对于其他对象类型,可使用 --type <object_type> --record <id>。使用 --activity-type CALL|EMAIL|NOTE|MEETING|TASK 按活动类型筛选,使用 --limit N 获取最近的 N 条。注意,--type 现在是对象类型标志,不再是活动类型筛选标志:

hubspot activities list --contact 73235
hubspot activities list --deal 67890 --activity-type CALL
hubspot activities list --type subscriptions --record 45123 --activity-type NOTE
hubspot activities list --contact 73235 --limit 10

客户端日期筛选

ISO 8601 字符串可以按字典序比较。

CUTOFF=$(date -v-30d +%Y-%m-%dT%H:%M:%SZ)          # macOS
# CUTOFF=$(date -u -d '30 days ago' +%Y-%m-%dT%H:%M:%SZ)  # Linux
hubspot activities list --contact 73235 \
| jq -c --arg cutoff "$CUTOFF" 'select(.timestamp > $cutoff)'

精简时间线

hubspot activities list --contact 73235 --limit 20 \
| jq -r '"\(.timestamp[0:10])  \(.type)  \(.title)"'

通话前简报

通过管道执行四条命令:联系人 + 公司 + 未结交易 + 活动。使用从标准输入读取的批量 objects get——切勿使用 xargs -I{}(参见 bulk-operations/SKILL.md)。

cid=73235
echo "=== Contact ==="
hubspot objects get --type contacts $cid \
  --properties email,firstname,lastname,phone,jobtitle,lifecyclestage --format table

echo "=== Company ==="
hubspot associations list --from contacts:$cid --to companies \
| jq -c '{id}' \
| hubspot objects get --type companies --properties name,domain,industry,annualrevenue --format table

echo "=== Open Deals ==="
hubspot associations list --from contacts:$cid --to deals \
| jq -c '{id}' \
| hubspot objects get --type deals --properties dealname,amount,dealstage,closedate,hs_is_closed \
| jq -c 'select(.properties.hs_is_closed != "true")'

echo "=== Recent Activity ==="
hubspot activities list --contact $cid --limit 10 \
| jq -r '"\(.timestamp[0:10])  \(.type)  \(.title)"'

转录文本

通过活动 ID(从 hubspot activities list 获取)获取单条通话或会议的转录文本。默认类型为 CALL;对于会议,传入 --activity-type MEETING;使用 --fields 限制要获取的补充字段:

hubspot activities transcript get 54321
hubspot activities transcript get 54321 --activity-type MEETING
hubspot activities transcript get 54321 --fields recordingUrl,aiSummary

将所有通话转录文本转储到文件:

hubspot objects list --type calls --limit 100 --properties hs_call_title \
| jq -r '.id' \
| while read -r call_id; do
    hubspot activities transcript get "$call_id"
  done > /tmp/transcripts.jsonl

输出格式:{"transcriptId":"...","activityId":...,"transcriptSource":"...","transcriptStatus":"READY","numUtterances":3,"recordingUrl":"...","aiSummary":"...","transcriptionProvider":null,"utterances":[...],"createdAt":"...","updatedAt":"..."}。transcriptStatus、numUtterances、recordingUrl、aiSummary 和 transcriptionProvider 是五个补充字段——仅在已补充信息的转录文本中出现,且可通过 --fields 限制要获取的字段。utterances 数组包含语音内容;如果没有录制或上传转录文本,则该数组为空。

删除转录文本不可撤销:先运行 hubspot activities transcript delete <id> --dry-run,然后使用 --digest/--confirm 重新运行(根据预览行确认目标名称)。

限制

  • --limit 默认值为 100,且没有 --after 游标——无法对较长的历史记录进行分页。body 可能很长;浏览时请使用精简时间线。

评论

支持 Markdown