当前位置: 首页 > 后端技术 > Python

如何打造一个拥有万千star的Github项目

时间:2023-03-26 15:40:17 Python

前言每个程序员都或多或少接触过Github,至少听说过。Github最大的优势在于程序员可以参考、学习甚至复制他人贡献的项目,无需支付任何费用,因为它们都是开源的。此外,任何Github用户也可以为他们感兴趣的项目做出贡献。所谓贡献,就是对已有代码进行改正、优化、开发等操作,使项目发展得越来越好。而且Github的Star机制让项目的人气得到了很好的体现。如果你在Github上搜索Vue后台管理模板,你很有可能会选择星数上万的Vue-Element-Admin(就像你选择吃饭的地方,一般去大众点评选择一家星数高的餐厅)足够的评价)。千万不要小看Stars的like-like机制。这些明星的背后,是大多数程序员的认可。GithubStars数比朋友圈点赞数技术含量高很多。我不是在吹捧那些点赞最多的项目,我只是强调一种提高技术影响力的方法:创建一个拥有数千个Star的Github项目。Github作为全球最大的开源项目管理中心,可以给任何人实现这个目标的机会。另外,作者只是一个普通人。他一点一点尝试了很多方法,付出了很多努力,才收获了上千颗星辰。也没有像很多大佬那样优秀的项目了。笔者将从项目定位、产品开发、推广渠道等方面,从自己的角度介绍自己积累的经验和教训,如果大家有更多更好的作品和心得,欢迎交流。关于作者的项目Crawlab是作者最近在开发的一个Github项目。是一个专注于爬虫的管理平台。该项目自今年3月上线以来,累计获得约1.1kGithubStars(如下图)。Crawlab最初是一个基于Celery的分布式爬虫管理平台。后来出于稳定性和性能的考虑,在v0.3.0版本中将PythonCelery改为Golang,大大提高了稳定性和性能。Crawlab不仅支持Scrapy等主流爬虫框架,还支持Python、NodeJS、Go、Java、PHP等多种编程语言,支持多种爬虫框架。Crawlab的目的是让爬虫能够以最简单的方式管理和运行自己开发的爬虫。Crawlab自上线以来,深受爬虫爱好者和开发者的好评。也有不少用户表示会使用Crawlab搭建自己公司的爬虫平台。文末有之前关于Crawlab的文章。想进一步了解Crawlab的读者可以去看看。Github:https://github.com/tikazyq/crawlab寻找痛点任何产品都是给需要的人的。这些听众可以是您自己、您的朋友或完全陌生的人。此外,出色的产品必须解决用户问题或痛点。就像及时送木炭一样,当正确的解决方案在正确的时间出现时,其他人就会毫不犹豫地使用这个东西。分布式爬虫工具PySpider(13.5kstars)之所以火爆,是因为它解决了爬虫开发工程师需要爬取大量网站的管理痛点。Web框架Flask(46kstars)因为解决了Web开发的难点(相对于Django、Tornado等传统框架)而受到Web开发者的喜爱,在Github上占有一席之地。Vue-Element-Admin(39kstars),一个基于VueElement的管理后台框架,让前端开发者开箱即用,无需从头搭建管理后台,成为Vue开发者的最爱。如何找到用户的痛点,是我们打造优秀产品或项目的首要问题。寻找自己身边的用户痛点你可能会奇怪,我身边没有用户感到痛点。如果你这么认为,你一定没有注意。在工作中,我们处理成千上万的问题,有些是技术性的,有些是非技术性的。这些问题的出现,一定是需求没有得到满足造成的,这就是可能的出发点。比如笔者的开源爬虫管理平台Crawlab是在思考一个工作问题时诞生的。作者所在部门有数百个爬虫,包括Selenium爬虫和其他类型的爬虫。我们当时的爬虫管理方式和实现方式有很多局限性,导致可扩展性低,故障排除极其困难等问题。我们有一个WebUI界面,但仅限于业务,不关注爬虫本身。笔者当时就在想这个问题是不是只有我们公司才会遇到,或者说这个问题是几乎每个需要爬虫的公司都会遇到的通病。为了验证这个假设,笔者花了半个月的时间做了一个最小可行产品(MVP),Crawlabv0.1版本,只有最基本的执行爬虫脚本的功能。结果,在第一个版本发布后,得到了积极的反馈,也有很多改进的建议。第一天的星星数就达到了30颗,接下来的两天升到了100颗。这验证了我的假设。爬虫管理难的问题普遍存在。每个人都认为Crawlab是个好主意,并愿意尝试。这就是开始激励作者不断改进产品的原因。因此,从您周围的问题着手是一个很好的起点。扩大你的知识圈知识就是力量,这句话说的很对。在产品研发的过程中,我们不仅要了解自己的产品,更需要了解我们的客户,更重要的是,我们需要了解我们产品的市场和竞争对手。我们需要不断完善和更新我们的知识库,以便在后续的产品开发和推广中做出最优选择。扩大知识圈的渠道有很多,掘金就是一个很好的渠道。不仅有各种高质量的技术文章,还有掘金手册,可以帮助读者快速了解一门技术。除了掘金,还有很多其他优秀的技术网站,包括SegmentFault、GitChat、V2ex等。相信读者和老板们也有自己获取知识的渠道,可以加作者微信tikazyq1分享交流。以我自己为例,在开发Crawlab之前,我就已经是掘金的重度读者了,还买了韦世东写的掘金小册子《Python 实战:用 Scrapyd 打造个人化的爬虫部署管理控制台》。在小册子中,我不仅学习了爬虫部署管理平台的原理和基础知识,还了解了Gerapy这个市面上已经存在的爬虫管理平台。这为我后面开发Crawlab积累了很多宝贵的经验。也了解了市面上所有的爬虫平台,都是基于Scrapyd的,所以想知道如果要管理非scrapy的爬虫,他们会用什么工具来管理。后来我做了一些研究,发现Crawlab是他们解决这个问题的方法。所以,花点钱买知识是非常值得的,帮助我在获取知识的同时找到了痛点。构建产品您可能认为本节是关于开发产品的,但事实并非如此。本节将讲述如何在产品开发中花最少的时间做最正确的事情。当用户满意时,自然会增加Star数。我们不可能在第一时间做到一步到位。因此,不断改进产品以满足用户需求就显得尤为重要。《精益创业》中的作者定义了最小可行产品(MinimalViableProduct,MVP),这是一种以最低成本尽可能多地展示核心概念的产品策略。因为我们的时间是宝贵的(尤其是对于经常需要加班的朋友),花大量的时间去完善各种不必要的功能是极其浪费的。我们不需要花时间开发用户认为不重要的功能。怎样才能不浪费时间,只开发用户喜欢的功能?询问用户直接询问用户是最直接有效的方式。我在发布Crawlab第一版的时候建了一个微信群,在推广的时候邀请用户加入,积累了一些实际用户和潜在用户。我在开发一个新的功能之前,会问群里的朋友们喜不喜欢这样的功能,如果开发了这样的功能他们会不会用。我问群里的朋友有没有在用Crawlab,很多人回答有兴趣但没有。这显然是一个令人失望的答案,但我并没有灰心。我又问为什么,他们都觉得Crawlab虽然好,但是部署起来太麻烦了。然后在群里问了他们对Docker的看法,群里的朋友一致认为有Docker就好了。现在,Docker已经成为部署Crawlab的首选,几乎每个用户都使用Docker来部署Crawlab。询问用户的另一种有效方法是通过调查。在Crawlab的Golangv0.3.0版本发布的时候,我在群里发了一份问卷,邀请用户回答他们认为最重要的功能。答案如下图所示。经过统计,发现任务监控和可配置爬虫是最重要的两个功能。因此,我会在接下来的开发过程中优先开发这两个功能。用户行为统计今天的大公司都会在他们的网站或应用程序上报告和报告统计用户行为数据。这也是一个非常有效的了解用户偏好的工具,而且这种方法也排除了用户偏见(问卷中的受访者可能有不同的意见)。在Crawlab中,嵌入了一小段JS代码,可以统计用户行为数据,并上传到第三方统计工具百度统计。下图显示了用户使用最多的行为。从报告中我们可以看出,用户主要是在爬虫页面和任务页面之间来回切换tab。我可能不知道它是哪些标签,但我一定会在这两个页面上做更多的工作来优化Crawlab。当然,所有这些用户数据的收集均需征得用户的同意。如果用户在第一次加载时选择不同意,则不会上传数据(有些框架不会问用户意愿,直接上传统计数据)。A/B测试等其他提升产品的工具笔者就不说了,因为这需要更多的资源和流量,而Crawlab没有这么强大的资源。有兴趣的可以自行百度。产品推广如果你的产品没有人知道,你的产品再好,也只能搁置一旁,无人问津,落得尘土飞扬。因此,推广你的产品也是增加GithubStar数量的一个非常重要的途径。下面我将介绍一些常用的产品推广方法,包括一些常用的有效渠道,以及如何查看后台数据来监控渠道效果。写技术文章是我认为最有效的渠道。在推广Crawlab的实践中,我发现在掘金上写文章是一种非常重要的产品推广方式。下图展示了用户如何通过各种渠道(微信群、朋友圈、掘金自然流量)获取技术文章。把你的文章展示给更多的用户,有助于提高你的产品曝光率,如果用户对你的产品满意,他们会点击你在文章中嵌入的链接,导航到Github项目地址,然后给你的项目Star。每次在掘金上写完一篇文章,我都会把文章的链接发到各个相关的微信群,有兴趣的朋友点开文章的链接,这样更容易在Github上给项目一个star.同样的,我也会发朋友圈或者其他渠道。如果文章的读者第一时间不会star,没关系,他可能在了解你的项目后,在后期的曝光过程中给你star。在营销中,这被称为再营销(Remarketing)。不要认为写文章没有用。反而会帮助你更早的收获上千个Star项目。当然,我们不仅有掘金频道,我们还有很多其他的选择。以下是我知道的促销渠道列表。频道介绍掘金前端技术社区V2ex技术论坛GitChat技术知识分享平台微信公众号无需过多介绍SegmentFault技术问答,技术博客网站知乎知识问答网站CSDNIT技术社区开源中国开源技术交流社区简书blog本站其他读者可以加微信我tikazyq1。你应该定期检查你在Github上的流量来源,看看哪些渠道有用。具体地址为:首页->洞察->流量。Crawlab最近30天的流量如下图所示。可以看出,在Github内部,掘金和V2ex是Crawlab的三大流量来源。上图中8月14日的流量高峰是因为我当天发了一篇文章《如何快速搭建实用的爬虫管理平台》。当然,要发布这么多文章,发布这么多平台,也不是一件容易的事情。笔者和其他一些朋友打算写一个工具,基于爬虫的方式自动发布文章。名字是ArtiPub(文章发布者的意思),Github是https://github.com/crawlab-te...。现在框架已经搭建完成,可以继续开发了。欢迎大家随时关注。翻新Github主页仅仅有流量是不够的,还需要让你的README更有吸引力。以下是您应该考虑添加到您的项目主页的一些有吸引力的附加内容。Badge中英文目录产品截图使用安装社区以上方法可以让你的Github主页看起来更专业。你需要清楚地解释你的项目是如何安装的,以及中文的介绍,这将有助于让你的读者更容易上手你的产品。产品截图是展示产品的一种非常有效的方式。人类是视觉动物,会更倾向于有截图的产品(Airbnb在房屋截图中使用大光圈照片做得很好)。如果能加个标志什么的就更好了。下图是Crawlab的主页。虽然不完美,但对增加吸引力非常有效。项目管理项目管理是可选的,但对于推动和监控项目进度非常有效。您可以使用Teambition、ZenTao或Trello等很酷的项目管理工具,也可以使用简单的Excel。我在Crawlab中使用Excel。下图是早期的Crawlab项目管理电子表格。如何进行项目管理,这里就不细说了,因为我不是专业的项目管理经理,也没有PMP证书。后面如果有需求,我可以在另一篇文章中介绍项目管理。小结本文主要从自己的项目Crawlab的角度介绍如何搭建一个Star数上千的Github项目。其中包括寻找痛点、完善产品、产品推广和项目管理。我相信每一个赢得了数千颗星的项目的作者都有自己的方法论。看了Crossover杰老头的相关文章《1K star+ 的项目是如何炼成的?》,得到了很多启发,很多都和这篇文章类似。不管怎样,希望读者能从本文中获得知识,也希望你能早日收获你的万千Star项目。如果你已经有所收获,也可以分享一下你的经验。希望本文对您的工作和学习有所帮助。如有疑问,请加作者微信tikazyq1并注明Crawlab或ArtiPub。作者会拉你进群,或者在底下留言提问,作者会尽力解答。谢谢!上一篇文章如何快速搭建实用的爬虫管理平台Crawlabv0.3.0发布(Golang版)Crawlab爬虫平台核心原理--分布式架构爬虫平台Crawlab核心原理--字段自动提取算法Crawlab爬虫管理平台部署指南(Docker等)【【爬虫笔记】我是如何3分钟开发一个爬虫的】(https://juejin.im/post/5ceb43...手把手教你用Crawlab搭建技术文章聚合平台(二)手把手教你使用Crawlab搭建技术文章聚合平台(一)