fix: add how to get star from github

This commit is contained in:
Phodal HUANG 2019-03-11 12:41:47 +08:00
parent c7c359013f
commit 639657723f
No known key found for this signature in database
GPG key ID: 5C3D8793775E8537
5 changed files with 286 additions and 18 deletions

View file

@ -152,6 +152,17 @@
* [私有、商用的 SDK 或代码](http://github.phodal.com/#私有商用的-sdk-或代码)
* [数据及数据制作工具](http://github.phodal.com/#数据及数据制作工具)
* [结论](#结论)
* [GitHub 获 star 指南](#github-获-star-指南)
* [为什么我们 star 一个项目](#为什么我们-star-一个项目)
* [我的获 star 方式](#我的获-star-方式)
* [GitHub 流量分析](#github-流量分析)
* [GitHub 获 star 指南技巧](#github-获-star-指南技巧)
* [技巧一:结合 SEO 技巧](#技巧一结合-seo-技巧)
* [技巧二:完整、易读的 README](#技巧二完整易读的-readme)
* [技巧三:社交分享](#技巧三社交分享)
* [技巧四:文章](#技巧四文章)
* [技巧五:把握 GitHub Trending](#技巧五把握-github-trending)
* [不是技巧的技巧:持续性](#不是技巧的技巧持续性)
* [FAQ](#faq)
* [如何看待github 项目刷Star行为](http://github.phodal.com/#如何看待github-项目刷star行为)

View file

@ -34,7 +34,7 @@ GitHub 是一个非常有意思的地方,也常常变得非常有争议。有
因此开始之前我们先看张图就能知道怎么获取流量。如下是《GitHub 漫游指南》最近两周内的流量来源统计GitHub 通过 Google Analysis 来统计):
![GitHub 漫游指南](github_traffic.png)
![GitHub 漫游指南](./img/github_traffic.png)
从上图中可以看出,流量主要来源于几部分:
@ -46,7 +46,7 @@ GitHub 是一个非常有意思的地方,也常常变得非常有争议。有
总的来说,在这一周里,累计有 1,266 次访问,其中有 735 个独立访客。看这数据不错,而实际上 star 率 就有点低。根据 Star History 网站https://star-history.t9t.io 的统计,在过去的近两个月里,才涨了 38 个 star。
![GitHub 漫游指南 Star 历史](github-star-history.png)
![GitHub 漫游指南 Star 历史](./img/github-star-history.png)
从我的分析来看,大抵原因有两个:
@ -55,7 +55,7 @@ GitHub 是一个非常有意思的地方,也常常变得非常有争议。有
而我最近在玩的 New Project Checklist [https://github.com/phodal/new-project-checklist](https://github.com/phodal/new-project-checklist) 的转化率看上去,还算可以:
![GitHub New Project Checklist](github-new-project-checklist.png)
![GitHub New Project Checklist](./img/github-new-project-checklist.png)
在 999 个独立访客里,获得了 202 个 star转化率差不多是 20%——大家真的对这个项目感兴趣。
@ -73,7 +73,7 @@ GitHub 是一个非常有意思的地方,也常常变得非常有争议。有
实际上,在上一小节里,我们已经介绍了相关的内容。若是想获得来自于 Google 等搜索引擎的访问,那么要掌握的技巧有:
![Google New Project Checklist](google-new-project-checklist.png)
![Google New Project Checklist](./img/google-new-project-checklist.png)
- 简单实用的项目名。项目名在 Google 搜索结果里是放在最前面的部分,它与 URL 同在。
- 写好项目的 ``Description``。不管怎样,你一定要为你的项目写好 Description让看到的人知道它在做什么。
@ -107,7 +107,7 @@ GitHub 是一个人的简历,**而开源项目的 README就好像是一个
**更新状态**。当我在写一个大家感兴趣的开源项目时, 我会在我的社交账号上,如微博、知乎想法,定期的更新相关的状态。诸如:
![微博 MoPass](mopass-weibo.png)
![微博 MoPass](./img/mopass-weibo.png)
万一有人感兴趣,就会随之而来——主要是我也不知道微博要怎么玩。
@ -141,5 +141,3 @@ GitHub 是一个人的简历,**而开源项目的 README就好像是一个
我们一直在持续变好,打造一个自由的互联网世界,打造一个个自己喜欢的工具。
我们是极客,我们热爱编程,我们热爱分享。

View file

@ -1,8 +1,7 @@
FAQ
===
如何看待github 项目刷Star行为
---
## 如何看待github 项目刷Star行为
我觉得:在作者开源了源码的情况下,求 star 并没有任何问题。

View file

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

View file

@ -4,14 +4,14 @@
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>GitHub 漫游指南 github-roam</title>
<style type="text/css">
<title>GitHub 漫游指南 GitHub 漫游指南</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
</style>
<style type="text/css">
<style>
a.sourceLine { display: inline-block; line-height: 1.25; }
a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
a.sourceLine:empty { height: 1.2em; }
@ -314,6 +314,19 @@ code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warni
<li><a href="#数据及数据制作工具">数据及数据制作工具</a></li>
<li><a href="#结论">结论</a></li>
</ul></li>
<li><a href="#github-获-star-指南">GitHub 获 star 指南</a><ul>
<li><a href="#为什么我们-star-一个项目">为什么我们 star 一个项目</a></li>
<li><a href="#我的获-star-方式">我的获 star 方式</a></li>
<li><a href="#github-流量分析">GitHub 流量分析</a></li>
<li><a href="#github-获-star-指南技巧">GitHub 获 star 指南技巧</a><ul>
<li><a href="#技巧一结合-seo-技巧">技巧一:结合 SEO 技巧</a></li>
<li><a href="#技巧二完整易读的-readme">技巧二:完整、易读的 README</a></li>
<li><a href="#技巧三社交分享">技巧三:社交分享</a></li>
<li><a href="#技巧四文章">技巧四:文章</a></li>
<li><a href="#技巧五把握-github-trending">技巧五:把握 GitHub Trending</a></li>
<li><a href="#不是技巧的技巧持续性">不是技巧的技巧:持续性</a></li>
</ul></li>
</ul></li>
<li><a href="#faq">FAQ</a><ul>
<li><a href="#如何看待github-项目刷star行为">如何看待github 项目刷Star行为</a></li>
</ul></li>
@ -923,7 +936,7 @@ git push -u origin master</code></pre>
<div class="sourceCode" id="cb17"><pre class="sourceCode javascript"><code class="sourceCode javascript"><a class="sourceLine" id="cb17-1" title="1"><span class="at">define</span>([<span class="st">&#39;scripts/Doc&#39;</span>]<span class="op">,</span> <span class="kw">function</span>(Doc) <span class="op">{</span></a>
<a class="sourceLine" id="cb17-2" title="2"> <span class="st">&#39;use strict&#39;</span><span class="op">;</span></a>
<a class="sourceLine" id="cb17-3" title="3"> <span class="kw">function</span> <span class="at">Book</span>(_e) <span class="op">{</span></a>
<a class="sourceLine" id="cb17-4" title="4"> <span class="va">Doc</span>.<span class="at">apply</span>(<span class="kw">this</span><span class="op">,</span> arguments)<span class="op">;</span></a>
<a class="sourceLine" id="cb17-4" title="4"> <span class="va">Doc</span>.<span class="at">apply</span>(<span class="kw">this</span><span class="op">,</span> <span class="kw">arguments</span>)<span class="op">;</span></a>
<a class="sourceLine" id="cb17-5" title="5"> <span class="op">}</span></a>
<a class="sourceLine" id="cb17-6" title="6"> <span class="va">Book</span>.<span class="at">prototype</span> <span class="op">=</span> <span class="kw">new</span> <span class="at">Doc</span>()<span class="op">;</span></a>
<a class="sourceLine" id="cb17-7" title="7"></a>
@ -2583,7 +2596,7 @@ Set up your git name and email, this is important so that your commits can be id
<a class="sourceLine" id="cb118-9" title="9"> <span class="op">}</span> <span class="cf">else</span> <span class="op">{</span></a>
<a class="sourceLine" id="cb118-10" title="10"> p <span class="op">=</span> <span class="kw">new</span> <span class="at">Promise</span>()<span class="op">;</span></a>
<a class="sourceLine" id="cb118-11" title="11"> <span class="kw">this</span>.<span class="va">_callbacks</span>.<span class="at">push</span>(<span class="kw">function</span> () <span class="op">{</span></a>
<a class="sourceLine" id="cb118-12" title="12"> <span class="kw">var</span> res <span class="op">=</span> <span class="va">func</span>.<span class="at">apply</span>(context<span class="op">,</span> arguments)<span class="op">;</span></a>
<a class="sourceLine" id="cb118-12" title="12"> <span class="kw">var</span> res <span class="op">=</span> <span class="va">func</span>.<span class="at">apply</span>(context<span class="op">,</span> <span class="kw">arguments</span>)<span class="op">;</span></a>
<a class="sourceLine" id="cb118-13" title="13"> <span class="cf">if</span> (res <span class="op">&amp;&amp;</span> <span class="kw">typeof</span> <span class="va">res</span>.<span class="at">then</span> <span class="op">===</span> <span class="st">&#39;function&#39;</span>) <span class="op">{</span></a>
<a class="sourceLine" id="cb118-14" title="14"> <span class="va">res</span>.<span class="at">then</span>(<span class="va">p</span>.<span class="at">done</span><span class="op">,</span> p)<span class="op">;</span></a>
<a class="sourceLine" id="cb118-15" title="15"> <span class="op">}</span></a>
@ -2593,10 +2606,10 @@ Set up your git name and email, this is important so that your commits can be id
<a class="sourceLine" id="cb118-19" title="19"><span class="op">};</span></a>
<a class="sourceLine" id="cb118-20" title="20"></a>
<a class="sourceLine" id="cb118-21" title="21"><span class="va">Promise</span>.<span class="va">prototype</span>.<span class="at">done</span> <span class="op">=</span> <span class="kw">function</span>() <span class="op">{</span></a>
<a class="sourceLine" id="cb118-22" title="22"> <span class="kw">this</span>.<span class="at">result</span> <span class="op">=</span> arguments<span class="op">;</span></a>
<a class="sourceLine" id="cb118-22" title="22"> <span class="kw">this</span>.<span class="at">result</span> <span class="op">=</span> <span class="kw">arguments</span><span class="op">;</span></a>
<a class="sourceLine" id="cb118-23" title="23"> <span class="kw">this</span>.<span class="at">_isdone</span> <span class="op">=</span> <span class="kw">true</span><span class="op">;</span></a>
<a class="sourceLine" id="cb118-24" title="24"> <span class="cf">for</span> (<span class="kw">var</span> i <span class="op">=</span> <span class="dv">0</span><span class="op">;</span> i <span class="op">&lt;</span> <span class="kw">this</span>.<span class="va">_callbacks</span>.<span class="at">length</span><span class="op">;</span> i<span class="op">++</span>) <span class="op">{</span></a>
<a class="sourceLine" id="cb118-25" title="25"> <span class="kw">this</span>.<span class="at">_callbacks</span>[i].<span class="at">apply</span>(<span class="kw">null</span><span class="op">,</span> arguments)<span class="op">;</span></a>
<a class="sourceLine" id="cb118-25" title="25"> <span class="kw">this</span>.<span class="at">_callbacks</span>[i].<span class="at">apply</span>(<span class="kw">null</span><span class="op">,</span> <span class="kw">arguments</span>)<span class="op">;</span></a>
<a class="sourceLine" id="cb118-26" title="26"> <span class="op">}</span></a>
<a class="sourceLine" id="cb118-27" title="27"> <span class="kw">this</span>.<span class="at">_callbacks</span> <span class="op">=</span> []<span class="op">;</span></a>
<a class="sourceLine" id="cb118-28" title="28"><span class="op">};</span></a>
@ -3189,6 +3202,110 @@ Set up your git name and email, this is important so that your commits can be id
<p>除此,在 AI 相当流行的今天也是如此,也可以搜索到其它同学训练好的模型。</p>
<h2 id="结论">结论</h2>
<p>试试你的 GitHub 搜索功能吧。</p>
<h1 id="github-获-star-指南">GitHub 获 star 指南</h1>
<blockquote>
<p>每天打开 GitHub Trending都是各种面试指南这样的生活真难受。如果你的项目是金子那么请读读这篇文章。</p>
</blockquote>
<p>GitHub 是一个非常有意思的地方也常常变得非常有争议。有证据表明GitHub 在某种程度上已经成为了简历的一部分。所谓的证据,便是培训班的人在帮助面试者美化 GitHub 页面——从 Vue 高仿各类项目,到淘宝买 star 来粉饰门面。作为一个面试官,我向来是非常讨厌这样的行为。那么作为一个正直的开发人员,他/她们也越来越需要通过 GitHub 去证明自己的能力。否则,总有一天<strong>劣币驱逐良币</strong>,导致 GitHub Trending 上的项目越来越不堪入目。</p>
<p>出于这样的目的,我想为那些有真金白银的小伙伴写一篇攻略。至于其他/她人的看法倒是不重要,帮助那些金子从水底浮出来,才是我们应该做的。要是有太多的过于水的项目,每天打开 GitHub Trending都是各种面试指南那生活还叫生活吗那叫被面试强迫的生活。</p>
<h2 id="为什么我们-star-一个项目">为什么我们 star 一个项目</h2>
<p>在 GitHub 获得 Star 的重点是,<strong>碰触人们的 G 点</strong>——人们只对和自己有关的事情感兴趣。或是证明自己是对这个感兴趣,或是觉得这个项目不错可以收藏,或者是觉得作者不容易鼓励一下作者。</p>
<p>当然了,我痛恨那些,投机取巧的人——在 GitHub 放置大量非自己创作的电子书、学术资料、课程,以获取 star。</p>
<p>获得 Star 的核心是:<strong>你有人们想要的东西,你分享了人们想要的内容</strong>。这些内容可以是代码、文档、文章、资料、指南,只要它能帮助到其他/她人,那么它便是有价值的。当然了作为 GitHub 本身来说,那些通过 Git 和版本管理可以控制的内容,才更适合于这个平台上。</p>
<p>所以,当你手上拥有了人们想要的东西时,那么你就可以使用这份指南,来帮助你构建出更成功的项目。</p>
<h2 id="我的获-star-方式">我的获 star 方式</h2>
<p>作为一个 GitHub 上的“大 V”我往往不需要花费太多的精力在项目宣传上。在 GitHub 上创建一个项目,然后 star 就来了……。有时候会比较“无耻”,等到某个项目做得稳定的时候,再给自己一个 star ,吸引更多的吃瓜群众。而后,写一系列的文章来介绍自己的项目。唉,做个开源项目不容易啊。</p>
<p>但是这些并不管用,因为有时候,我写的代码是大家丝毫不感兴趣的内容。如我最近写的 Serverless 密码管理器 MoPass我在公众号上、博客上、知乎上写了文章来宣传这个项目最后只吸引了一小部分人的注意——&lt;= 25。毕竟你觉得好的东西那只是对你来说有用。对于其他/她人来说,这个密码管理器可能远远不如 1Password。</p>
<p>再举个成功的例子,最近我在思考:<strong>新项目的检查清单</strong>,即当我们来到或者开始一个项目的时候,我们需要做哪些事情,对应的还需要考虑什么因素。于是我在 GitHub 上创建了一个名为 New Project Checklist <a href="https://github.com/phodal/new-project-checklist">https://github.com/phodal/new-project-checklist</a> 的项目。我只是按自己的想法,在 README 上写下了要考虑的中英文因素,还没编写 Web 部分,就已经获得了 100+ 的 star。与此同时因为 Web 部分还没完成,所以我还没在我的博客、专栏上进行宣传。</p>
<p>我只是写了一个 README然后 star 就来了。但是,一般情况下,我们需要怎么做呢?</p>
<h2 id="github-流量分析">GitHub 流量分析</h2>
<p>实际了,当我们在说获得 star 的时候,我们说的是<strong>为自己的项目做推广</strong>。只是呢,获得 star 是其中的一个结果产物,也就是说,我们在宣传项目的过程中,获得了关注度。至于推广本身来说,不同的人会有不同的看法。</p>
<p>事实上GitHub 获取 star 与我们日常了解的营销差不多,先将用户吸引到我们的 GitHub 页面,再让用户有关注的动力(这一点太难了)。</p>
<p>因此开始之前我们先看张图就能知道怎么获取流量。如下是《GitHub 漫游指南》最近两周内的流量来源统计GitHub 通过 Google Analysis 来统计):</p>
<figure>
<img src="./img/github_traffic.png" alt="GitHub 漫游指南" /><figcaption>GitHub 漫游指南</figcaption>
</figure>
<p>从上图中可以看出,流量主要来源于几部分:</p>
<ul>
<li>GitHub 项目的直接访问</li>
<li>GitHub 的直接访问</li>
<li>来源于知乎等社交网站的</li>
<li>来自于 GitHub Pages 的访问</li>
<li>来自其它社交网站的访问</li>
</ul>
<p>总的来说,在这一周里,累计有 1,266 次访问,其中有 735 个独立访客。看这数据不错,而实际上 star 率 就有点低。根据 Star History 网站https://star-history.t9t.io 的统计,在过去的近两个月里,才涨了 38 个 star。</p>
<figure>
<img src="./img/github-star-history.png" alt="GitHub 漫游指南 Star 历史" /><figcaption>GitHub 漫游指南 Star 历史</figcaption>
</figure>
<p>从我的分析来看,大抵原因有两个:</p>
<ol type="1">
<li>用户看的都是 GitHub Pages 上的内容</li>
<li>从数量上来看,受众并不多</li>
</ol>
<p>而我最近在玩的 New Project Checklist <a href="https://github.com/phodal/new-project-checklist">https://github.com/phodal/new-project-checklist</a> 的转化率看上去,还算可以:</p>
<figure>
<img src="./img/github-new-project-checklist.png" alt="GitHub New Project Checklist" /><figcaption>GitHub New Project Checklist</figcaption>
</figure>
<p>在 999 个独立访客里,获得了 202 个 star转化率差不多是 20%——大家真的对这个项目感兴趣。</p>
<p>所以,让我们再强调一下核心的部分:<strong>你分享了人们想要的代码、内容</strong>。否则,你带来了大量的流量,并不一定能转化为你想要的关注度。</p>
<h2 id="github-获-star-指南技巧">GitHub 获 star 指南技巧</h2>
<p>对于一个创造而言,自然而然的希望自己的项目能有人用。可能一点点的吐槽,都能帮助项目以更好的方式前进。这也就是我为自己项目宣传的意义,在创建项目的时候,我们往往只会按照自己的需要来创建项目。而非其他/她人的需求。因此当有一些新的需求出现时,可能会稍微地影响项目演进的方向。这些方向有好有坏,有时候反而会对自己更有帮助。</p>
<p>好了,回到我们的正题上,怎么去获取 star</p>
<h3 id="技巧一结合-seo-技巧">技巧一:结合 SEO 技巧</h3>
<p>当我们在为一个项目做宣传的时候实际上我们做的事情类似于搜索引擎优化Search Engine Optimization。稍有不同的是GitHub 在实践的过程中,帮助我们优化了很多细节。它可以让我们更关注于核心的要素。</p>
<p>实际上,在上一小节里,我们已经介绍了相关的内容。若是想获得来自于 Google 等搜索引擎的访问,那么要掌握的技巧有:</p>
<figure>
<img src="./img/google-new-project-checklist.png" alt="Google New Project Checklist" /><figcaption>Google New Project Checklist</figcaption>
</figure>
<ul>
<li>简单实用的项目名。项目名在 Google 搜索结果里是放在最前面的部分,它与 URL 同在。</li>
<li>写好项目的 <code>Description</code>。不管怎样,你一定要为你的项目写好 Description让看到的人知道它在做什么。</li>
<li>设置好相应的 <code>topics</code>。GitHub 为项目设计了一个 Topics 页面,这些页面会被拉入相应的索引中,可以从 Google 等搜索引擎和 GitHub 中搜索到。</li>
<li>作为外链加入文章中。作为 SEO 技巧的一部分,你需要在你的博客和文章里,适当地引用你的 GitHub 项目,它会你的项目带来流量。</li>
<li>合适的外链标题。作为链接存在时,需要注意链接的标题(与项目主题一致),它会在某种程度上影响搜索结果。</li>
</ul>
<p>这些只是一些基本的内容,算不上是技巧,但是做好基础很重要。</p>
<h3 id="技巧二完整易读的-readme">技巧二:完整、易读的 README</h3>
<p>让我们再强调一下,好的 README 真的很重要,重要、重要!重要。</p>
<p>GitHub 是一个人的简历,<strong>而开源项目的 README就好像是一个项目的简历</strong>。在这份简历里,你需要好好地写你的项目:</p>
<ul>
<li><strong>这个项目做什么?</strong></li>
<li><strong>它解决了什么问题</strong></li>
<li><strong>它有什么特性 — hello, world 示例</strong></li>
<li><strong>怎么使用这个项目</strong></li>
<li><strong>这个项目使用的是什么协议</strong>,是否允许商用?</li>
</ul>
<p>以我混迹在 GitHub 近 10 年的经验来看,老外<strong>最喜欢吹这个项目有什么特性了</strong>。与此同时还会在这个项目上“画大饼”Roadmap<strong>这个项目未来将有什么功能</strong>——为了实现这些功能,我们还需要你的关心、支持与厚爱。所以,如果你是在做一个惊天动地的项目,比如说你要实现一个自动化安装脚本,你可以在未来的功能里写上:</p>
<ul>
<li>AI 自动化安装TODO</li>
</ul>
<p>这确实是个 TODO——即不吹又吸引吃瓜群众。</p>
<h3 id="技巧三社交分享">技巧三:社交分享</h3>
<p>作为一个混迹在各个社区的资深技术咨询师,分享相关的项目是我的一个常规操作。特别是,当看到一些人“无聊的聊天”,就会推荐上自己的新项目。当然,一般一个项目只会有一两次,频繁的分享便相当于 ** ,你懂的。</p>
<p><strong>更新状态</strong>。当我在写一个大家感兴趣的开源项目时, 我会在我的社交账号上,如微博、知乎想法,定期的更新相关的状态。诸如:</p>
<figure>
<img src="./img/mopass-weibo.png" alt="微博 MoPass" /><figcaption>微博 MoPass</figcaption>
</figure>
<p>万一有人感兴趣,就会随之而来——主要是我也不知道微博要怎么玩。</p>
<p><strong>推荐自己的项目</strong>。作为一个在 GitHub 上有大量项目的开源作者,以及拥有大量文章的我。每次在微信群里,看到一些相关的问题,都会直接丢出我的开源项目。既装逼,又靠谱。</p>
<p>至于微信群的分享频率,要适度<sub>,适量</sub></p>
<h3 id="技巧四文章">技巧四:文章</h3>
<p>既然我写了一个这么好的开源项目那么最好的方式还是写一篇文章介绍一下这个项目吧。blabla写完了一篇项目的使用文档</p>
<ul>
<li><strong>为什么需要这个项目?</strong></li>
<li><strong>这个项目是什么?</strong></li>
<li><strong>这个项目能解决什么问题?</strong></li>
<li><strong>这个项目要怎么用啊?</strong></li>
</ul>
<p>是不是写起来很简单?</p>
<p>未来在其它的文章中,有一些相关的话题,便可以稍微提及一些相关的项目。比如,在这篇文章里,我还介绍了好几个近期的项目。这些文章,除了在我的公从号上,还会发在我的博客(累计 100 万访问量)上,我的知乎专栏上,还有我的……上。它们结合起来,会形成一股强大的力量,即能吸引用户,又能在 SEO 上有一定的提升。</p>
<h3 id="技巧五把握-github-trending">技巧五:把握 GitHub Trending</h3>
<p>万一,我是说万一,你的项目上了 GitHub Trending。截个图然后你可以再写一篇文章 我的项目是如何上 GitHub Trending毕竟上 Trending 很简单),发一条微博,写一个想法,录个小视频,大家快来看这是我的项目。</p>
<p>理论上上 GitHub Trending 会吸引来更多的用户——有大量的网站、自动化微博等,会每天去介绍这些新的上的 Trending 项目,没有意外的话,它会为你带来更多的流量——意味着更多的关注度。</p>
<h3 id="不是技巧的技巧持续性">不是技巧的技巧:持续性</h3>
<p>事实上,如你所知,我在 GitHub 上获得大量 star 的原因,并不是说我有一个优秀的项目。而在于我在持续的更新,持续不断地在 GitHub 上做自己喜欢的项目,投入时间分享相关的技巧,还有一系列相关的开源项目。</p>
<p>我们一直在持续变好,打造一个自由的互联网世界,打造一个个自己喜欢的工具。</p>
<p>我们是极客,我们热爱编程,我们热爱分享。</p>
<h1 id="faq">FAQ</h1>
<h2 id="如何看待github-项目刷star行为">如何看待github 项目刷Star行为</h2>
<p>我觉得:在作者开源了源码的情况下,求 star 并没有任何问题。</p>