
Market Sentiment
- 530 installs
- 31 repo stars
- Updated May 4, 2026
- kukapay/crypto-skills
market-sentiment is a cryptocurrency research skill that aggregates RSS news feeds, runs sentiment analysis on articles, and outputs an overall market mood score from -1 to +1 for developers who need evidence-backed cryp
About
market-sentiment is a crypto research skill from kukapay/crypto-skills that pulls articles from popular cryptocurrency RSS feeds, analyzes each article's tone, and computes an aggregate market sentiment score on a -1 to +1 scale with explanatory evidence. Developers use it when assessing whether macro news supports a trade, research brief, or product bet before committing capital or roadmap changes. The workflow follows select-feeds, fetch-articles, score-sentiment, and summarize-findings steps so agents return a numeric score plus reasoning tied to real headlines. Reach for market-sentiment when you need a quick, news-driven pulse on crypto market mood rather than on-chain metrics or exchange order books.
- Aggregates articles from multiple popular crypto RSS feeds
- Classifies each article as positive (+1), negative (-1) or neutral (0)
- Calculates a single market sentiment score from -1 to +1
- Delivers evidence-based natural language explanation tied to source articles
- Follows a repeatable 5-step workflow with clear classification guidelines
Market Sentiment by the numbers
- 530 all-time installs (skills.sh)
- +6 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #1,710 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 2, 2026 (Skillselion catalog sync)
npx skills add https://github.com/kukapay/crypto-skills --skill market-sentimentAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 530 |
|---|---|
| repo stars | ★ 31 |
| Last updated | May 4, 2026 |
| Repository | kukapay/crypto-skills ↗ |
How do you score crypto market mood from RSS news?
Quickly gauge overall cryptocurrency market mood from live news sources before making trading, research or product decisions.
Who is it for?
Developers or quant researchers who want a fast, news-driven crypto sentiment snapshot before trades, reports, or product decisions.
Skip if: Developers who need exchange order-book data, on-chain analytics, or token-specific technical indicators instead of headline sentiment.
When should I use this skill?
User asks to gauge crypto market mood, analyze cryptocurrency news sentiment, or assess RSS-driven market trends before a decision.
What you get
Aggregate sentiment score (-1 to +1), per-article sentiment breakdown, and evidence-based market mood explanation
By the numbers
- Outputs sentiment scores on a -1 to +1 scale
- Aggregates multiple cryptocurrency RSS news feeds
Files
Crypto Market Sentiment
Overview
This skill enables aggregation of news from popular cryptocurrency RSS feeds, performs sentiment analysis on the articles, and computes a market sentiment score ranging from -1 (highly negative) to +1 (highly positive), along with evidence-based explanations.
Workflow
Follow these steps to analyze crypto market sentiment:
1. Select RSS Feeds: Choose popular crypto RSS feeds (see references/rss_feeds.md for a curated list). 2. Fetch News: Retrieve recent articles from the selected feeds. 3. Analyze Sentiment: Classify each article's sentiment as positive (+1), negative (-1), or neutral (0) based on content keywords and context. 4. Calculate Score: Compute the average sentiment score across all articles. 5. Generate Explanation: Provide evidence from the news items supporting the score.
Sentiment Classification Guidelines
- Positive (+1): News about adoption, launches, partnerships, ETF approvals, price rallies, regulatory wins, or technological breakthroughs.
- Negative (-1): News about hacks, crashes, regulatory crackdowns, liquidations, delays, or criticisms.
- Neutral (0): Factual updates, mixed outcomes, or speculative content without clear bias.
Output Format
The skill outputs:
- Sentiment Score: Numerical value between -1 and 1.
- Explanation: Breakdown by feed/source, key positive/negative drivers, and overall market implications.
Resources
scripts/
sentiment_analyzer.py: Python script to fetch RSS feeds, parse articles, and compute sentiment score. Run withpython sentiment_analyzer.pyto get automated results.
references/
rss_feeds.md: List of popular crypto RSS feeds with URLs and descriptions.sentiment_examples.md: Examples of sentiment classification for common news types.
Popular Crypto RSS Feeds
This file contains a curated list of popular cryptocurrency news RSS feeds for sentiment analysis.
Primary Feeds Used
- CoinDesk: https://www.coindesk.com/arc/outboundfeeds/rss/?outputType=xml
- Focus: Markets, policy, business
- Cointelegraph: https://cointelegraph.com/rss
- Focus: News, analysis, technology
- CryptoPotato: https://cryptopotato.com/feed/
- Focus: News, market analysis
- CryptoSlate: https://cryptoslate.com/feed/
- Focus: Analysis, macro, technology
Additional Feeds
- The Defiant: https://thedefiant.io/feed/
- Bitcoinist: https://bitcoinist.com/feed/
- NewsBTC: https://www.newsbtc.com/feed/
- CryptoPotato: https://cryptopotato.com/feed/
- Cryptoslate: https://cryptoslate.com/feed/
- CryptoNews: https://cryptonews.com/news/feed/
- Smart Liquidity: https://smartliquidity.info/feed/
- Yahoo Finance: https://finance.yahoo.com/news/rssindex
- CNBC: https://www.cnbc.com/id/10000664/device/rss/rss.html
- Time Next Advisor: https://time.com/nextadvisor/feed/
- Benjaminion: https://benjaminion.xyz/newineth2/rss_feed.xml
Use these feeds to aggregate recent news for sentiment scoring.</content> <parameter name="filePath">/home/user/crypto-skills/skills/crypto-market-sentiment/references/rss_feeds.md
#!/usr/bin/env python3
"""
Crypto Market Sentiment Analyzer
Fetches RSS feeds from popular crypto sources, analyzes sentiment, and calculates a market score.
"""
import requests
import xml.etree.ElementTree as ET
from datetime import datetime, timedelta
# Positive and negative keywords for sentiment analysis
POSITIVE_KEYWORDS = [
"adoption",
"launch",
"partnership",
"etf",
"rally",
"breakthrough",
"growth",
"approval",
"bullish",
"surge",
"adopts",
]
NEGATIVE_KEYWORDS = [
"crash",
"exploit",
"hack",
"delay",
"liquidation",
"depeg",
"bearish",
"decline",
"setback",
"breach",
"drop",
]
# RSS Feed URLs
RSS_FEEDS = [
"https://www.coindesk.com/arc/outboundfeeds/rss/?outputType=xml",
"https://cointelegraph.com/rss",
"https://cryptopotato.com/feed/",
"https://cryptoslate.com/feed/",
]
def fetch_rss_feed(url):
"""Fetch and parse RSS feed."""
try:
response = requests.get(url, timeout=10)
response.raise_for_status()
return ET.fromstring(response.content)
except Exception as e:
print(f"Error fetching {url}: {e}")
return None
def extract_items(root):
"""Extract title, description, and pubDate from RSS items."""
items = []
for item in root.findall(".//item"):
title = item.find("title")
description = item.find("description")
pubdate = item.find("pubDate")
if title is not None and description is not None:
# Filter recent items (last 7 days)
if pubdate is not None:
try:
# Parse pubDate (e.g., "Thu, 22 Jan 2026 06:12:18 +0000")
dt = datetime.strptime(pubdate.text[:25], "%a, %d %b %Y %H:%M:%S")
if datetime.now() - dt > timedelta(days=7):
continue
except:
pass
items.append(
{"title": title.text or "", "description": description.text or ""}
)
return items
def classify_sentiment(text):
"""Classify sentiment as +1, -1, or 0 based on keywords."""
text_lower = text.lower()
pos_count = sum(1 for word in POSITIVE_KEYWORDS if word in text_lower)
neg_count = sum(1 for word in NEGATIVE_KEYWORDS if word in text_lower)
if pos_count > neg_count:
return 1
elif neg_count > pos_count:
return -1
else:
return 0
def analyze_sentiment(items):
"""Analyze sentiment of items and calculate overall score."""
sentiments = []
evidence = {"positive": [], "negative": [], "neutral": []}
for item in items:
text = item["title"] + " " + item["description"]
sentiment = classify_sentiment(text)
sentiments.append(sentiment)
if sentiment == 1:
evidence["positive"].append(item["title"])
elif sentiment == -1:
evidence["negative"].append(item["title"])
else:
evidence["neutral"].append(item["title"])
if sentiments:
score = sum(sentiments) / len(sentiments)
else:
score = 0
return score, evidence
def main():
all_items = []
for url in RSS_FEEDS:
root = fetch_rss_feed(url)
if root is not None:
items = extract_items(root)
all_items.extend(items)
score, evidence = analyze_sentiment(all_items)
print(f"Market Sentiment Score: {score:.2f}")
print("\nExplanation:")
print(f"- Analyzed {len(all_items)} recent articles from {len(RSS_FEEDS)} feeds.")
print(
f"- Positive articles ({len(evidence['positive'])}): {', '.join(evidence['positive'][:5])}"
)
print(
f"- Negative articles ({len(evidence['negative'])}): {', '.join(evidence['negative'][:5])}"
)
print(
f"- Neutral articles ({len(evidence['neutral'])}): {len(evidence['neutral'])} total"
)
if score > 0.1:
print(
"Overall: Bullish market sentiment with positive drivers outweighing negatives."
)
elif score < -0.1:
print("Overall: Bearish market sentiment with negative factors dominating.")
else:
print(
"Overall: Neutral market sentiment with balanced positive and negative news."
)
if __name__ == "__main__":
main()
Related skills
How it compares
Choose market-sentiment when headline and RSS news tone matter more than price charts or on-chain metrics for a quick macro read.
FAQ
What sentiment scale does market-sentiment use?
market-sentiment computes an overall cryptocurrency market sentiment score ranging from -1 (highly negative) to +1 (highly positive). The skill also explains which RSS articles drove the score.
What data sources does market-sentiment analyze?
market-sentiment aggregates articles from popular cryptocurrency RSS feeds, performs sentiment analysis on each article, and rolls results into one market mood score with supporting evidence.