Kaspa News Skill
Query the public kaspa.news API for Kaspa ecosystem intelligence. No API keys needed.
Quick Start
SCRIPT="~/.openclaw/workspace/skills/kaspa-news/scripts/kaspa-news.sh"
$SCRIPT focused # Curated community tweets
$SCRIPT builders # Ecosystem/builder tweets
$SCRIPT top # Most viewed tweets
$SCRIPT developers # Core dev tweets (includes replies)
$SCRIPT videos # YouTube videos
$SCRIPT reddit # r/kaspa posts
$SCRIPT pulse # Latest AI pulse report
Requirements
python3withrequestsmodulejq- Internet access to
https://kaspa.news/api - No API keys, no tokens, no auth β all endpoints are public
Commands Reference
focused β Curated Community Tweets
Community-curated tweets. Excludes replies. Best for "what's the Kaspa community talking about?"
$SCRIPT focused # Latest 10
$SCRIPT focused -n 5 # Latest 5
$SCRIPT focused --since 12 # Last 12 hours only
builders β Ecosystem/Builder Tweets
Projects building on Kaspa (labeled "Ecosystem" on kaspa.news frontend). Excludes replies.
$SCRIPT builders # Latest 10
$SCRIPT builders -n 20 # Latest 20
top β Highest Engagement Tweets
Sorted by view count (most views first). This is the only command that shows view counts (ποΈ).
$SCRIPT top # Top 10 by views
$SCRIPT top -n 3 # Top 3
developers β Developer Tweets
Tweets from known Kaspa core developers. Includes replies (unlike other tweet commands). Shows dev discussions and technical debates.
The script has a built-in list of known dev usernames, but this is only for the default developers command filter. Per-user searches (see below) work for ANY username.
$SCRIPT developers # Latest 10 dev tweets
$SCRIPT developers -n 15 # Latest 15
videos β YouTube Videos
Latest Kaspa-related YouTube videos with view/like counts.
$SCRIPT videos # Latest 10
$SCRIPT videos --since 48 # Last 2 days
reddit β Reddit Posts
Latest posts from r/kaspa with upvote scores.
$SCRIPT reddit # Latest 10
$SCRIPT reddit -n 5 # Latest 5
pulse β AI Pulse Report
AI-generated intelligence report summarizing recent Kaspa ecosystem activity. Single latest report.
$SCRIPT pulse # Latest report (text summary)
$SCRIPT pulse --sources # With clickable source links to tweets
$SCRIPT pulse --json # Full JSON (for custom parsing)
Global Options
| Option | Description | Default |
|---|---|---|
-n, --limit N | Number of items to show | 10 |
--since HOURS | Only items from last N hours | all |
--json | Raw JSON output (for scripting/parsing) | off |
--sources | Show source links in pulse reports | off |
-h, --help | Show help text | β |
Script Output Format
The script outputs plain text. Here's exactly what each command produces:
Tweet Commands (focused, builders, developers)
π― Focused Tweets
π @DailyKaspa (1h)
Nearly $10 million in short positions are stacked around the 0.037 level...
[SOURCE](https://x.com/DailyKaspa/status/2024047412226978031)
π¬ @KaspaHub (10h)
Better late than never, I guess.
[SOURCE](https://x.com/KaspaHub/status/2023918673216311580)
β©οΈ @hashdag (1h)
@asaefstroem @maxibitcat could be, not ruling that out...
[SOURCE](https://x.com/hashdag/status/2024050945718399078)
Top Command (includes view counts)
π₯ Top Tweets
π @BSCNews (23h) β ποΈ 22179
π¨JUST IN: $KAS, $PI, $ASTER AMONG PROJECTS WITH MOST BULLISH SENTIMENT...
[SOURCE](https://x.com/BSCNews/status/2023709720901534048)
π¬ @kaspaunchained (14h) β ποΈ 10663
Private messaging on Kaspa L1. Encrypted payloads riding the BlockDAG...
[SOURCE](https://x.com/kaspaunchained/status/2023845437577257447)
Videos
πΊ Kaspa Videos
πΊ Kaspa Crypto Prediction | Why We Went Bearish?
π‘ Crypto MindSet | ποΈ 80 | β€οΈ 3 | 6h
π https://youtube.com/watch?v=NgO5iW1B_t4
π Kaspa Reddit
π Did Fred Thiel Dump his Kaspa Bag?
π€ u/Weekly-Fudge1909 | β¬οΈ 10 | 2h
π https://reddit.com/r/kaspa/comments/1r7o9oi
Pulse
π Kaspa Pulse Reports
[REPORT HERE](https://kaspa.news/pulse/d6167911-21ab-4135-bccb-a4baf4e4480f)
π From Silverscript to TangFi...
π 13h | π€ gpt-5.2
Silverscript compiler goes live on Testnet 12, delivering first high-level
contract language for Kaspa...
π¨ PRESENTATION RULES (MANDATORY FOR ALL AGENTS)
The script outputs plain text. When you present this to a user, follow these rules exactly. This is the approved format β do not deviate.
Tweet Type Emojis
| Emoji | Meaning |
|---|---|
| π | Regular tweet |
| π¬ | Quote tweet (user's own comment only β NOT the quoted source tweet) |
| β©οΈ | Reply |
What the Script Already Does (don't redo these)
- β Picks correct emoji (π/π¬/β©οΈ)
- β Shows relative time ("10h", "1d", "5m" β no "ago")
- β Expands t.co links to real URLs
- β Strips trailing t.co image links
- β Decodes HTML entities (& β &, > β >)
- β Truncates at 300 chars
- β Adds SOURCE link on every tweet
- β
Shows ποΈ views ONLY on
topcommand
What YOU (the presenting agent) Must Do
X/Twitter Linkification
Convert plain text @handles, #hashtags, and $CASHTAGS into clickable links:
@usernameβ[@username](https://x.com/username)β links to X profile#hashtagβ[#hashtag](https://x.com/search?q=%23hashtag)β links to X search$KASβ[$KAS](https://x.com/search?q=%24KAS)β links to X search
Important:
- Only linkify REAL handles/hashtags/cashtags
#2,#4,#10BPS(numbers) are NOT hashtags β leave as-is@inside email addresses are NOT handles β leave as-is- Link to x.com (NOT twitter.com, NOT Telegram)
Pulse Report Formatting
When presenting pulse reports, reformat the summary into grouped sections:
π **Latest Kaspa Pulse Report** (date)
**"Report Title Here"**
βββ Core Development βββ
π§ **Silverscript** β First high-level smart contract language, live on TN12.
π **Covenants** β Enable programmable spending conditions on UTXO.
βββ Ecosystem βββ
π΅ **TangFi** β Bridging stablecoins (USDT/USDC) to Kaspa L1.
π **Private Messaging** β Encrypted payloads on BlockDAG at 10 BPS.
βββ Milestones βββ
π 600M total transactions on Kaspa mainnet.
Pulse formatting rules:
- Group by category with
βββ Category βββseparators - Bold project/feature names
- One line per item, max 1-2 sentences
- Use emojis as bullet prefixes (π§π΅ππ¬πβ‘π¦ππππ€π±)
- Key people to name: @hashdag (Yonatan Sompolinsky), @michaelsuttonil (Michael Sutton), @OriNewman (Ori Newman)
π Per-User Tweet Search
When someone asks for tweets from a specific person (e.g., "show me @michaelsuttonil tweets from last 2 weeks"), this works for ANY username β not limited to the 9 built-in dev names.
How to Query
Fetch ALL endpoints and merge (always go wide):
# Fetch all 4 tweet sources
$SCRIPT focused --json -n 999 > /tmp/focused.json
$SCRIPT builders --json -n 999 > /tmp/builders.json
$SCRIPT top --json -n 999 > /tmp/top.json
$SCRIPT developers --json -n 999 > /tmp/devs.json
# Merge, deduplicate by url, filter by username + date range (safe)
TARGET_USER="michaelsuttonil"
cat /tmp/*.json | jq -s --arg user "$TARGET_USER" 'add | unique_by(.url) | [.[] | select(.author_username == $user)]'
Or use the --json output and filter with jq/python inline.
Security note: never interpolate raw user input directly into jq programs. Always pass user values via --arg / --argjson.
How to Present Per-User Results
Group by date (newest first). Standalone posts first, then replies.
π
Feb 17 β Smart contracts and Silverscript progress
π @michaelsuttonil
Full tweet text here exactly as-is...
[SOURCE](https://x.com/michaelsuttonil/status/123)
π¬ @michaelsuttonil
Quote comment here (user's own words only)...
[SOURCE](https://x.com/michaelsuttonil/status/456)
β©οΈ To @hashdag: "Reply text shown in quotes..."
[SOURCE](https://x.com/michaelsuttonil/status/789)
---
π
Feb 16 β TN12 testing and validator discussion
π @michaelsuttonil
Another tweet...
[SOURCE](url)
Per-user format rules:
π Feb 17date headers with em dash + brief theme summary---separator between date groups- Standalone posts first (π/π¬), replies below (β©οΈ)
- Replies:
β©οΈ To @recipient: "quoted reply text..." - Omit trivial replies ("100%", "sure", "thanks") unless notable
- End with brief editorial summary of themes across the period
- Always search the FULL time range asked β never shorten it
- Show everything found β don't pre-filter or narrow results
β DO NOT (hard rules)
These are locked rules. Violating any of these = wrong output.
| Rule | Why |
|---|---|
| β Don't edit, trim, rewrite, or summarize tweet text | Show user's exact words |
| β Don't merge same-author tweets together | Every tweet is separate |
| β Don't show the quoted tweet's source text | Quote tweets show ONLY the user's own comment |
| β Don't show sentiment percentages (bullish/bearish %) | User explicitly forbids this |
| β Don't show "N tweets analyzed" counts | User explicitly forbids this |
| β Don't show model name in pulse output to users | Internal detail |
| β Don't add bold to @usernames in tweet output | Script format is final |
| β Don't add extra emojis or separator lines to tweets | Script format is final |
| β Don't add "(latest N)" to section headers | Clean headers only |
| β Don't add type labels like "β π Tweet" after time | Emoji prefix is enough |
| β Don't use markdown tables for tweets | Use the line-by-line format |
| β Don't say "according to the pulse report" | Just present the info directly |
β Don't add engagement metrics (β€οΈ/π) to any command except top | Only top shows ποΈ |
| β Don't link @handles to Telegram | Always link to x.com |
| β Don't strip [SOURCE] links | They're always shown |
β DO (best practices)
| Practice | Detail |
|---|---|
| β Run the script, present its output | Don't fabricate or cache old data |
| β Linkify @handles β x.com profiles | [@user](https://x.com/user) |
| β Linkify #hashtags β x.com search | [#kaspa](https://x.com/search?q=%23kaspa) |
| β Linkify $CASHTAGS β x.com search | [$KAS](https://x.com/search?q=%24KAS) |
| β Group pulse reports by category | Use βββ separators |
| β Bold project names in pulse | Makes scanning easy |
| β Keep it scannable on mobile | Short lines, emojis, no walls of text |
| β For per-user search: go wide | Search ALL endpoints, full time range |
β
Use --json for custom filtering | Then format manually |
Trigger Phrases
Use this skill when the user says anything like:
- "kaspa news", "what's happening in kaspa", "kaspa tweets"
- "kaspa pulse", "kaspa report", "kaspa update"
- "kaspa devs", "what are kaspa developers saying"
- "kaspa videos", "kaspa youtube"
- "kaspa reddit"
- "show me tweets from @someone" (per-user search)
- "top kaspa tweets", "trending kaspa"
- Any mention of kaspa.news
Architecture Notes
- API base:
https://kaspa.news/api(fixed; no env override) - API returns cached data β query params like
?limit=are ignored server-side - All filtering is client-side β script fetches full dataset, filters with jq
- No auth needed β all endpoints are public, no API keys
- No runtime env vars required
- Script outputs plain text β the presenting agent handles linkification
- FORMAT_LOCK.md in the skill directory is the canonical format specification






