Unify signals from multiple recency-sensitive channels (Reddit, X, Hacker News, Weibo, YouTube, GitHub activity, Polymarket, etc.) into a single time-weighted candidate list. Clusters semantic near-duplicates across sources, weights by recency + platform reliability, and produces a ranked "what's happening recently" bundle for the runtime AI to synthesize.
Installs into .claude/skills of the current project.
Are you the author of Recent Signal Fusion?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/0xmariowu-recent-signal-fusion)
---
name: autosearch:recent-signal-fusion
description: Unify signals from multiple recency-sensitive channels (Reddit, X, Hacker News, Weibo, YouTube, GitHub activity, Polymarket, etc.) into a single time-weighted candidate list. Clusters semantic near-duplicates across sources, weights by recency + platform reliability, and produces a ranked "what's happening recently" bundle for the runtime AI to synthesize.
version: 0.1.0
layer: meta
domains: [workflow, synthesis]
scenarios: [recency-focus, trending-topics, 24h-watch, weekly-digest]
trigger_keywords: [recent, trending, latest, 最近, 24 hours, weekly, signal fusion]
model_tier: Standard
auth_required: false
cost: free
experience_digest: experience.md
---
# Recent Signal Fusion — Cross-Platform Recency Bundle
Adapted from `last30days-skill`'s SourceItem / Candidate / Cluster / Report pipeline + Scira's group-mode aggregation. Turns N channels' recent outputs into a single time-weighted cluster list.
## Input
```yaml
input:
topic: str # research topic
time_window: "24h" | "7d" | "30d" # how far back to care
channels: list[str] # which channel skills to call
min_recency_ratio: float # reject items older than (now - time_window)
max_items_per_channel: int # e.g. 30
```
## Pipeline Stages
1. **Parallel fetch** — call each channel with a time-window filter in the query. Collect raw evidence lists.
2. **Normalize to SourceItems**:
```yaml
source_item:
id: str # hash(url + title)
url: str
title: str
content_snippet: str
platform: str # source_channel
posted_at: datetime
engagement: {likes, comments, shares} | null
language: str
raw_evidence_ref: dict # original Evidence slim-dict
```
3. **Recency filter** — drop items older than `time_window`. Use `extract-dates` skill for items without explicit `posted_at`.
4. **Semantic clustering** — group near-duplicate SourceItems across platforms:
```yaml
cluster:
id: str
canonical_title: str # best representative title
topic_keywords: list[str] # extracted from the cluster
sources: list[source_item_id]
platform_spread: int # how many distinct platforms
earliest_posted_at: datetime
latest_posted_at: datetime
```
5. **Rank by weighted score**:
```
score = (
0.4 * recency_score(latest_posted_at, time_window)
+ 0.3 * platform_spread_score(platform_spread) # cross-platform = stronger signal
+ 0.2 * engagement_score(sum(engagement)) # aggregated across sources
+ 0.1 * platform_reliability_score(platforms) # quality weighting
)
```
6. **Emit bundle**:
```yaml
bundle:
topic: str
time_window: str
total_source_items: int
total_clusters: int
top_clusters: list[Cluster] # top 20 by score
platforms_hit: list[str]
platforms_empty: list[str]
earliest_signal: datetime
latest_signal: datetime
```
## Platform Reliability Default Weights
- `github-*` / `arxiv` / `hackernews` → 1.0 (deterministic, low spam).
- `stackoverflow` / `reddit` / `devto` → 0.8 (moderated, some spam).
- `twitter-exa` / `xiaohongshu` / `weibo` / `douyin` → 0.6 (high spam, high recency value).
- `search-rss` (user-curated) → 1.0.
Runtime AI can override per-session for specific platform-topic fits.
## Anti-Collapse Guard
If after ranking, the top 5 clusters are all from the same platform → flag as "platform-collapse", re-rank with platform_spread weighted 2×. Ensures the bundle isn't just "top 5 trending X posts" when other platforms had relevant signal.
## When to Use
- User asks "what's happening with X recently?" / "what's the latest on X?" / "近期 X 讨论怎么样?"
- Weekly / daily brief generation.
- Trend tracking across platforms.
## When NOT to Use
- Historical / reference research (use `channels-academic`, not this).
- Single-platform watch (call that channel directly).
- Highly technical API questions (recency not the primary filter).
## Cost
Standard-tier LLM for clustering + canonical-title extraction. Typical run: 5-10 seconds + sum of channel call costs. Cheaper than decompose-task because channels fan out in parallel.
## Interactions
- Calls → `run_channel` (parallel) for each selected channel.
- Uses → `extract-dates` (normalize posted_at fields).
- Uses → `rerank-evidence` (as fallback when semantic clustering is inconclusive).
- Feeds → `synthesize-knowledge` (the bundle is the input context).
# Quality Bar
- Evidence items have non-empty title and url.
- No crash on empty or malformed API response.
- Source channel field matches the channel name.