如何打造一個上千Star的Github專案

MarvinZhang發表於2019-08-17

前言

每一個程式設計師都或多或少接觸過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(如下圖)。

如何打造一個上千Star的Github專案

最初Crawlab是基於Celery的分散式爬蟲管理平臺,後來由於穩定性、效能等考慮,在v0.3.0版本中將Python Celery改為了Golang,穩定性和效能都得到了極大的提升。Crawlab不僅支援主流的爬蟲框架,例如Scrapy,還支援Python、NodeJS、Go、Java、PHP等多種程式語言以及多種爬蟲框架。Crawlab的目的是讓爬蟲工程師以最輕鬆的方式來管理和執行他們開發的爬蟲。Crawlab自上線以來,一直受到爬蟲愛好者們和開發者們的好評,不少使用者還表示會用 Crawlab 搭建公司的爬蟲平臺。在文末有關於Crawlab的往期文章,想要了解更多Crawlab的讀者可以去看一下。

Github: github.com/tikazyq/cra…

尋找痛點

任何一個產品,都是為需要的人服務的。這個受眾可以是您自己,也可以是您的朋友,也可以是完全不認識的陌生人。此外,一個優秀的產品必須解決使用者的問題,或者說是痛點。就像雪中送炭那樣,恰當的時間出現了恰當的解決辦法,別人才會毫不猶豫的使用這個東西。分散式爬蟲工具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釋出後,我在群裡發放了問卷調查,邀請使用者回答他們認為最重要的功能,答案如下圖。統計後發現,任務監控和可配置爬蟲是最為重要的兩個功能。因此,我會在接下來的開發過程中優先考慮開發這兩個功能。

如何打造一個上千Star的Github專案

統計使用者行為

現在的大公司都會在網站或App中做埋點上報統計使用者行為資料。這是也是非常有效的瞭解使用者偏好的工具,而且這種方法還排除了使用者偏見(問卷中被調查者可能心口不一)。在Crawlab中,嵌入了一小段JS程式碼,讓使用者行為資料得到統計,上傳到第三方統計工具百度統計上面。下圖是使用者用得最多的行為。

如何打造一個上千Star的Github專案

從該報表可以看到,使用者主要在爬蟲頁面和任務頁面來回切換標籤,我可能還不知道它是哪些標籤,但我肯定會在這兩個頁面上下更多功夫,來優化Crawlab。當然,這一切的使用者資料收集都是經過使用者同意的,使用者如果在首次載入選擇不同意的話,資料將不會上傳(有些框架都不會詢問使用者的意願,它們會直接上傳統計資料)。

其他完善產品的工具例如A/B測試作者不會講了,因為這要求更多的資源和流量,Crawlab還沒有這樣雄厚的資源。感興趣的可以自己去百度。

產品推廣

如果沒有人瞭解您的產品,您的產品再優秀也只能被涼在一邊,無人問津,沾染灰塵。因此,推廣您的產品也是增加Github Star數的非常重要的途徑。下面我將介紹一些常用的產品推廣的方式,包括一些常用的有效渠道,以及如何檢視後臺資料來監控渠道有效性。

寫技術文章

這是我認為最有效的渠道了。在推廣Crawlab的實踐中,我發現在掘金上寫文章是一個非常重要的推廣產品的方式。下圖是使用者通過各種渠道(微信群、朋友圈、掘金自然流量)接觸到技術文章方式。

如何打造一個上千Star的Github專案

將您的文章展示給更多使用者有助於提高您產品的曝光度,而且如果使用者對您產品感到滿意的話,會點選您嵌入到文章中的導航到Github專案地址的連結,然後給您專案Star。我每次在掘金上寫完文章之後,我都會將文章的連結發到各個相關的微信群裡,感興趣的群友會點選連結到文章裡,從而更有可能到Github上給專案點Star。同理,我也會發布到朋友圈或其他渠道。如果文章讀者不會第一時間Star,沒關係,他在瞭解到您專案之後很可能會在後面的曝光過程給您Star。在市場營銷中,這就叫再營銷(Remarketing)。千萬不要覺得寫文章是一件沒有用的事情,相反,它將幫助您更早地收穫上千Star專案。

當然,我們不僅僅有掘金這一個渠道,我們還有很多其他選擇。下面列出了我能夠知道的推廣渠道。

渠道 簡介
掘金 偏前端的技術社群
V2ex 技術論壇
GitChat 技術知識分享平臺
微信公眾號 不用過多介紹了
SegmentFault 技術問答、技術部落格網站
知乎 知識問答網站
CSDN IT技術社群
開源中國 開源技術交流社群
簡書 部落格網站
其他 讀者可以微信我tikazyq1新增

您應該定期去Github上檢視您的流量來源,看看哪些渠道是有用的。具體地址是: 主頁 -> Insights -> Traffic。Crawlab最近30天的Traffic如下圖。

如何打造一個上千Star的Github專案

可以看到,Github內部、掘金以及V2ex是Crawlab的三大流量來源。上圖中8月14號的流量高峰是因為我在當天發了一篇文章《如何快速搭建實用的爬蟲管理平臺》

當然,要釋出這麼多文章這麼多平臺不是一件容易的事情。作者和另外一些朋友打算基於爬蟲的方式,寫一個自動釋出文章的工具,名字叫ArtiPub(意思為Article Publisher),Github為 github.com/crawlab-tea… 。現在框架搭建好了,準備不斷開發。歡迎大家隨時關注。

改造Github首頁

光是有流量還不行,您還需要對讓自己的README顯得更加具有吸引力。下列是幾個增加吸引力的內容,建議您都該考慮加入到您的專案主頁中。

  • 徽章
  • 中英文
  • 目錄
  • 產品截圖
  • 使用安裝
  • 社群

以上幾種方式都可以讓您的Github首頁顯得更加專業。您需要清晰地闡述您的專案的安裝方式,以及中文介紹,這將有利於讓您的讀者更加容易上手您的產品。產品截圖是非常有效的展示您產品的方式,人都是視覺動物,他們會更傾向於有截圖的產品(Airbnb就做的很不錯,他們在房屋截圖中用了大光圈照片)。如果您能夠加上Logo之類的就更棒了。

下圖是Crawlab的首頁,雖然不完美,但對於增加吸引力來說很有效。

如何打造一個上千Star的Github專案

專案管理

專案管理是一個可選項,但對於推進和監控專案進度來說是非常有效的。可以用酷炫的專案管理工具,例如Teambition、禪道或Trello,也可以用簡單的Excel。我在Crawlab中就是用的Excel。下圖是早期Crawlab專案管理的電子表格。

如何打造一個上千Star的Github專案

如何進行專案管理,這裡我就不詳細講了,因為我也不是專業專案管理經理,也沒有PMP證照。後期如果有需求的話我可以在另一篇文章中專門介紹專案管理。

總結

本篇文章主要從自己專案Crawlab的角度出發,介紹瞭如何打造一個上千Star的Github專案的方法。其中包括尋找痛點、完善產品、產品推廣和專案管理。相信每一個獲得了上千Star的專案的作者都有自己的方法論。我看了老鄉大佬CrossoverJie的相關文章《1K star+ 的專案是如何煉成的?》,獲得了很多靈感,其中很多理念與本篇文章是相似的。不管如何,都祝願讀者能從本篇文章中收穫知識,祝您能早日收穫自己的上千Star專案。已經收穫的,也可以分享下您的經驗。

希望本篇文章對您的工作和學習有所幫助,有任何疑問,請加作者微信 tikazyq1註明Crawlab或者ArtiPub,作者會將您拉群,或者在底部留言提問,作者將盡力回答。謝謝!

如何打造一個上千Star的Github專案

往期文章

相關文章