Noscroll 上手:用 AI 智能体替你刷社交媒体的完整指南
信息过载是每个开发者的日常痛点。你可能也有这样的经历:打开 X(Twitter)想看看有没有值得关注的技术动态,结果 40 分钟后还在刷一条跟工作毫无关系的争议帖子。
Noscroll 就是为了解决这个问题而生的——一个 AI 智能体,替你刷社交媒体,只把真正重要的内容推送给你。
什么是 Noscroll?
Noscroll 的核心理念很简单:让 AI 代替你进行”doomscrolling”(无休止地刷信息流),然后通过短信把筛选后的精华内容推送给你。
“no feed. no brainrot. no ragebait. just signal.”
它的创始人 Nadav Hollander 是 OpenSea 的前 CTO。离开 OpenSea 后,他发现自己陷入了对 X 的又爱又恨——平台上确实有最好的信息源,但文化毒性让人刷完后心情极差。于是他决定自己构建一个解决方案。
工作原理
Noscroll 的工作流程可以分为三个层次:
1. 数据接入
用户通过短信连接到 Noscroll 后,授权它访问你的 X 账号。Noscroll 会读取你的:
- 关注的账号和帖子
- 点赞和收藏记录
- 个人兴趣偏好
除了 X,Noscroll 还会从以下来源抓取内容:
- 新闻网站和博客
- Hacker News
- Substack
- 研究论文
- 地方政治信息
2. AI 处理层
Noscroll 使用多个现成的 AI 模型,运行在自有的基础设施上。关键点在于:
- 大量自定义 Prompt:让 AI 拥有独特的沟通风格和判断标准
- 多源信息整合:不是简单聚合,而是跨平台交叉验证
- 个性化过滤:根据你的历史行为学习什么对你重要
3. 内容推送
AI 会根据你设定的频率推送内容摘要:
- 休闲用户:每周一次汇总
- 新闻重度用户:每天多次推送
- 突发新闻:即时推送,不等汇总
每条推送包含新闻链接和简短的 AI 摘要,点击即可阅读全文。
开发者视角:如何构建类似的系统
如果你对这个场景感兴趣,以下是构建一个类似信息过滤智能体的技术路线。
架构设计
用户偏好 → 多源数据采集 → AI 排序/过滤 → 摘要生成 → 推送渠道
核心组件实现
1. 多源数据采集
import asyncio
import aiohttp
from datetime import datetime, timedelta
class ContentAggregator:
def __init__(self, sources):
self.sources = sources # list of source configs
self.cache = {}
async def fetch_all(self, since: datetime):
"""并行采集所有数据源"""
tasks = [self._fetch_source(src, since) for src in self.sources]
results = await asyncio.gather(*tasks, return_exceptions=True)
articles = []
for result in results:
if isinstance(result, Exception):
print(f"Fetch failed: {result}")
else:
articles.extend(result)
return articles
async def _fetch_source(self, source, since):
async with aiohttp.ClientSession() as session:
async with session.get(source['url']) as resp:
data = await resp.json()
return self._parse(source['type'], data)
2. AI 排序和过滤
from openai import AsyncOpenAI
class ContentRanker:
def __init__(self, api_key, user_profile):
self.client = AsyncOpenAI(api_key=api_key)
self.user_profile = user_profile # 用户兴趣画像
async def rank_and_filter(self, articles):
"""使用 LLM 对内容进行相关性排序"""
prompt = self._build_ranking_prompt(articles)
response = await self.client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": self._system_prompt()},
{"role": "user", "content": prompt}
],
response_format={"type": "json_object"},
temperature=0.3
)
result = json.loads(response.choices[0].message.content)
return result['ranked_articles']
def _system_prompt(self):
return """你是一个内容策展 AI。根据以下用户画像对文章进行排序:
- 只保留与用户兴趣高度相关的内容
- 过滤掉争议性低价值内容(ragebait)
- 优先选择有技术深度的内容
- 输出 JSON 格式,包含 relevance_score (0-10)"""
3. 摘要生成和推送
class DigestGenerator:
async def create_digest(self, ranked_articles, user_prefs):
"""生成个性化的内容摘要"""
summary_prompt = f"""
为以下用户生成今日技术摘要:
兴趣领域:{user_prefs['interests']}
排除话题:{user_prefs['exclude']}
精选文章:
{self._format_articles(ranked_articles[:10])}
要求:
- 每条摘要不超过 2 句话
- 包含原文链接
- 标注为什么这篇文章对用户有价值
"""
response = await self.client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": summary_prompt}],
temperature=0.5
)
return response.choices[0].message.content
关键设计决策
1. 为什么不用简单的关键词过滤?
关键词过滤的误判率很高。一个包含 “Python” 的文章可能是编程教程,也可能是 “Python 蛇饲养指南”。LLM 的理解能力可以大幅降低误判。
2. 推送频率如何平衡?
- 太频繁 → 用户疲劳,回到 doomscrolling 状态
- 太稀疏 → 用户错过重要信息
Noscroll 的做法是让用户自定义频率,同时保留突发新闻的即时推送通道。
3. 如何避免信息茧房?
这是所有个性化推荐系统的核心挑战。Noscroll 的策略是在摘要中主动引入用户可能不知道但相关的”意外发现”内容,打破过滤气泡。
实际使用场景
场景一:技术团队的信息同步
如果你是一个技术团队的负责人,可以配置 Noscroll 关注:
- 特定 GitHub 仓库的 release 和 issue
- 你使用的框架/库的官方博客
- 行业安全漏洞公告
让 AI 每天生成一份团队简报,省掉逐个检查的时间。
场景二:创业者的竞品监控
配置 Noscroll 关注:
- 竞品公司的官方账号和新闻
- 行业分析报告
- 相关的融资和收购信息
每周收到一份竞品动态摘要,保持市场敏感度。
场景三:学术研究者
配置 Noscroll 关注:
- arXiv 上特定领域的最新论文
- 相关会议的 call for papers
- 领域内学者的最新观点
让 AI 帮你筛选出值得深入阅读的论文,而不是被海量预印本淹没。
局限性和注意事项
Noscroll 目前仍处于早期阶段,有几个值得关注的点:
- 数据隐私:你需要授权 Noscroll 访问你的社交账号数据,了解其数据处理政策很重要
- 模型依赖:当前依赖第三方 AI 模型,质量和成本都受限于供应商
- 反馈循环:个性化效果需要时间积累,初期推送质量可能不够精准
- 平台限制:X 的 API 政策变化可能影响数据获取的稳定性
总结
Noscroll 代表了一个有趣的方向:AI 智能体不再只是”帮你写代码”或”帮你画图”,而是开始接管我们日常生活中那些耗时但低价值的信息消费行为。
对于开发者来说,这个场景的核心技术栈(多源采集 → LLM 排序 → 摘要生成 → 推送)是可以复用的。无论你是在构建内部知识库、竞品监控系统,还是个人新闻聚合器,这套架构都能提供有价值的参考。
关键不在于用什么模型,而在于如何定义”什么对你重要”——这才是整个系统真正的价值所在。
Noscroll 官网:noscroll.com 相关报道:TechCrunch – Meet Noscroll