GitHub 是一个非常有意思的地方,也常常变得非常有争议。有证据表明,GitHub 在某种程度上已经成为了简历的一部分。所谓的证据,便是培训班的人在帮助面试者美化 GitHub 页面——从 Vue 高仿各类项目,到淘宝买 star 来粉饰门面。作为一个面试官,我向来是非常讨厌这样的行为。那么作为一个正直的开发人员,他/她们也越来越需要通过 GitHub 去证明自己的能力。否则,总有一天劣币驱逐良币,导致 GitHub Trending 上的项目越来越不堪入目。
出于这样的目的,我想为那些有真金白银的小伙伴写一篇攻略。至于其他/她人的看法倒是不重要,帮助那些金子从水底浮出来,才是我们应该做的。要是有太多的过于水的项目,每天打开 GitHub Trending,都是各种面试指南,那生活还叫生活吗?那叫被面试强迫的生活。
在 GitHub 获得 Star 的重点是,碰触人们的 G 点——人们只对和自己有关的事情感兴趣。或是证明自己是对这个感兴趣,或是觉得这个项目不错可以收藏,或者是觉得作者不容易鼓励一下作者。
当然了,我痛恨那些,投机取巧的人——在 GitHub 放置大量非自己创作的电子书、学术资料、课程,以获取 star。
获得 Star 的核心是:你有人们想要的东西,你分享了人们想要的内容。这些内容可以是代码、文档、文章、资料、指南,只要它能帮助到其他/她人,那么它便是有价值的。当然了作为 GitHub 本身来说,那些通过 Git 和版本管理可以控制的内容,才更适合于这个平台上。
所以,当你手上拥有了人们想要的东西时,那么你就可以使用这份指南,来帮助你构建出更成功的项目。
作为一个 GitHub 上的“大 V”,我往往不需要花费太多的精力在项目宣传上。在 GitHub 上创建一个项目,然后 star 就来了……。有时候会比较“无耻”,等到某个项目做得稳定的时候,再给自己一个 star ,吸引更多的吃瓜群众。而后,写一系列的文章来介绍自己的项目。唉,做个开源项目不容易啊。
但是这些并不管用,因为有时候,我写的代码是大家丝毫不感兴趣的内容。如我最近写的 Serverless 密码管理器 MoPass:我在公众号上、博客上、知乎上写了文章来宣传这个项目,最后只吸引了一小部分人的注意——<= 25。毕竟,你觉得好的东西,那只是对你来说有用。对于其他/她人来说,这个密码管理器可能远远不如 1Password。
再举个成功的例子,最近我在思考:新项目的检查清单,即当我们来到或者开始一个项目的时候,我们需要做哪些事情,对应的还需要考虑什么因素。于是我在 GitHub 上创建了一个名为 New Project Checklist (https://github.com/phodal/new-project-checklist ) 的项目。我只是按自己的想法,在 README 上写下了要考虑的中英文因素,还没编写 Web 部分,就已经获得了 100+ 的 star。与此同时,因为 Web 部分还没完成,所以我还没在我的博客、专栏上进行宣传。
我只是写了一个 README,然后 star 就来了。但是,一般情况下,我们需要怎么做呢?
实际了,当我们在说获得 star 的时候,我们说的是为自己的项目做推广。只是呢,获得 star 是其中的一个结果产物,也就是说,我们在宣传项目的过程中,获得了关注度。至于推广本身来说,不同的人会有不同的看法。
事实上,GitHub 获取 star 与我们日常了解的营销差不多,先将用户吸引到我们的 GitHub 页面,再让用户有关注的动力(这一点太难了)。
因此开始之前,我们先看张图就能知道怎么获取流量。如下是《GitHub 漫游指南》最近两周内的流量来源统计(GitHub 通过 Google Analysis 来统计):
从上图中可以看出,流量主要来源于几部分:
GitHub 项目的直接访问
GitHub 的直接访问
来源于知乎等社交网站的
来自于 GitHub Pages 的访问
来自其它社交网站的访问
总的来说,在这一周里,累计有 1,266 次访问,其中有 735 个独立访客。看这数据不错,而实际上 star 率 就有点低。根据 Star History 网站(https://star-history.t9t.io ) 的统计,在过去的近两个月里,才涨了 38 个 star。
从我的分析来看,大抵原因有两个:
用户看的都是 GitHub Pages 上的内容
从数量上来看,受众并不多
而我最近在玩的 New Project Checklist (https://github.com/phodal/new-project-checklist 的转化率看上去,还算可以:
在 999 个独立访客里,获得了 202 个 star,转化率差不多是 20%——大家真的对这个项目感兴趣。
所以,让我们再强调一下核心的部分:你分享了人们想要的代码、内容。否则,你带来了大量的流量,并不一定能转化为你想要的关注度。
对于一个创造而言,自然而然的希望自己的项目能有人用。可能一点点的吐槽,都能帮助项目以更好的方式前进。这也就是我为自己项目宣传的意义,在创建项目的时候,我们往往只会按照自己的需要来创建项目。而非其他/她人的需求。因此当有一些新的需求出现时,可能会稍微地影响项目演进的方向。这些方向有好有坏,有时候反而会对自己更有帮助。
好了,回到我们的正题上,怎么去获取 star?
当我们在为一个项目做宣传的时候,实际上我们做的事情类似于搜索引擎优化(Search Engine Optimization)。稍有不同的是,GitHub 在实践的过程中,帮助我们优化了很多细节。它可以让我们更关注于核心的要素。
实际上,在上一小节里,我们已经介绍了相关的内容。若是想获得来自于 Google 等搜索引擎的访问,那么要掌握的技巧有:
简单实用的项目名。项目名在 Google 搜索结果里是放在最前面的部分,它与 URL 同在。
写好项目的 Description
。不管怎样,你一定要为你的项目写好 Description,让看到的人知道它在做什么。
设置好相应的 topics
。GitHub 为项目设计了一个 Topics 页面,这些页面会被拉入相应的索引中,可以从 Google 等搜索引擎和 GitHub 中搜索到。
作为外链加入文章中。作为 SEO 技巧的一部分,你需要在你的博客和文章里,适当地引用你的 GitHub 项目,它会你的项目带来流量。
合适的外链标题。作为链接存在时,需要注意链接的标题(与项目主题一致),它会在某种程度上影响搜索结果。
这些只是一些基本的内容,算不上是技巧,但是做好基础很重要。
让我们再强调一下,好的 README 真的很重要,重要、重要!重要。
GitHub 是一个人的简历,而开源项目的 README,就好像是一个项目的简历。在这份简历里,你需要好好地写你的项目:
这个项目做什么??
它解决了什么问题?
它有什么特性 — hello, world 示例?
怎么使用这个项目?
这个项目使用的是什么协议,是否允许商用?
以我混迹在 GitHub 近 10 年的经验来看,老外最喜欢吹这个项目有什么特性了。与此同时,还会在这个项目上“画大饼”(Roadmap),即这个项目未来将有什么功能——为了实现这些功能,我们还需要你的关心、支持与厚爱。所以,如果你是在做一个惊天动地的项目,比如说你要实现一个自动化安装脚本,你可以在未来的功能里写上:
AI 自动化安装(TODO)
这确实是个 TODO——即不吹,又吸引吃瓜群众。
作为一个混迹在各个社区的资深技术咨询师,分享相关的项目是我的一个常规操作。特别是,当看到一些人“无聊的聊天”,就会推荐上自己的新项目。当然,一般一个项目只会有一两次,频繁的分享便相当于 ** ,你懂的。
更新状态。当我在写一个大家感兴趣的开源项目时, 我会在我的社交账号上,如微博、知乎想法,定期的更新相关的状态。诸如:
万一有人感兴趣,就会随之而来——主要是我也不知道微博要怎么玩。
推荐自己的项目。作为一个在 GitHub 上有大量项目的开源作者,以及拥有大量文章的我。每次在微信群里,看到一些相关的问题,都会直接丢出我的开源项目。既装逼,又靠谱。
至于微信群的分享频率,要适度~,适量~。
既然我写了一个这么好的开源项目,那么最好的方式,还是写一篇文章介绍一下这个项目吧。blabla,写完了一篇项目的使用文档:
为什么需要这个项目?
这个项目是什么?
这个项目能解决什么问题?
这个项目要怎么用啊?
是不是写起来很简单?
未来在其它的文章中,有一些相关的话题,便可以稍微提及一些相关的项目。比如,在这篇文章里,我还介绍了好几个近期的项目。这些文章,除了在我的公从号上,还会发在我的博客(累计 100 万访问量)上,我的知乎专栏上,还有我的……上。它们结合起来,会形成一股强大的力量,即能吸引用户,又能在 SEO 上有一定的提升。
万一,我是说万一,你的项目上了 GitHub Trending。截个图,然后你可以再写一篇文章( 我的项目是如何上 GitHub Trending,毕竟上 Trending 很简单),发一条微博,写一个想法,录个小视频,大家快来看这是我的项目。
理论上上 GitHub Trending 会吸引来更多的用户——有大量的网站、自动化微博等,会每天去介绍这些新的上的 Trending 项目,没有意外的话,它会为你带来更多的流量——意味着更多的关注度。
事实上,如你所知,我在 GitHub 上获得大量 star 的原因,并不是说我有一个优秀的项目。而在于我在持续的更新,持续不断地在 GitHub 上做自己喜欢的项目,投入时间分享相关的技巧,还有一系列相关的开源项目。
我们一直在持续变好,打造一个自由的互联网世界,打造一个个自己喜欢的工具。
我们是极客,我们热爱编程,我们热爱分享。
作者:Phodal(黄峰达)是一个咨询师、Geek、作者和设计师,现作为一个资深咨询师为 ThoughtWorks 工作。作为一个 Geek,他是一名狂热的开源社区贡献者,在 GitHub 上拥有大量的开源项目,拥有 40k+ 的 stars。作为一个首席 markdown 印刷工,他是《自己动手设计物联网》繁、简体版、《全栈应用开发:精益实践》作者,并合译有两本物联网相关书籍;并作为技术专家,审阅了七本英文技术书籍。
注:所有插图均由 Phodal 模仿及绘制