乐趣区

如何打造一个上千Star的Github项目

前言

每一个程序员都或多或少接触过 Github,至少是听说过吧。而 Github 最大的好处是在于程序员可以不用付出任何费用,可以在上面参考、借鉴甚至是照搬其他人贡献的项目,因为这一切都是开源的。另外,任何一个 Github 用户也可以在上面对自己感兴趣的项目做出贡献。所谓贡献,就是对已有的代码进行更正、优化、开发等操作,让项目发展得越来越棒。而且,Github 的 Star 机制让项目的受欢迎程度得到很好的展示。如果您去 Github 上搜索一个 Vue 的后台管理模板,您很可能会选择几万 Star 的 Vue-Element-Admin(就像您去挑选晚餐地点,一般会去大众点评上选评价足够高的餐厅)。千万别小看 Star 这样类似点赞的机制,这些 Star 的背后是大多数程序员的认可,Github Star 数量可比朋友圈的点赞数量要有技术含量得多。我不是在吹捧那些点赞数多的项目,我只是在强调一种增加技术影响力的方式:打造一个上千 Star 的 Github 项目。Github 作为世界上最大的开源项目管理中心,可以让任何人有机会实现这个目标。

另外,作者只是一个普通人,是一点一滴尝试了很多办法、做出了很多努力才收获了上千 Star,并没有很多大佬那样更出色的项目。作者将从自己的角度给大家介绍自己积累的经验教训,从项目定位、产品开发、推广渠道等方面来讲。如果大佬们有更多更优秀的作品和经验,欢迎随时交流。

关于作者的项目

Crawlab 是作者近期在开发的 Github 项目,是一个专注于爬虫的管理平台。这个项目从今年 3 月份上线以来,到现在总共收到了大约 1.1k 个 Github Stars(如下图)。

最初 Crawlab 是基于 Celery 的分布式爬虫管理平台,后来由于稳定性、性能等考虑,在 v0.3.0 版本中将 Python Celery 改为了 Golang,稳定性和性能都得到了极大的提升。Crawlab 不仅支持主流的爬虫框架,例如 Scrapy,还支持 Python、NodeJS、Go、Java、PHP 等多种编程语言以及多种爬虫框架。Crawlab 的目的是让爬虫工程师以最轻松的方式来管理和运行他们开发的爬虫。Crawlab 自上线以来,一直受到爬虫爱好者们和开发者们的好评,不少使用者还表示会用 Crawlab 搭建公司的爬虫平台。在文末有关于 Crawlab 的往期文章,想要了解更多 Crawlab 的读者可以去看一下。

Github: https://github.com/tikazyq/crawlab

寻找痛点

任何一个产品,都是为需要的人服务的。这个受众可以是您自己,也可以是您的朋友,也可以是完全不认识的陌生人。此外,一个优秀的产品必须解决用户的问题,或者说是痛点。就像雪中送炭那样,恰当的时间出现了恰当的解决办法,别人才会毫不犹豫的使用这个东西。分布式爬虫工具 PySpider(13.5k stars)为什么那么受欢迎,就是因为它解决了那些需要抓取大量网站的爬虫开发工程师的管理困难的痛点。Web 框架 Flask(46k stars)因为其解决了 Web 开发上手困难的问题(相比于 Django、Tornado 这样的传统框架),受到了 Web 开发者的喜爱,在 Github 上占据一席之地。基于 Vue Element 的管理后台框架 Vue-Element-Admin(39k stars)让前端开发不用从零开始搭建管理后台,开箱即用,成为 Vue 开发者的香饽饽。如何寻找到用户的痛点是我们能打造一个优秀产品或项目的首要问题。

从自身周围寻找用户痛点

您可能会纳闷,我周围没有感觉到有痛点的用户。如果您这么觉得,您一定是没有注意观察。在工作中我们会处理成千上万的问题,包括一些技术问题或非技术问题。而这些问题的产生,一定是有没有满足到的需求导致的,而这正是可能的出发点。

例如,作者的开源爬虫管理平台 Crawlab 就是在思考一个工作问题时诞生的。作者所在的部门有上百个爬虫,其中包括了 Selenium 爬虫和其他类型的爬虫。我们当时的爬虫管理方式和实现方式都有非常多的局限性,导致了扩展性不高、排查异常困难等问题。我们有一个 Web UI 界面,但是仅仅局限于业务,没有专注于爬虫本身。作者当时思考,是不是只有我们公司才遇到这个问题,还是这个问题是一个普遍问题,几乎每个需要爬虫的公司都会遇到。为了验证这个假设,作者花了半个月的时间做了一个最小可行性产品(MVP),Crawlab v0.1 版本,只有最基本的执行爬虫脚本的功能。结果,第一版发布后陆陆续续收到正面反馈,也有不少改进建议。第一天的 Star 数就达到了 30,后面两天涨到了 100。这验证了我的假设,爬虫管理困难这个问题是普遍存在的,大家都觉得 Crawlab 是个不错的 idea,愿意来尝试。这才开始让作者更有动力不断完善这个产品。所以,从身边的问题出发是个很好的开始。

扩大自己的知识圈

知识就是力量,这句话很正确。在开发产品的过程中我们不仅需要了解自身产品,还需要了解自己的客户,更需要了解自己产品的市场及竞争对手。我们需要不断完善更新自己的知识库,以在后续的开发、推广产品过程中作出最优的选择。扩大知识圈的渠道有很多,掘金就是一个很不错的渠道,上面不仅有各种优质的技术文章,更有掘金小册,可以帮助读者快速了解一项技术。除了掘金以外,还有其他很多优秀的技术网站,包括 SegmentFault、GitChat、V2ex 等等。相信各位读者及大佬也有自己获取知识的渠道,可以加作者微信 tikazyq1 分享交流下。

以自己举例,在开发 Crawlab 之前,我已经是掘金的重度阅读者,而且还购买了韦世东写的掘金小册《Python 实战:用 Scrapyd 打造个人化的爬虫部署管理控制台》,在小册中不仅了解了爬虫部署管理平台的原理和基础知识,还了解到了市场上已存在的爬虫管理平台 Gerapy。这为后来我开发 Crawlab 积累了大量的宝贵经验。我又了解了市面上所有的爬虫平台,无一例外是基于 Scrapyd 的,因此我在想万一有想要管理非 scrapy 爬虫的呢,他们会使用什么工具来管理。后面我又做了些研究,发现 Crawlab 才是他们解决该问题的方法。因此,花一些钱购买知识是非常值得的,我在获取知识的同时帮助了我寻找痛点。

完善产品

您可能会认为本小节是在讲如何开发产品,但不是。本小节将讲如何在开发产品中花最少的时间干最正确的事情。用户满意了,增加 Star 数是自然而然的事情。

我们不可能在第一时间做到一步到位。因此,不断完善产品来满足用户需求变得尤为重要。《精益创业》中的作者定义了 最小可行性产品(Minimal Viable Product,MVP),也就是以最低成本尽可能展现核心概念的产品策略。因为我们的时间很宝贵(对于经常需要加班的朋友来说,更是如此),花费大量时间在完善各种不必要的功能上会是极为浪费的行为。我们没有必要花时间开发那些用户认为不重要的功能。如何做到不浪费时间,只开发用户喜爱的功能呢?

询问用户

直接询问用户 是最为直接也是最有效的方式。我在发布完 Crawlab 第一版的时候成立了一个微信群,并在推广的时候邀请用户加入,因此积累了一部分实际用户与潜在用户。我在开发一个新功能前我会询问群里的朋友,他们是否喜爱这样一个功能,如果开发这样的功能他们是否会使用。我询问群友是否都在用 Crawlab,很多人都回答感兴趣但是没有。这显然是个令人失望的答案,但我并没有丧失信心。我接着问了为什么,结果他们都认为 Crawlab 虽然不错,但部署太麻烦了。然后我在群里问了他们关于 Docker 的意见,群友一致认为如果有 Docker 会非常棒。而现在,Docker 变成了部署 Crawlab 的首选项,几乎每一个用户都是用的 Docker 来部署 Crawlab。

另外一个有效的询问用户的方式是 问卷调查。当 Crawlab 的 Golang 版本 v0.3.0 发布后,我在群里发放了问卷调查,邀请用户回答他们认为最重要的功能,答案如下图。统计后发现,任务监控和可配置爬虫是最为重要的两个功能。因此,我会在接下来的开发过程中优先考虑开发这两个功能。

统计用户行为

现在的大公司都会在网站或 App 中做埋点上报统计用户行为数据。这是也是非常有效的了解用户偏好的工具,而且这种方法还排除了用户偏见(问卷中被调查者可能心口不一)。在 Crawlab 中,嵌入了一小段 JS 代码,让用户行为数据得到统计,上传到第三方统计工具百度统计上面。下图是用户用得最多的行为。

从该报表可以看到,用户主要在爬虫页面和任务页面来回切换标签,我可能还不知道它是哪些标签,但我肯定会在这两个页面上下更多功夫,来优化 Crawlab。当然,这一切的用户数据收集都是经过用户同意的,用户如果在首次加载选择不同意的话,数据将不会上传(有些框架都不会询问用户的意愿,它们会直接上传统计数据)。

其他完善产品的工具例如 A / B 测试作者不会讲了,因为这要求更多的资源和流量,Crawlab 还没有这样雄厚的资源。感兴趣的可以自己去百度。

产品推广

如果没有人了解您的产品,您的产品再优秀也只能被凉在一边,无人问津,沾染灰尘。因此,推广您的产品也是增加 Github Star 数的非常重要的途径。下面我将介绍一些常用的产品推广的方式,包括一些常用的有效渠道,以及如何查看后台数据来监控渠道有效性。

写技术文章

这是我认为最有效的渠道了。在推广 Crawlab 的实践中,我发现在掘金上写文章是一个非常重要的推广产品的方式。下图是用户通过各种渠道(微信群、朋友圈、掘金自然流量)接触到技术文章方式。

将您的文章展示给更多用户有助于提高您产品的曝光度,而且如果用户对您产品感到满意的话,会点击您嵌入到文章中的导航到 Github 项目地址的链接,然后给您项目 Star。我每次在掘金上写完文章之后,我都会将文章的链接发到各个相关的微信群里,感兴趣的群友会点击链接到文章里,从而更有可能到 Github 上给项目点 Star。同理,我也会发布到朋友圈或其他渠道。如果文章读者不会第一时间 Star,没关系,他在了解到您项目之后很可能会在后面的曝光过程给您 Star。在市场营销中,这就叫再营销(Remarketing)。千万不要觉得写文章是一件没有用的事情,相反,它将帮助您更早地收获上千 Star 项目。

当然,我们不仅仅有掘金这一个渠道,我们还有很多其他选择。下面列出了我能够知道的推广渠道。

渠道 简介
掘金 偏前端的技术社区
V2ex 技术论坛
GitChat 技术知识分享平台
微信公众号 不用过多介绍了
SegmentFault 技术问答、技术博客网站
知乎 知识问答网站
CSDN IT 技术社区
开源中国 开源技术交流社区
简书 博客网站
其他 读者可以微信我 tikazyq1 添加

您应该定期去 Github 上查看您的流量来源,看看哪些渠道是有用的。具体地址是: 主页 -> Insights -> Traffic。Crawlab 最近 30 天的 Traffic 如下图。

可以看到,Github 内部、掘金以及 V2ex 是 Crawlab 的三大流量来源。上图中 8 月 14 号的流量高峰是因为我在当天发了一篇文章《如何快速搭建实用的爬虫管理平台》。

当然,要发布这么多文章这么多平台不是一件容易的事情。作者和另外一些朋友打算基于爬虫的方式,写一个自动发布文章的工具,名字叫 ArtiPub(意思为 Article Publisher),Github 为 https://github.com/crawlab-te…。现在框架搭建好了,准备不断开发。欢迎大家随时关注。

改造 Github 首页

光是有流量还不行,您还需要对让自己的 README 显得更加具有吸引力。下列是几个增加吸引力的内容,建议您都该考虑加入到您的项目主页中。

  • 徽章
  • 中英文
  • 目录
  • 产品截图
  • 使用安装
  • 社区

以上几种方式都可以让您的 Github 首页显得更加专业。您需要清晰地阐述您的项目的安装方式,以及中文介绍,这将有利于让您的读者更加容易上手您的产品。产品截图是非常有效的展示您产品的方式,人都是视觉动物,他们会更倾向于有截图的产品(Airbnb 就做的很不错,他们在房屋截图中用了大光圈照片)。如果您能够加上 Logo 之类的就更棒了。

下图是 Crawlab 的首页,虽然不完美,但对于增加吸引力来说很有效。

项目管理

项目管理是一个可选项,但对于推进和监控项目进度来说是非常有效的。可以用酷炫的项目管理工具,例如 Teambition、禅道或 Trello,也可以用简单的 Excel。我在 Crawlab 中就是用的 Excel。下图是早期 Crawlab 项目管理的电子表格。

如何进行项目管理,这里我就不详细讲了,因为我也不是专业项目管理经理,也没有 PMP 证书。后期如果有需求的话我可以在另一篇文章中专门介绍项目管理。

总结

本篇文章主要从自己项目 Crawlab 的角度出发,介绍了如何打造一个上千 Star 的 Github 项目的方法。其中包括寻找痛点、完善产品、产品推广和项目管理。相信每一个获得了上千 Star 的项目的作者都有自己的方法论。我看了老乡大佬 CrossoverJie 的相关文章《1K star+ 的项目是如何炼成的?》,获得了很多灵感,其中很多理念与本篇文章是相似的。不管如何,都祝愿读者能从本篇文章中收获知识,祝您能早日收获自己的上千 Star 项目。已经收获的,也可以分享下您的经验。

希望本篇文章对您的工作和学习有所帮助,有任何疑问,请加作者微信 tikazyq1 注明 Crawlab 或者 ArtiPub,作者会将您拉群,或者在底部留言提问,作者将尽力回答。谢谢!

<p align=”center”>

<img src="https://user-gold-cdn.xitu.io/2019/7/31/16c48234c8f5b366?w=674&h=896&f=jpeg&s=132795" height="360">

</p>

往期文章

  • 如何快速搭建实用的爬虫管理平台
  • 爬虫管理平台 Crawlab v0.3.0 发布(Golang 版本)
  • 爬虫平台 Crawlab 核心原理 – 分布式架构
  • 爬虫平台 Crawlab 核心原理 – 自动提取字段算法
  • 爬虫管理平台 Crawlab 部署指南(Docker and more)
  • [[爬虫手记] 我是如何在 3 分钟内开发完一个爬虫的](https://juejin.im/post/5ceb43…
  • 手把手教你如何用 Crawlab 构建技术文章聚合平台(二)
  • 手把手教你如何用 Crawlab 构建技术文章聚合平台(一)

本篇文章由 ArtiPub 自动发布, ArtiPub 让您的文章随处可阅

退出移动版