Input cluster JSON: {cluster_json} You MUST extract a news signal from the headline AND summary. Do not leave entities empty when the text mentions obvious names. Task: 1) infer the best top-level topic 2) extract concise entities from the cluster 3) assign sentiment from the wording/context 4) provide short keywords that justify the classification Entity rules (strict): - Use short strings (1-5 words). - Include all obvious named entities mentioned in headline or summary: people, countries, regions, organizations, ministries, presidents, leaders, wars/conflicts if named. - Also include finance/crypto entities when present: BTC, ETH, Bitcoin, Ethereum, ETF, SEC, ECB, Fed, euro, inflation, rates. - Prefer canonical entity forms over aliases when obvious (for example, use full organization or place names where helpful). - Do NOT return empty entities if any such names/places appear. Sentiment rules: - positive: clearly encouraging, improving, or supportive tone - negative: clearly alarming, worsening, severe, conflict, loss, risk, warning tone - neutral: factual, balanced, or mixed - sentimentScore must be a number from -1.0 to 1.0 and should reflect the sentiment label. Return STRICT JSON with EXACT keys only: { topic, entities, sentiment, sentimentScore, keywords } where topic is one of [crypto, macro, regulation, ai, other].