linkyee — Quickly and Free Create Your Personal LinkTree Page Using GitHub Pages
Quickly create your own link page using GitHub Pages, 100% free, customizable, and supports custom domains.
ℹ️ℹ️ℹ️ The following content is translated by OpenAI.
Click here to view the original Chinese version. | 點此查看本文中文版
linkyee — Quickly and Free Create Your Personal LinkTree Page Using GitHub Pages
Create your own link page quickly using GitHub Pages, 100% free, customizable, and supports custom domains.
Results
I have open-sourced the results and packaged them into a Template Repo (linkyee). Friends in need can directly fork it for quick deployment.
linkyee — Your Own Link Pages
Advantages:
- Directly deployed on GitHub Pages, stable and free
- Control over the HTML source files, allowing you to modify layouts, styles, remove ads, and copyright notices; (the default style was created using GenAI ChatGPT)
- Supports custom domain names
- Supports dynamic variables, such as the default variables I created for Medium followers and GitHub repo star counts, which can automatically update the follower count on the page. 🚀🚀🚀
- Fast page loading
- You can complete the setup and deployment in just a few simple steps as described in this article.
GitHub Pages
GitHub Pages is a free static page hosting service provided by GitHub. All GitHub Free accounts can use it for public repositories, while private repositories require a paid upgrade to the GitHub account.
Limitations
- Can only host static file resources: HTML, CSS, JavaScript, font files, image files, PDFs, audio files, text files, etc.
- Website (Repo) size must not exceed: 1 GB (this is likely a soft limit, as my GitHub Pages Jekyll Repo is already close to 5 GB).
- Maximum deployment time: 10 minutes
- Maximum deployments per hour: 10 times (soft limit)
- Monthly traffic limit: 100 GB (soft limit)
- Frequent requests may result in an HTTP 429 response.
Other GitHub Pages Application Articles
- My Jekyll Blog Deployed on GitHub Pages ➡️ ZhgChgLi
- Seamless Transfer from Medium to GitHub Pages
- GitHub Pages Custom Domain Tutorial
Getting Started — Deploying on GitHub Pages
Step 1. Click the “Use this template” button at the top right of the linkyee template repository -> “Create a new repository”:
Step 2. Check “Include all branches,” enter your desired GitHub Pages repository name, and click “Create repository” when done:
The name of the GitHub Pages Repo will be the access URL.
If you enter the Repo name as
your-username.github.io
, this will become the direct access URL for your GitHub Pages site.
If you already have a
your-username.github.io
Repo, then the GitHub Pages URL will beyour-username.github.io/Repo-Name
.
Wait for the fork to complete. You may encounter deployment errors during the initial setup due to permission issues with the forked repository. Next, we will make adjustments step by step.
Step 4. Go to Settings -> Actions -> General, and ensure the following options are selected:
- Actions permissions: Allow all actions and reusable workflows
- Workflow permissions: Read and write permissions
After selecting, click the Save button to save changes.
Step 5. Go to Settings -> Pages, and confirm that the GitHub Pages branch is set to “gh-pages”:
The message “Your site is live at: XXXX” is your GitHub Pages public access URL.
Step 6. Go to Settings -> Actions, and wait for the first deployment to complete:
Step 7. Visit the GitHub Pages URL to confirm if the fork was successful:
Congratulations! Deployment was successful, and now you can modify the configuration files to replace them with your information. 🎉🎉🎉
Configuration
Configuration File
Edit the config.yml
file located in the root directory.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# Website Configuration
# Theme name, corresponding to the directory: ./theme/xxxx
theme: default
# HTML language setting
lang: "en"
# Plugins (implemented in ./plugins/PLUGIN_NAME)
# Use {{ vars.PLUGIN_NAME }} in the settings below
# The output of the plugin can be used below, for example: {{vars.MediumFollowersCountPlugin}}
plugins:
# Automatically fetch Medium follower count
- MediumFollowersCountPlugin:
username: zhgchgli
# Automatically fetch GitHub repository star count
- GithubRepoStarsCountPlugin:
- ZhgChgLi/ZMarkupParser
- ZhgChgLi/ZReviewTender
- ZhgChgLi/ZMediumToMarkdown
- ZhgChgLi/linkyee
# Google Analytics tracking ID
google_analytics_id:
# HTML title
title: "ZhgChgLi's Link Collection"
# Avatar image path
avatar: "./images/profile.jpeg"
# Name block text
name: "@zhgchgli"
# Tagline block text
tagline: >-
An iOS, web, and automation developer from Taiwan, passionate about sharing, traveling, and writing.
# Link list
# icon: Use Font Awesome icons (https://fontawesome.com/search?o=r&m=free)
# text: Text displayed on the link
# title: Link title
# url: Link URL
# alt: Alternative text (for accessibility)
# target: `_blank` opens in a new tab, `_self` opens in the same page
links:
- link:
icon: "fa-brands fa-medium"
text: "Technical Blog <span class='link-button-text'>({{vars.MediumFollowersCountPlugin}} Followers)</span>"
url: "https://blog.zhgchg.li"
alt: "ZhgChgLi's Technical Blog"
title: "ZhgChgLi's Technical Blog"
target: "_blank"
- link:
icon: "fa-brands fa-medium"
text: "Travel Journal <span class='link-button-text'>({{vars.MediumFollowersCountPlugin}} Followers)</span>"
url: "https://medium.com/ztravel"
alt: "ZhgChgLi's Travel Journal"
title: "ZhgChgLi's Travel Journal"
target: "_blank"
- link:
icon: "fa-solid fa-rss"
text: "Personal Website"
url: "https://zhgchg.li/"
alt: "ZhgChgLi's Website"
title: "ZhgChgLi's Website"
target: "_blank"
- link:
icon: "fa-brands fa-swift"
text: "ZMarkupParser <span class='link-button-text'>({{vars.GithubRepoStarsCountPlugin['ZhgChgLi/ZMarkupParser']}} Stars)</span>"
url: "https://github.com/ZhgChgLi/ZMarkupParser"
alt: "ZMarkupParser is a pure Swift library for converting HTML strings into NSAttributedString with custom styles."
title: "ZMarkupParser is a pure Swift library for converting HTML strings into NSAttributedString with custom styles."
target: "_blank"
- link:
icon: "fa-brands fa-app-store-ios"
text: "ZReviewTender <span class='link-button-text'>({{vars.GithubRepoStarsCountPlugin['ZhgChgLi/ZReviewTender']}} Stars)</span>"
url: "https://github.com/ZhgChgLi/ZReviewTender"
alt: "ZReviewTender is a tool for fetching app reviews from the App Store and Google Play Console and integrating them into workflows."
title: "ZReviewTender is a tool for fetching app reviews from the App Store and Google Play Console and integrating them into workflows."
target: "_blank"
- link:
icon: "fa-brands fa-markdown"
text: "ZMediumToMarkdown <span class='link-button-text'>({{vars.GithubRepoStarsCountPlugin['ZhgChgLi/ZMediumToMarkdown']}} Stars)</span>"
url: "https://github.com/ZhgChgLi/ZMediumToMarkdown"
alt: "ZMediumToMarkdown is a powerful tool for easily downloading and converting Medium articles to Markdown format."
title: "ZMediumToMarkdown is a powerful tool for easily downloading and converting Medium articles to Markdown format."
target: "_blank"
- link:
icon: "fa-brands fa-github"
text: "linkyee <span class='link-button-text'>({{vars.GithubRepoStarsCountPlugin['ZhgChgLi/linkyee']}} Stars)</span>"
url: "https://github.com/ZhgChgLi/linkyee"
alt: "linkyee is a fully customizable and open-source LinkTree alternative that can be directly deployed on GitHub Pages."
title: "linkyee is a fully customizable and open-source LinkTree alternative that can be directly deployed on GitHub Pages."
target: "_blank"
# Social Media Links List
# icon: Use Font Awesome icons (https://fontawesome.com/search?o=r&m=free)
# title: Link title
# url: Social media link URL
# alt: Alternative text (for accessibility)
# target: `_blank` opens in a new tab, `_self` opens in the same page
socials:
- social:
icon: "fa-brands fa-medium"
url: "https://blog.zhgchg.li"
title: "ZhgChgLi's Medium"
alt: "ZhgChgLi's Medium"
target: "_blank"
- social:
icon: "fa-brands fa-github"
url: "https://github.com/ZhgChgLi"
title: "ZhgChgLi's GitHub"
alt: "ZhgChgLi's GitHub"
target: "_blank"
- social:
icon: "fa-brands fa-twitter"
url: "https://twitter.com/zhgchgli"
title: "ZhgChgLi's Twitter"
alt: "ZhgChgLi's Twitter"
target: "_blank"
- social:
icon: "fa-brands fa-linkedin"
url: "https://www.linkedin.com/in/zhgchgli/"
title: "ZhgChgLi's LinkedIn"
alt: "ZhgChgLi's LinkedIn"
target: "_blank"
- social:
icon: "fa-brands fa-instagram"
url: "https://www.instagram.com/zhgchgli/"
title: "Instagram"
alt: "ZhgChgLi's Instagram"
target: "_blank"
- social:
icon: "fa-solid fa-envelope"
url: "zhgchgli@gmail.com"
title: "Email: zhgchgli@gmail.com"
alt: "zhgchgli@gmail.com"
target: "_blank"
# Footer Text
footer: >
Welcome to my website! Follow me on Medium or GitHub for the latest updates, or stay connected on Instagram and LinkedIn.
# Footer Copyright Notice
# Linkyee is a 100% free open-source project — you can modify the copyright notice as you wish. :)
copyright: >
© 2024 <a href="https://zhgchg.li" target="_blank">ZhgChgLi</a>. Powered by <a href="https://github.com/ZhgChgLi/linkyee" target="_blank">linkyee</a>.
Please note that after each modification of the file, you need to wait for GitHub Actions to complete the automatic build and page deployment tasks.
Refresh the page to apply the changes.🚀
Success!!
Customize Style, Modify Default Theme
./themes/default/index.html
./themes/default/styles.css
./themes/default/scripts.js
Create a New Theme
- ./themes/
YOUR_THEME
- Update to
theme:YOUR_THEME
in theconfig.yml
file.
Yes, you can use GenAI tools like ChatGPT to help you create a customized link page! (The default style was also generated using ChatGPT)
Automatic Redeployment
By default, the project will automatically redeploy once a day to refresh the dynamic variable values of the plugins. You can adjust the cron settings in Github Action — Automatic build ( .github/workflows/build.yml):
1
2
schedule:
- cron: '0 0 * * *' # Executes daily at midnight 00:00 (UTC)
If you do not need scheduled redeployments, you can simply delete the schedule
block.
Custom Domain ❤️❤️❤️
You can set up a custom GitHub Pages domain, for example, mine: https://link.zhgchg.li .
You can refer to my previous article “GitHub Pages Custom Domain Tutorial” for step-by-step instructions from purchasing to binding the domain, or you can buy a domain through my Namecheap affiliate link — I will receive a small commission, which will help me continue contributing to open-source projects.
Buy Me a Coffee ❤️❤️❤️
https://www.buymeacoffee.com/zhgchgli
If this project has been helpful to you, please consider starring the repo, recommending it to friends, or buying me a coffee. Thank you for your support!
Feel free to raise issues or submit fixes or contributions through pull requests. :)
If you have any questions or suggestions, please contact me.
This article was first published on Medium ➡️ Click Here
Automatically converted and synchronized using ZMediumToMarkdown and Medium-to-jekyll-starter.