X (Twitter) 推荐算法运营方案

基于 X 开源推荐算法代码分析,所有策略均有代码依据 https://github.com/xai-org/x-algorithm


一、算法核心逻辑速览

候选召回 → 硬过滤 → 多目标预测 → 加权合分 → 多样性衰减 → TopK选取 → 安全过滤

决定推荐的三个关卡

  1. 能否进入候选池(in-network 优势巨大)
  2. 会否被硬过滤(过期/违规/已看等)
  3. engagement 加权总分高低

二、排序信号权重体系

2.1 正向信号(按重要性分类)

层级 信号类型 触发动作 代码位置
S级 深度互动 Reply(回复)、Quote(引用)、Retweet(转发) weighted_scorer.rs:49
A级 轻度互动 Like(点赞)、FollowAuthor(关注作者) weighted_scorer.rs:49
A级 传播行为 Share、ShareViaDM、ShareViaCopyLink weighted_scorer.rs:49
B级 注意力 Dwell(停留)、DwellTime(停留时长) weighted_scorer.rs:49
B级 点击行为 Click、ProfileClick、PhotoExpand weighted_scorer.rs:52
B级 视频完播 VQV(需满足最小时长门槛) weighted_scorer.rs:72

2.2 负向信号(会被降权或过滤)

信号 后果 代码位置
NotInterested 降权 weighted_scorer.rs:64
BlockAuthor 降权 + 对该用户不再推送 author_socialgraph_filter.rs:6
MuteAuthor 降权 + 对该用户不再推送 author_socialgraph_filter.rs:6
Report 严重降权 weighted_scorer.rs:64
VF审核不通过 直接下架 vf_filter.rs:25

三、内容创作策略

3.1 内容结构设计原则

开头钩子(决定 Dwell 信号)

✅ 推荐结构:
- 争议观点开头:"大多数人都错了..."
- 数据/事实开头:"90%的人不知道..."
- 问题开头:"为什么 X 比 Y 更难..."
- 反直觉开头:"我曾经也这么认为,直到..."

❌ 避免:
- 泛泛而谈的开头
- 需要翻页才能看到价值的内容
- 纯表情/表情包开头

正文结构(提升停留时长)

✅ 推荐:
- 分段清晰,每段 2-3 行
- 使用列表/编号
- 关键信息加粗或用 emoji 标记
- 结尾有明确的行动召唤

❌ 避免:
- 大段文字堆砌
- 没有视觉断点
- 信息密度过低

3.2 触发高价值动作的内容模板

Reply 触发模板

模板1:观点对撞
"A 还是 B?我选 A,理由是..."
"你们觉得 X 应该怎么做?"

模板2:经验征集
"做 XX 最容易踩的坑是什么?我先说一个..."
"你遇到过最离谱的 XX 是什么?"

模板3:争议话题
"为什么我认为 XX 是错的..."
"大家都在说 XX 好,但我不同意..."

Retweet/Quote 触发模板

模板1:可复用信息
"XX 的完整清单(收藏备用)"
"一图看懂 XX"
"XX 速查表"

模板2:总结类
"2024年 XX 领域最重要的 10 个变化"
"我花了 X 年总结的 XX 经验"

模板3:资源分享
"XX 个免费工具推荐"
"XX 学习路径全攻略"

Share/DM Share 触发模板

模板1:实用工具
"这个方法帮我省了 XX 小时"
"XX 问题的终极解决方案"

模板2:私密感内容
"很少有人知道的 XX"
"这个技巧我只告诉过 XX 人"

3.3 媒体类型策略

图片策略

✅ 推荐(触发 PhotoExpand):
- 信息图/流程图
- 对比图(before/after)
- 数据可视化
- 截图+标注
- 高清细节图

❌ 避免:
- 无信息量的配图
- 纯装饰性图片
- 低分辨率图片

视频策略

✅ 推荐(触发 VQV):
- 时长 > 最小门槛(建议 > 15秒)
- 前3秒有强钩子
- 有字幕/文字说明
- 教程/演示类

❌ 避免:
- 超短无意义视频(<3秒)
- 需要外跳才能理解的视频
- 纯音乐/无信息视频

Thread(长推文串)策略

⚠️ 注意:对话去重机制会让同一 thread 只保留一条
代码位置:dedup_conversation_filter.rs:7

策略:
- 第一条必须是最强钩子
- 每条都要有独立价值
- 不要把核心信息放在中间
- 结尾加"关注获取更多"

四、发布节奏策略

4.1 频率控制

⚠️ 同作者多样性衰减机制
代码位置:author_diversity_scorer.rs:29
同一作者在单次推荐请求中出现越多,后续内容衰减越严重

✅ 推荐频率:
- 日常:1-2 条/天
- 活跃期:最多 3-4 条/天
- 间隔:至少 2-4 小时

❌ 避免:
- 短时间内连续发布(刷屏)
- 一天发布 5+ 条
- 集中发布后长期沉默

4.2 时间选择

原则:根据目标用户活跃时间发布

通用建议(需根据实际数据调整):
- 工作日:8-9am, 12-1pm, 6-8pm
- 周末:10-11am, 3-5pm

⚠️ 注意:
- 内容有过期时间窗口(age_filter.rs:8)
- 在网召回按时间倒序(thunder_service.rs:333)
- 新鲜内容天然有优势

4.3 一周内容排期模板

星期 内容类型 目标信号 示例
周一 干货长文 Dwell + Reply 行业分析/经验总结
周二 争议观点 Reply + Quote ”为什么我认为…”
周三 实用资源 Retweet + Share 工具推荐/清单
周四 互动帖 Reply 问题征集/投票
周五 轻松内容 Like + Retweet 梗图/段子/周末推荐
周六 深度内容 Dwell 长篇教程/案例分析
周日 复盘/预告 Reply + Follow 本周总结/下周预告

五、涨粉策略(最大杠杆)

5.1 为什么涨粉是核心

代码依据:
- out-of-network 内容会被 OON_WEIGHT_FACTOR 降权
  位置:oon_scorer.rs:20
- in-network(关注列表)内容天然优势巨大

结论:再好的内容,如果用户没关注你,推荐权重就会被打折

5.2 涨粉路径

路径1:高传播内容吸引

1. 创作可复用/高传播内容
2. 被 Retweet/Quote 扩散到出网用户
3. 出网用户通过 ProfileClick 访问主页
4. 主页内容吸引 → Follow

路径2:互动引流

1. 在大V内容下高质量评论
2. 引发好奇 → ProfileClick
3. 主页内容吸引 → Follow

路径3:跨平台引流

1. 其他平台(公众号/知乎/B站)提及 X 账号
2. 用户主动搜索关注

5.3 主页优化检查清单

□ 头像:清晰、有辨识度
□ 名称:易记、与领域相关
□ Bio:3秒说清"我是谁+我能提供什么"
□ 置顶推文:最能代表你价值的内容
□ 最近内容:保持更新频率
□ 链接:其他平台/作品集(可选)

六、冷启动策略(新账号)

6.1 新账号面临的问题

代码依据:
- Phoenix 模型需要 user_action_sequence
  位置:phoenix_source.rs:24
- 无历史数据时模型无法工作
- 新用户 For You 更依赖 in-network

结论:新账号的推荐几乎完全依赖"别人关注你"

6.2 冷启动执行方案

第1周:建立基础

目标:积累初始关注者和互动数据

行动:
- 每天发布 1 条高质量内容
- 主动关注领域内活跃用户
- 在相关话题下高质量评论(非spam)
- 引导已有社交关系关注

第2周:扩大曝光

目标:通过传播内容获得出网曝光

行动:
- 发布 2-3 条"可复用型"内容
- 参与热门话题讨论
- 与已关注的活跃用户互动

第3-4周:稳定增长

目标:建立稳定的内容节奏

行动:
- 执行标准周内容排期
- 分析数据,优化内容方向
- 逐步减少"求关注"动作

七、避坑指南

7.1 会导致直接下架的行为

行为 触发机制 代码位置
违反平台规则 VF 安全审核 drop vf_filter.rs:25
内容过期 超过时间窗口 age_filter.rs:8
被用户 block/mute 对该用户不再推送 author_socialgraph_filter.rs:6
命中 muted keywords 对该用户不再推送 muted_keyword_filter.rs:47
重复内容 去重过滤 drop_duplicates_filter.rs:7
已被看过 已看过滤 previously_seen_posts_filter.rs:8

7.2 会导致降权的行为

行为 触发机制 代码位置
用户点”不感兴趣” 负向信号权重 weighted_scorer.rs:64
被举报 负向信号权重 weighted_scorer.rs:64
短时间刷屏 多样性衰减 author_diversity_scorer.rs:29
出网推送 OON 降权因子 oon_scorer.rs:20

7.3 常见误区

❌ 误区1:疯狂发帖 = 更多曝光
→ 实际:多样性衰减会让后续内容权重下降

❌ 误区2:转发热门内容 = 蹭流量
→ 实际:转推去重只保留一条(retweet_deduplication_filter.rs:23)

❌ 误区3:订阅内容用于拉新
→ 实际:非订阅用户看不到(ineligible_subscription_filter.rs:27)

❌ 误区4:反复推送给同一批人
→ 实际:已看/已推送会被过滤

❌ 误区5:只关注点赞数
→ 实际:Reply/Retweet/Quote/Dwell 可能权重更高

八、数据监控指标

8.1 核心指标看板

指标 对应信号 健康标准 优化方向
展示量 进入候选池 稳定/增长 涨粉、提高内容质量
互动率 综合engagement >3% 优化内容结构
回复数 Reply 有稳定回复 增加互动型内容
转发数 Retweet 有自然传播 增加可复用内容
引用数 Quote 有观点讨论 增加争议性内容
主页访问 ProfileClick 稳定 优化内容钩子
新增关注 FollowAuthor 持续增长 优化主页+内容

8.2 负面指标预警

指标 预警阈值 可能原因 解决方案
展示量骤降 环比 -30% 内容质量/频率问题 检查最近内容质量
取关增加 环比 +50% 内容与预期不符 重新审视内容定位
举报增加 任何增加 内容违规/争议 立即审查内容
互动率下降 环比 -20% 内容吸引力下降 测试新内容形式

九、分阶段执行计划

阶段1:基础建设(第1-2周)

目标:账号基础优化 + 内容节奏建立

任务清单:
□ 完成主页优化(头像/bio/置顶)
□ 确定内容定位和风格
□ 建立内容素材库
□ 开始每日 1 条内容发布
□ 建立数据监控表格

阶段2:内容验证(第3-4周)

目标:测试内容类型,找到高效模式

任务清单:
□ 测试不同内容类型(干货/互动/资源)
□ 测试不同发布时间
□ 分析数据,识别高效模式
□ 逐步增加发布频率至 1-2 条/天
□ 开始主动互动(评论大V内容)

阶段3:增长优化(第5-8周)

目标:放大有效模式,加速增长

任务清单:
□ 聚焦验证有效的内容类型
□ 执行完整周内容排期
□ 建立互动社群/话题参与
□ 尝试跨平台引流
□ 周度数据复盘

阶段4:稳定运营(第9周+)

目标:建立可持续的运营节奏

任务清单:
□ 固化内容生产流程
□ 建立内容日历
□ 月度策略复盘
□ 持续优化迭代

附录:代码依据索引

策略点 代码位置 说明
排序信号 weighted_scorer.rs:49 定义了所有参与加权的 engagement 类型
负向信号 weighted_scorer.rs:64 负反馈进入加权合分
视频时长门槛 weighted_scorer.rs:72 VQV 需满足最小时长
出网降权 oon_scorer.rs:20 OON_WEIGHT_FACTOR
多样性衰减 author_diversity_scorer.rs:29 同作者重复出现衰减
时间过滤 age_filter.rs:8 超过时间窗口直接过滤
在网时间排序 thunder_service.rs:333 按 created_at 倒序
VF 过滤 vf_filter.rs:25 安全审核不通过直接 drop
去重 drop_duplicates_filter.rs:7 重复内容过滤
转推去重 retweet_deduplication_filter.rs:23 同原帖只留一条
已看过滤 previously_seen_posts_filter.rs:8 已看内容不再推送
订阅过滤 ineligible_subscription_filter.rs:27 订阅内容只推给订阅者
Block/Mute author_socialgraph_filter.rs:6 被 block/mute 不再推送
Muted 关键词 muted_keyword_filter.rs:47 命中关键词过滤
对话去重 dedup_conversation_filter.rs:7 同 thread 只保留一条
冷启动 phoenix_source.rs:24 无历史数据时模型失效

本方案基于 X 开源推荐算法代码分析生成 注意:home-mixer/params 模块未开源,具体权重数值无法确认