VoiceDrop 社区
2026-07 · 文章想法 × 代码实现

社区增长的方法,
从一次改版说起。

把社区改成了小红书那样,然后我开始担心一件事。

这份幻灯片把那篇口述文章里的主要想法整理出来,再对照 reco / mint / referral 的实际代码,看看每一个增长机制今天真正跑到了哪一步。

① 视觉发现② 热度排序③ 双向铸币④ 老带新⑤ 信任地基
起点

把图片铺出来,让好内容自己跳出来

以前进社区,看到的全是文字标题——你得靠脑子去读、去判断这条值不值得点开。这次改版换成小红书式的双列瀑布流:封面图直接铺出来,一眼扫过去,吸引人的信息立刻跳出来。

  • 要强化的是「发现好内容」——不再只依赖开头那几行字
  • 发现效率高了,浏览、互动、投币这些后面的飞轮才转得起来
  • 代码里对应:分享时自动抽第一张图作封面 + 60 字纯文本预览,写进 D1 展示索引,列表 0.2–0.3 秒直出
🏞️
从画室走到凉皮店
建硕 · ❤️ 12
🌃
东京的夜,安静得像农村
建硕 · ❤️ 8
一个索引,把 6 秒的加载压到 0.25 秒。真源在 R2,D1 只是可以随时重建的展示索引……
建硕 · ❤️ 5
🎨
图片提示词现在都能自己改了
建硕 · ❤️ 15
方法总览

社区增长的五个抓手

文章聚焦在前两个(发现与排序),后三个是代码里已经在跑的增长机制——合在一起才是完整的飞轮。

① 发现

视觉优先的 Feed

双列瀑布流 + 封面图,把「判断值不值得点开」的成本降到一眼。

② 排序

互动热度 × 时间衰减

看的人多、互动多就往前排;新内容靠时间项天然有一段曝光窗口。

③ 经济

投币:双向铸币

读者投币,作者 +2、读者自己 +0.5——双方都有动力,形成双边飞轮。

④ 拉新

邀请:老带新

三层归因(链接 / IP / 剪贴板),作者和新人各得 9 币,同池同价。

⑤ 地基

实名与审核门槛

写门槛实名、敏感词前置、举报即隐藏——信任是增长能持续的前提。

⚠ 张力

深度内容怎么办

视觉 + 热度的机制里,认真写但「搞脑子」的内容会被挤到边缘——文章真正担心的事。

方法 ① · 视觉发现

图片是加速器,也是新的门槛

改版想要的

发现效率

图片铺出来之后,「更吸引人的信息」先被看到,发现好内容不再只靠开头几行字。对一个内容还不多的小社区,这直接决定新用户第一屏的留存。

改完就意识到的

图片太主导了

一旦视觉成了主角——没有好图片,基本就等于没有好内容。哪怕写的东西很有价值,只要没配图,在双列瀑布流里就自动占了下风。

「我只是想写点东西、说点东西,凭什么就要输给一张图?」—— 文章原话。这不是审美问题,是机制问题:视觉优先的 feed 会系统性地把纯文字表达推向边缘。
方法 ② · 排序 · 代码实况

「看的人多就往前排」,代码里长这样

文章里说现在靠推荐机制兜底。实际实现是 reco 服务里一条 Hacker News 式的公式——互动加权除以年龄冷却,再做作者打散:

score = (1 + view·1 + finish·4 + like·3 + reply·5report·9) / (小时数 + 2)1.5
// 同一作者每多出现一次 ×0.5(打散);互动按「人」去重,不是 PV
千人一面

全局同一套顺序,不分用户。没有兴趣画像、没有关注关系、没有个性化——README 自己写明「千人一面」。

可随时拔掉

reco 挂掉,App 自动回退到纯时间倒序(D1 展示索引直出)。推荐是增强层,不是依赖。

深度已有一票

注意 finish(看完)权重 4 > like 的 3——「被读完」已经是对认真内容最硬的一票,只是现在还没人特意讲它。

方法 ③ · 双向铸币 · 代码实况

投币:读者和作者都赚,才是病毒

设计上刻意把两套信号分开:红心是纯质量信号(绝不碰钱),投币是价值分配(铸币入账)。红心能换钱就会被刷——Goodhart 定律。

读者投币
必须实名(Apple / 微信),不能投自己,一人一篇只能投一次
双向到账
作者 +2 币,投币者自己 +0.5 币——点的人也有收益
同池定价
币值 = 固定算力池 ÷ 近 7 天全网铸币量:人越多每枚越稀释,越早越值钱
回到生产
算力唯一出路是烧掉挖更多文章,90 天过期,use-or-lose
防刷:同对递减 ×0.7 / ×0.5 日池 2000 算力,发放超 5× 熔断 注册送 200 算力(1 年有效) 汇率 23 算力 = ¥1,成本铁顶可控

注意:投币和排序是两套库、两套信号——投币影响的是作者的算力收入,不直接进 feed 排序权重

方法 ④ · 老带新 · 代码实况

邀请:把「作弊」逼成「拉真人」

三层归因漏斗(iOS 端逐级降级)

① 链接回点
Universal link 带 token,确定归因
② IP 指纹
落地页记 24h 窗口,唯一 owner 才算
③ 剪贴板
兜底,同一条 token 路径、标记来源

奖励与护栏

  • 邀请成功:作者 9 币 + 新人 9 币,与投币同池同价
  • 每账号一生只能被归因一次;注册不满 24 小时才可归因
  • owner 每日封顶 30 个被奖励安装,超出只发新人侧
  • DeviceCheck 防删装重刷 + 当日保险丝

设计哲学:真人互助群敞开欢迎——想多赚就得拉更多真人、每人还得真产内容,刷量与增长同向。

方法 ⑤ · 信任地基 · 代码实况

门槛不挡增长,门槛保护增长

写门槛

分享必须实名

发到社区要 Apple / 微信登录;匿名可以看、可以录,但「价值落袋」那一刻才设闸——摩擦精确加在刷子身上。

前置审核

敏感词零成本过滤

分享时先扫关键词(Apple 审核 1.2 的前置防线),命中直接拒绝;举报一键隐藏,管理员事后复核。

活指针

帖子永远是最新版

社区帖只存指针,正文实时从源文章读——作者编辑立即生效,删了源录音帖子自愈清理。真源在 R2,D1 索引可随时重建。

这一层没有一条是「增长功能」,但每一条都决定增长能不能持续:内容可信、身份真实、系统随时可回退。

真正的担心

肥皂剧会赢,那认真写的东西呢?

靠「看的人多」排序,最先被推到边缘的,恰恰是花了很多时间写、但「搞脑子」的内容。大家不愿意费脑子——文章的判断是:这就是用户需求,不该对抗。但满足需求不等于什么都不管。

文章留下的问题

「在一个视觉优先、又要迎合轻松内容的机制里,怎么给那些认真写、值得读的东西留一个不被淹没的位置。这个我还没想明白。

代码里已有的、和还缺的筹码
  • 已有:finish 权重 4——读完率是深度内容的天然保护伞
  • 已有:红心与钱分离——质量信号没被污染
  • 缺:文字帖在瀑布流里的专属卡片样式(现在只有 60 字灰字预览)
  • 缺:探索位(每屏留 1–2 个低热度位)——设计文档里有,代码未实现
设计 vs 实现

推荐系统:文档很完整,落地了最简的 20%

设计文档(recommendation_system.md)状态实际情况
互动加权排序 + 牛顿冷却✅ 已实现ranking.js 照抄文档 §3.1 权重,热度即时算、不落盘
作者打散(防同人刷屏)✅ 已实现贪心乘性惩罚,同作者 ×0.5
行为埋点✅ 简化版engagement 表仅 4 种动作、按人去重,非完整流水
兴趣画像 + 懒衰减❌ 未实现无 user_interests 表、无衰减代码
四路召回(关注/标签/热门/新鲜)❌ 未实现feed = 最近 500 条重排;无关注、无标签、无曝光去重
个性化(千人千面)❌ 未实现全局一套顺序;Cron、冷启动选标签页也都没做

这个差距不是欠债,是正确的节奏——文档自己写着:「先用规则把闭环跑通、把数据采起来,再逐步模型化。数据和闭环比算法更值钱。」下一步最值得做的三件事:① 给纯文字帖设计专属卡片(回应文章的担心),② 加探索位(防止热度垄断第一屏),③ 攒够 engagement 数据后再上画像