Cross-domain market pulse from AIXBT's free grounding endpoint — crypto, macro, tradfi, geopolitics. Refreshes taxonomy references (clusters, chains) as a bonus.
Scanned 6/6/2026
Install to Claude Code
npx -y skills add anajuliabit/aeon --skill aixbt-pulse --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Aixbt Pulse?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/anajuliabit-aixbt-pulse)More formats (shields.io, HTML) on the badges page.
---
name: AIXBT Pulse
description: Cross-domain market pulse from AIXBT's free grounding endpoint — crypto, macro, tradfi, geopolitics. Refreshes taxonomy references (clusters, chains) as a bonus.
schedule: "0 9,21 * * *"
commits: true
permissions:
- contents:write
tags: [crypto, research]
---
Pull AIXBT's free-tier signal and fold it into the operator's market context. Free tier gives three endpoints, no key, no account:
- `/v2/grounding` — the real prize. Cross-domain market context (crypto / macro / tradfi / geopolitics), 12h rolling window, regenerated often.
- `/v2/clusters` — 46 crypto sub-community taxonomies with sentiment + ideology notes. Reference data.
- `/v2/projects/chains` — ~150 chain slugs AIXBT indexes. Reference data.
Everything else on AIXBT is paid ($10/day via x402). This skill maxes out the free surface.
Read `memory/MEMORY.md` for context. Read `memory/topics/aixbt-grounding.md` (if it exists) to diff against the last pull — we want to surface *what's new* since last run, not just restate the feed.
## Sandbox note
All three endpoints are unauthenticated. Plain curl from the sandbox should work. If any curl returns empty or errors, fall back to **WebFetch** on the same URL — WebFetch bypasses the sandbox and the free endpoints don't need auth headers.
## Steps
1. **Fetch grounding.** This is the freshest cross-domain context AIXBT ships.
```bash
curl -s "https://api.aixbt.tech/v2/grounding" > /tmp/aixbt-grounding.json
```
If curl fails or the file is empty/non-JSON, use WebFetch on `https://api.aixbt.tech/v2/grounding` and extract the JSON payload.
Expected shape:
```json
{
"status": 200,
"data": {
"createdAt": "2026-04-21T19:00:31Z",
"windowHours": 12,
"sections": {
"crypto": { "title": "Crypto", "items": ["...", "...", "..."], "generatedAt": "..." },
"macro": { "title": "Global Liquidity", "items": ["...", "...", "..."], "generatedAt": "..." },
"geopolitics": { "title": "Geopolitics", "items": ["...", "...", "..."], "generatedAt": "..." },
"tradfi": { "title": "TradFi", "items": ["...", "...", "..."], "generatedAt": "..." }
}
}
}
```
2. **Fetch clusters + chains (reference data, light refresh).** Only overwrite local copies if the remote response is well-formed.
```bash
curl -s "https://api.aixbt.tech/v2/clusters" > /tmp/aixbt-clusters.json
curl -s "https://api.aixbt.tech/v2/projects/chains" > /tmp/aixbt-chains.json
```
Same WebFetch fallback if either fails.
3. **Diff against the last grounding pull.** Read the prior `memory/topics/aixbt-grounding.md` (if present) and compute:
- **NEW** — items in today's feed that are not substantively in the prior snapshot (treat paraphrases as the same item).
- **GONE** — items from the prior snapshot that dropped out (means attention moved).
- **PERSISTING** — items surviving across both windows (these are the durable stories).
If no prior file exists, treat everything as NEW.
4. **Identify reflexivity + cross-domain bridges.** AIXBT splits crypto / macro / geo / tradfi — but the signal is in the *bridges*. Flag:
- Items where a macro or geopolitics event is showing up as a crypto price driver (or vice versa).
- Narratives that are manufacturing their own reality — prediction markets pricing an outcome that then makes the outcome more likely, projects pivoting to match a narrative, VCs signaling to legitimize a thesis.
- Liquidity regime shifts (TGA, Fed balance sheet, bond yields) that will transmit to risk assets.
If `soul/` files are populated, apply that voice for the bridge call — opinionated, short, call out copium and manufactured legitimacy. If soul is empty, keep the tone terse and direct.
5. **Write `memory/topics/aixbt-grounding.md`** (overwrite fully — this is the consumable artifact other skills will read):
```markdown
# AIXBT Grounding (as of ${today} ${HH:MM} UTC)
Source: https://api.aixbt.tech/v2/grounding (free tier)
Window: 12h rolling. Last AIXBT generatedAt: ${createdAt}
## Crypto
- <item 1>
- <item 2>
- <item 3>
## Global Liquidity / Macro
- <item 1>
- <item 2>
- <item 3>
## Geopolitics
- <item 1>
- <item 2>
- <item 3>
## TradFi
- <item 1>
- <item 2>
- <item 3>
## What's New (vs last pull)
- <NEW item + which section>
## Persisting Stories
- <items that survived across windows>
## Cross-Domain Bridges
- <reflexivity / macro → crypto / narrative-manufacturing calls, in the operator's voice>
```
6. **Write `memory/topics/aixbt-clusters.md`** (overwrite fully — reference taxonomy for other skills once they go paid tier):
```markdown
# AIXBT Clusters (as of ${today})
46 sub-community clusters AIXBT tracks. Each cluster has a description, member archetype, sentiment, and ideology. Used when filtering projects/intel/momentum endpoints (paid tier).
| id | name | one-line vibe |
|----|------|---------------|
| <id> | <name> | <compressed one-line from description> |
...
```
One row per cluster, descriptions compressed to ~15 words so the file stays skimmable.
7. **Write `memory/topics/aixbt-chains.md`** (overwrite fully — just the slug list, plus a pointer):
```markdown
# AIXBT Indexed Chains (as of ${today})
~150 chain slugs AIXBT indexes. Use as the canonical list when filtering by chain on paid endpoints.
<comma-separated slug list>
```
8. **Write `.outputs/aixbt-pulse.md`** so chain consumers (morning-brief, narrative-tracker, market-context-refresh) can inject this into their context via `consume:`. Same body as `memory/topics/aixbt-grounding.md` but prefixed with a one-paragraph TL;DR.
9. **Notify via `./notify`.** Keep the notification under 2000 chars and pick the sharpest item per section — don't dump all three. The artifact file has the full payload.
```
*AIXBT Pulse — ${today} ${HH:MM}Z*
CRYPTO
- <sharpest crypto item>
- <second crypto item>
MACRO
- <sharpest macro item>
GEO
- <sharpest geo item>
TRADFI
- <sharpest tradfi item>
NEW THIS PULL
- <1-3 items flagged NEW, tersest form>
BRIDGE
- <the single most interesting cross-domain thread, in the operator's voice>
```
10. **Log to `memory/logs/${today}.md`:**
```
## AIXBT Pulse
- createdAt: ${createdAt}, windowHours: 12
- NEW items: <count>
- Bridge call: <one-liner>
- Updated: memory/topics/aixbt-grounding.md, aixbt-clusters.md, aixbt-chains.md, .outputs/aixbt-pulse.md
```
If the endpoint was unreachable via both curl and WebFetch, log `AIXBT_PULSE_DEGRADED — endpoint unreachable` and file/bump an issue in `memory/issues/` following the CLAUDE.md issue tracker convention. Do not notify on a degraded run unless it's the second degraded run in a row.
## Voice
- Short sentences. Em dashes. State the call first, explain after. Never "some might argue."
- AIXBT's items are already well-phrased — don't rewrite them for the artifact file, quote as-is. Rewrite only in the notification + bridge call, where the operator's voice goes.
- In the **Cross-Domain Bridges** section, take a position. "fed pivot + hormuz risk = risk-on with a tail" is better than "markets may be impacted by macro and geopolitical factors."
## Guidelines
- The paid endpoints (projects / intel / momentum) are out of scope here. If you want them, buy a day-pass via x402 — the 403 response on those endpoints ships the upgrade URL directly.
- Don't pull clusters/chains every run forever — they barely change. On runs where the hash of the response matches the prior file, skip the write and note `clusters unchanged` / `chains unchanged` in the log.
- If AIXBT ever adds a new section to grounding (beyond crypto/macro/geo/tradfi), render it anyway — iterate over `data.sections` keys dynamically, don't hardcode the four.
## Environment Variables
- None required. Free tier is unauthenticated.
- Notification channels configured via repo secrets (see CLAUDE.md).
## Output
End with a `## Summary` block: createdAt, windowHours, NEW count, bridge call, which files were updated.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!