名字里一个关键词都没有
商店标题写着「豆备 Doubak」。而这一格改不了后台——它取自 manifest.json, 得改代码、重新打包、重新过审。
起点是一件挺难看的事:搜「doubak」,搜不到这个项目。 搜出来的是豆包——字节那个 AI 助手,量级差着好几个数量级。 「豆备」和「豆包」差一个字,拼音只差一个字母,搜索引擎和商店的搜索框都会 把 doubak 当成 doubao 的错拼来纠。
这件事没法赢,也不值得赢。真正的结论是另一件: 品牌名不能当获客渠道——每一次安装都得从「豆瓣备份」这种 描述性的词,或者别人的推荐里来。
那就得看看名字里写了什么
豆伴的商店标题是「豆伴:豆瓣账号备份工具」。品牌在前、说明在后, 说明那八个字把 豆瓣备份 / 豆瓣账号备份 / 备份工具 全占了。
这边是「豆备 Doubak」。一个关键词都没有。 简短说明那一栏上限 132 个字符,原来写了 37 个——95 个字符的位置空着, 而「广播」和「导入 NeoDB」这两件别人不做的事,一个字都没提到。
改成了「豆备 Doubak:豆瓣备份与原样归档」。句式照抄豆伴,但说明那半句 刻意绕开「备份工具」:那是它用几年安装量和评价占住的头部词, 正面撞上去赢不了。「原样归档」是这个项目与它真正不同的地方, 也是对比表里唯一一条它没法跟的。
而这一格改不了后台
本以为是登录商店后台改两行字的事。不是——商店的名称和简短说明取自
manifest.json,后台是只读的。改它就等于发一个新版本:
改代码、重新打包、重新提交审核。
顺着查下去还有一件更值钱的:分语言的商店页,只对扩展里带了
对应 _locales/<语言> 目录的语言开放。
也就是说这件事的开关也在代码里,不在后台。
繁体不是简体的一个变体。 「備份」和「备份」是两个完全不同的字串,搜索不互通—— 港台用户搜「豆瓣備份」,现在什么也搜不到,而这一格是空的。 英文那边搜 “douban backup” 的结果同样基本是空的。 两页都不需要翻译界面就能开出来。
所以加了三份:zh_CN、zh_TW、en。
界面本身没有翻译,仍然只有简体中文(面板里写死的中文字符串有 693 条),
繁体和英文的简短说明里都写明了这一点——
这两页会把读不了简体的人带进来,不先说,换来的是一次白装。
一个装上就炸、而本地全绿的坑
_locales 必须进打包白名单。漏了它,后果不是「名字变回英文」——
manifest.json 里的 default_locale 指着一个不在包里的
目录,Chrome 会整个拒绝加载这个扩展。
而打包脚本的 collect() 只在名单里的路径不存在时才抛错;
名单里压根没有的目录,它根本不看。于是本地一切正常、测试全绿,
问题要到上传审核那一刻才出现——那时名字已经改了。
这是这个项目反复见到的同一个形状:出问题的那个上下文,本地进不去。
判据只能是静态的——去读代码,而不是跑它。所以加了一条测试直接检查白名单里有没有
_locales,连同另外六条:缺键、键集不一致、超长(名称 75、说明 132,
超了是拒收而不是截断)、default_locale 指向不存在的目录,
以及——
最容易被「修好」的那一条:把 manifest 里那四格写回硬编码。 写死之后本地一切正常,商店页也照开,只是繁体和英文那两页的标题 变成了简体中文——而那正是开这两页的唯一理由。 七条里只有这一条,是把前六条都写完、逐条做变异测试时才发现漏掉的。
顺带:自家英文 README 把两组「8」并成了一句
同一批改动里加了一份英文 README。里头有一句:样张里有 八个作品豆瓣已经删掉,评论和评分都还在。 照着规矩去档案里数了一遍,两处都不成立。
档案里有两组不同的「8」,只重合一个。 一组是豆瓣把条目删掉、标题成了空的那 8 个(7 个游戏、1 部电影); 另一组是被豆瓣剥光的 8 条标记——标题还在,但日期、评分、标签、短评全空。 两组只有一个作品同时属于两边。纯属巧合,也正因为是巧合才危险。
| 被删掉的那 8 个作品,标记里还留着 | |
|---|---|
| 短评 | 7 / 8 |
| 标签 | 6 / 8 |
| 标记日期 | 7 / 8 |
| 评分 | 0 / 8 |
| 广播里冻住的星 | 3 / 8 |
没有任何一条标记还带着评分。 活下来的三颗星全部来自广播——广播发出去就不能改,所以它冻住了那一天的星; 而标记只存当前状态,当前状态跟着条目一起没了。 首页那段中文一直是对的(「标记本身没有分数,这颗星只在广播里」), 英文那份把它说反了,而且是在最没法自己去核对的那批读者面前。
这个项目已经记下六次「拿手上的样本推出一个结论」的错。这一次的形状略有不同: 不是样本太小,是两个数字恰好都是 8。