Detalle del Skill
communication-history
Direct HubSpot CRM activity-history retrieval.
Revisar antes de usar
La revisión automática comprueba relevancia, no seguridad ni respaldo. Lee las instrucciones de la fuente antes de usar este Skill.
SKILL.md
Este extracto es una copia guardada durante la revisión. La fuente externa contiene la versión completa y actual.
---
name: communication-history
description: Retrieve activity history (calls, emails, notes, meetings, tasks) for a CRM record and assemble pre-call briefs.
triggers:
- "pre-call research"
- "call history"
- "email history"
- "recent activity"
- "communication history"
- "meeting prep"
- "transcripts"
- "call transcripts"
- "dump transcripts"
- "fetch transcripts"
- "call recordings"
- "export transcripts"
---
Read `bulk-operations/SKILL.md` first — JSONL piping, batch read, and `jq` reshape patterns (`resources/json-patterns.md`) apply. `hubspot activities list --help` is the source of truth.
## Output shape
`activities list` returns one flat row per activity, sorted newest-first: `{id, type, timestamp, title, body, status, owner_id}`. `timestamp` is ISO 8601; `type` is `CALL|EMAIL|NOTE|MEETING|TASK`. Different from the raw `hs_call_*` / `hs_timestamp` (Unix ms) on the underlying objects — fetch those with `hubspot objects get --type calls` if needed.
## All activity for a record
Pass exactly one of `--contact`, `--deal`, `--company`, `--ticket`. Use `--type CALL|EMAIL|NOTE|MEETING|TASK` to filter, `--limit N` for the most recent N:
```bash
hubspot activities list --contact 73235
hubspot activities list --deal 67890 --type CALL
hubspot activities list --contact 73235 --limit 10
```
## Client-side date filter
ISO 8601 strings compare lexicographically.
```bash
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)'
```
## Compact timeline
```bash
hubspot activities list --contact 73235 --limit 20 \
| jq -r '"\(.timestamp[0:10]) \(.type) \(.title)"'
```
## Pre-call brief
Four piped commands: contact + company + open deals + activity. Use batch `objects get` over stdin — never `xargs -I{}` (see `bulk-operations/SKILL.md`).
```bash
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)"'
```
## Transcripts
Fetch the transcript for a single call by engagement ID:
```bash
hubspot activities calls transcript get --call 54321
```
Dump all call transcripts to a file:
```bash
hubspot objects list --type calls --limit 100 --properties hs_call_title \
| jq -r '.id' \
| while read -r call_id; do
hubspot activities calls transcript get --call "$call_id"
done > /tmp/transcripts.jsonl
```
Output shape: `{"transcriptId":"...","engagementId":...,"transcriptSource":"...","utterances":[...],"createdAt":...}`. The `utterances` array contains the speech content; it will be empty if no transcript was recorded or uploaded.
## Constraints
- `--limit` max 100 and no `--after` cursor — long histories can't be paged. `body` can be long; use the compact timeline for skimming.
Leer la fuente completa en GitHub (abre una página externa)