x-filter
X Filter
Score and filter collected materials for X content creation. Topics scoring ≥7 points enter the creation pool.
Scoring System (满分10分)
| Criteria | Weight | Description |
|---|---|---|
| 热度/趋势 | 4分 | Current popularity and trend momentum |
| 争议性 | 2分 | Discussion potential and debate value |
| 高价值 | 3分 | Information density and actionable insights |
| 账号定位相关 | 1分 | Alignment with account positioning |
Threshold: ≥7分 enters creation pool
Prerequisites
- Materials from x-collect (or manual input)
- User profile from x-create/references/user-profile.md (for relevance scoring)
Optional State (Feedback Loop)
If available, use persisted state to improve filtering:
- State dir:
~/.claude/skills/x-create/state/ - Negative samples:
rejected_topics.json(SimilarityFilter) - Events log:
events.jsonl(optional analytics)
If state files don't exist, proceed normally.
Workflow
Input
Accept materials from:
- x-collect output - Structured material report
- Manual list - User-provided topics/URLs
- Raw text - Unstructured content to evaluate
Scoring Process
For each material/topic, score multiple dimensions and combine with weights.
Weighted score (recommended):
FinalScore = Σ(w_i × s_i) - NegPenalty
Where:
s_iare per-dimension scores (0..max)w_icome fromreferences/user-profile.md(fallback to defaults)NegPenaltyis derived from similarity to rejected topics and other negative signals
1. 热度/趋势 (Trending Score: 0-4)
4分: 当前热门话题,大量讨论
3分: 近期热点,关注度上升
2分: 稳定话题,持续有人讨论
1分: 小众话题,关注度有限
0分: 过时话题,几乎无人讨论
(Optional) 新鲜度 (Freshness)
- If you can infer recency from sources, either:
- fold it into Trending score, or
- add a small bonus/penalty (e.g., +0.5 for <72h, -0.5 for >30d)
2. 争议性 (Controversy Score: 0-2)
2分: 明显争议,多方观点对立
1分: 存在不同看法,可引发讨论
0分: 共识性话题,难以引发讨论
3. 高价值 (Value Score: 0-3)
3分: 硬核干货,可直接指导行动
2分: 有价值信息,提供新视角
1分: 一般信息,了解即可
0分: 低价值,无实质内容
4. 账号定位相关 (Relevance Score: 0-1)
1分: 与账号定位高度相关
0分: 与账号定位关联较弱
Check user profile at: ~/.claude/skills/x-create/references/user-profile.md
If not found, assume domains: [AI/科技, 创业, 个人成长]
SimilarityFilter (Negative Samples):
- If
~/.claude/skills/x-create/state/rejected_topics.jsonexists, compare each candidate topic to rejected items. - If max similarity ≥ 0.85: mark as likely duplicate/low-value → strong penalty or direct reject.
- If 0.75 ≤ similarity < 0.85: apply soft penalty (e.g., -2 points) and explain why.
(Implementation via script):
python ~/.claude/skills/x-create/scripts/x_state.py similarity --against rejected --text "{topic}" --topk 3
Output Format
# 选题筛选报告
## 筛选时间
{timestamp}
## 用户定位
- 领域: {domains}
- 人设: {persona_style}
## 筛选结果
### Tier A:入选创作池 (≥7分)
#### 1. {Topic Title} - **{final_score}分**
| 热度 | 争议性 | 高价值 | 相关性 | 负向惩罚 |
|------|--------|--------|--------|----------|
| {trending}/4 | {controversy}/2 | {value}/3 | {relevance}/1 | -{neg_penalty} |
- **推荐类型**: [短推文/Thread/评论回复]
- **推荐风格**: [高价值干货/犀利观点/热点评论/故事洞察/技术解析]
- **创作角度**: 建议的切入点
- **核心观点**: 可提炼的关键论点
- **相似度命中(可选)**: {max_similarity} - matched: {matched_ids}
#### 2. ...
### Tier B:待定 (5-6分)
- {Topic} - {final_score}分 - {原因}
### Tier C:淘汰 (<5分)
- {Topic} - {final_score}分 - {原因}
## 创作建议
入选 {n} 个选题,建议优先级:
1. {最高分选题} - 理由
2. {次高分选题} - 理由
下一步:运行 `/x-create {选题}` 开始创作
Append a machine-readable block for hooks/state ingestion:
FILTER_JSON
{
"schema_version": "x_skills.filter.v1",
"timestamp": "{timestamp}",
"profile": {
"domains": ["..."],
"persona_style": "..."
},
"items": [
{
"topic": "...",
"scores": {
"trending": 0,
"controversy": 0,
"value": 0,
"relevance": 0,
"neg_penalty": 0
},
"final_score": 0,
"tier": "A|B|C",
"reasons": ["..."],
"similarity": {
"max": 0.0,
"matched": [{"id":"rej_xxx","score":0.0,"title":"..."}]
}
}
]
}
Execution Steps
- Load materials from x-collect or user input
- Read user profile for relevance scoring and weights
- (Optional) SimilarityFilter against rejected topics
- Score each material on criteria and compute
FinalScore - Diversity adjustments (recommended):
- Apply source/domain attenuation:
score *= 0.6^(N-1)for repeated sources - Dedup per topic cluster: keep best-scoring item per cluster
- Apply source/domain attenuation:
- Categorize: Tier A ≥7, Tier B 5-6, Tier C <5
- Output report +
FILTER_JSON - (Optional) Persist feedback-loop state:
- Write Tier C items to rejected set:
python ~/.claude/skills/x-create/scripts/x_state.py reject --topic-json '{"title":"...","reason":"...","stage":"filter"}'
- Append event:
python ~/.claude/skills/x-create/scripts/x_state.py event --event filter.scored --payload-json '{"accepted":3,"maybe":2,"rejected":7}'
- Write Tier C items to rejected set:
Example
Input from x-collect:
素材1: Claude 4.5 Opus发布
素材2: AI编程助手对比评测
素材3: OpenAI最新裁员新闻
Scoring:
Claude 4.5 Opus发布:
- 热度: 4/4 (刚发布,热门话题)
- 争议性: 1/2 (性能vs价格讨论)
- 高价值: 3/3 (新能力详解)
- 相关性: 1/1 (AI/科技相关)
- 总分: 9/10 ✓ 入选
AI编程助手对比评测:
- 热度: 2/4 (持续话题)
- 争议性: 2/2 (Cursor vs Copilot争论)
- 高价值: 3/3 (实用对比)
- 相关性: 1/1 (科技相关)
- 总分: 8/10 ✓ 入选
OpenAI最新裁员新闻:
- 热度: 3/4 (近期热点)
- 争议性: 1/2 (有讨论)
- 高价值: 1/3 (信息价值有限)
- 相关性: 0/1 (非核心领域)
- 总分: 5/10 × 待定
Customization
Users can customize weights in user-profile.md:
scoring:
trending: 4 # 热度权重
controversy: 2 # 争议性权重
value: 3 # 高价值权重
relevance: 1 # 相关性权重
threshold: 7 # 入选阈值
Integration
After filtering, suggest:
筛选完成!{n} 个选题入选创作池。
推荐优先创作:{top_topic}({score}分)
下一步:运行 /x-create {top_topic} 开始创作