目前有两个项目star过百,第一个项目至今都快5年了,偶尔有人点个赞,不过也就那样了,没啥发展了。
最近新写了一个项目,到今天不到2个月时间,star就已经过百了,虽然和大神比起来不值一提,但是自己还是小小的激动了下,也下决心要把这个项目做好,立个flag,今年年底争取到300个star。
先简单介绍下后面这个项目,最近项目上有个word和pdf文档预览的需求,本来以为这种常见的需求,应该有很多成熟方案,但是万万没想到,居然做起来还很费劲,尤其是每种文档都有很多js库,需要去一个一个去尝试甄别,每个库的效果也参差不齐,而且使用起来也要写不少代码,和自己预期的传递一个文档地址就能预览相差甚远。
本着困难就等于机会的原则,觉得这是一个不错的开源项目idea,于是说干就干,迅速撸出来一个版本,没想到刚提交到github没多久,就有人提了个Issue,要求增加excel文档的预览,人生第一次收到Issue啊,也让自己知道真的有人需要这个,于是又赶紧增加了excel的预览功能。
在没有任何宣传的情况下,也收获了9个赞,让自己倍感鼓励,于是又优化了readme文档,优化了部分代码,然后在掘金、简书、思否等宣传了下,效果不是特别好,后来转到知乎,在一个相关问题下回答了下,没想到一下就火了,在春节回家的高铁上,手机打开了项目,一看居然一天增加了40多个赞,真的是之前从没有过的体验,小小激动了下,也下决心好好经营下这个项目,争取今年突破300 star。
项目地址,感兴趣的可以看看,如果能给一个star,不剩感激
关于如何做一个star过百的github项目,最近也有一些思考,和大家分享一下。
总结起来就三句话:抓住痛点、适度营销、提供价值
抓住痛点
github项目和我们平时开发的项目对比起来最大的不同就是,我们既要做开发,又要做产品经理,我们需要自己给自己提需求,自己去挖掘用户的痛点,站在用户的角度来优化我们的项目。
很多招聘信息中都提到,有自己的开源项目可以加分,所以大部分开发者,都想有个自己的高star项目,但是却不知从何做起,有的想法太难,自己实现不了,比如我曾经想过写个前端的文章编辑器,或者是实现一套完整的低代码项目,但是由于技术和时间的原因,始终没有开始。
其实项目不一定非要很大,关键是能否解决很多人的共性问题。
比如我知道的一个项目 isMobile(2.3K star),就是用来判断当前环境是否是手机端浏览器,这个代码也就不到200行,实现起来也并不是特别难,相信有个几年经验的前端开发者,都可以完成这个项目。虽然这个项目简单,但是需求量却是很大,基本上大部分适配移动端的项目都需要,而项目虽说不难,但是要自己完整从头写出来,还是需要花费一些时间的,像这类需求广泛,实现起来没有那么容易,也没有那么难的小项目,就比较适合作为我们的开源项目。
在平时的项目开发中,总会遇到一些不太好解决的问题,遇到问题不要慌,问题就等于机会,你有问题,别人可能也有问题,提供一个好的解决方案,你就脱颖而出了,发现问题也是一个难得的能力。
适度营销
从本质上来说,github的赞,是一个社交属性。赞的多少并不完全等于项目的技术含量,有的人可能只是对你的项目很感兴趣,觉得你的想法很棒,有的可能觉得做这个开源项目不容易点个赞以示鼓励,有的可能只是暂时收藏下等以后有需要再细看,所以赞的多少,不只是取决于你的项目技术含量,更多的是人与人之间的关系,就算你写的很好,没有营销,没有人看到,star数量肯定也不会高,当然了几十k的这种火热项目,肯定还是要看技术含量的。
提到营销,可能大家就想到去发帖子,项目弄好了之后,急急忙忙去四处发帖,结果可能并不理想,我的建议是先做好内功,然后再去宣传。
我们可以用个数学公式来描述这个事情:
点赞数量 = 展现量 * 点赞率
所以很显然,要想提高点赞数量,就要做好这两点:提升项目的展现量和点赞率。
展现量对我们来说是比较难的,所以要最大化的利用好展现量,也就是要先提升我们的项目的点赞率,提升点赞率就是提升我们的内功。
提升点赞率
可以通过这些工作来提升点赞率
- 为项目起个好名字
一个通俗易懂的名字,能让别人一下就明白你的项目大致是做什么的,我们平时写代码都讲究可读性,项目名称更是如此,有了想法之后先别着急写项目,先静下心来为它起个好名字。
为了项目以后更好的发展,项目名称最好不要和别人重复,可以在github和npm网站上搜索下,是否存在重名项目,有的话就改一个。
项目名称要有识别性,不要和别人太过相似,名称就像是品牌,要和别人区分开。
- 写好readme
大家时间都很宝贵,当来到你的项目主页后,要让别人最短时间内明白这个项目是做什么的,和其他项目相比有什么优势,为什么要选择你这个项目,项目怎么安装,怎么使用,有哪些API等。
只有快速充分的了解你,有了比较好的第一印象,别人才有耐心去看你的代码或者尝试在项目中试用,如果连看都看不明白,肯定就快速离开了,更别提点赞了。
可以看到很多项目readme写的非常敷衍,如果你的项目是个新项目,别人没有耐心去仔细研究你,可以说好的readme是成功的一大半。
- 提供演示链接
针对部分项目,别人可能想看到使用效果,比如一个后台管理项目或者一个图表组件,别人不知道你做的是什么样子,这时如果能提供一个试用链接,让别人能够更加真实的感受到你的项目,那对提升点赞会有很大的帮助,我自己平时找项目也是这样的,如果能有演示网站就会先进去看看效果是否是我期望的,如果满足了我的期望,就会更加仔细的去看readme,继而clone项目。
能提供演示链接的,尽量提供演示链接,不能提供的至少提供个效果图片,总之让别人更加真实的感受到你的项目效果。
提供演示链接,也不需要服务器的,github本身就有这个功能,所以也不会增加额外的经济开销。
- 提升代码质量
其他开发者在了解完项目基本信息之后,就要开始看代码了,作为开源项目,应该重视代码质量,不要犯低级错误。
这里建议两点,第一个是为代码增加单测,前端js库可以使用jest,如果是组件库也有相应的工具库,如Vue Test Utils 。第二是使用ESLint,保持代码良好风格。
重要的是每次代码变更都要经过严格的测试,我们自己做项目,自己是又当产品,又当开发,还要当测试,自己是代码质量的唯一负责人,避免因为自己失误,给使用者代码生产风险。
提升展现量
这里我们再给出几个简单的公式
展现量 = 自然搜索量 + 软文推广量 + 其他
自然搜索 = github站内搜索 + 百度搜索量 + 谷歌搜索量 + 其他
软文推广量 = 掘金推广量 + 简书推广量 + 知乎推广量 + 思否推广量 + ...
展现量来源大致可以分为两种:自然搜索和主动推广。
自然搜索
自然搜索又可以细分为两类: github站内搜索和站外搜索(百度、谷歌)。
要提升站内搜索,必须做好这几点
- 名称:名称中就包含用户想要搜索的内容
- 简介:简介除了说明项目的功能和特色之外,还要包含期望的搜索关键词,考虑中英文
- 项目标签:使用用户可能的搜索词作为标签
- 语言:github默认是根据文件内容自动设置项目语言的,可以通过.gitattributes文件来修改,比如我这个项目默认显示是css的,我给改成了javascript
站外搜索主要是借助百度、谷歌等搜索引擎来宣传,要做好这块搜索个人感觉主要包含两点
- 在权重较高的网站发布宣传稿:百度展示的内容是看网站权重的,一般这几个知名的网站内容更容易展示靠前:如掘金、简书、思否、知乎、CSDN等,而且为了增加展现几率,可以一稿多发。
- 设置好文章的标题:如果你遇到这个问题搜索什么,就设置成什么,同时如果网站支持设置关键词,也尽量设置上
主动推广
借助百度搜索的时候我们会发软文,这里主动推广,也要发软文,但是二者目的和文章内容是不同的。
为了增加搜索写的软文,目的是为了帮助正在遇到某个问题的人迅速解决问题的,因此可以简单直接,直接宣传怎么用你的库解决问题。
而主动推广则不同,一定要让别人看到你这个文章学到东西,学到东西了才会点赞、评论,也更有可能获得平台更多的流量支持,如果只是简单的说一下, 然后贴个项目地址,估计很难获得多少效果。
总之,我们要有产品思维,要有同理心,想明白别人看到你呈现的内容,能得到什么,别人为什么要给你点赞,一定要有利他思维。
提供价值
有了好的创意,同时适当的宣传推广,相信获得100来个赞,不会太难,而如果想要更多赞,达到300,500,甚至达到k级别,肯定还是要看项目的真实价值。
起初我们写的项目大多只是个简单demo,并不是很完善,比如我现在做的这个文档预览项目,现在只是提供了基础的文档预览,而要想做好,还有很多很多问题要解决,我自己会整理了一个待办事项,有时间就做一些,而我自己也知道,最难的就是是否能坚持下去。
比如我的待办清单
- 同时支持vue2和vue3: 已完成
- 扩展支持的文件类型:目前支持word、excel、pdf,后续要支持ppt和.doc文件
- 扩展支持方式:目前是vue组件,react用户怎么办,是否提供js库
- 移动端适配及兼容性问题
- 移动端展现样式优化
- IOS和Android展示兼容性问题
- 浏览器兼容问题
- 更好的样式支持,word和excel的预览效果和真实文件保持一致
每一个都不是那么好做,但是确实每一个都很有价值,如果这些不做好,那么项目只能称为一个demo,很难用到别人的实际项目中,别人不能用,那项目也自然火不了,没有口碑,想达到k级别star肯定没戏了。
所以小打小闹比的是创意和营销,而真正要成为一个成功的项目,最后看的还是价值!价值!价值!
最后附上我的项目地址,如果觉得有用,还请赏一个赞,有什么能比得到一个赞,更让人开心呢~~