Skip to content

Commit d8f8835

Browse files
author
Ubuntu
committed
refactor: lead with freshness instead of raw links
1 parent cd8b10b commit d8f8835

6 files changed

Lines changed: 332 additions & 49 deletions

File tree

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
name: Validate Public Assets
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
paths:
8+
- "output/**"
9+
- "site/**"
10+
- "README.md"
11+
- "README.en.md"
12+
- "scripts/validate_public_assets.py"
13+
- ".github/workflows/validate-public-assets.yml"
14+
workflow_run:
15+
workflows:
16+
- Deploy Pages
17+
- Release Feed Snapshot
18+
- Amplify Release Updates
19+
types:
20+
- completed
21+
branches:
22+
- main
23+
workflow_dispatch:
24+
schedule:
25+
- cron: "20 */6 * * *"
26+
27+
env:
28+
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
29+
30+
permissions:
31+
contents: read
32+
33+
concurrency:
34+
group: public-asset-validation
35+
cancel-in-progress: false
36+
37+
jobs:
38+
local:
39+
if: >-
40+
${{
41+
github.event_name != 'workflow_run' ||
42+
github.event.workflow_run.conclusion == 'success'
43+
}}
44+
runs-on: ubuntu-latest
45+
steps:
46+
- name: Checkout repository
47+
uses: actions/checkout@v6
48+
with:
49+
ref: main
50+
51+
- name: Setup Python
52+
uses: actions/setup-python@v5
53+
with:
54+
python-version: "3.12"
55+
56+
- name: Install validation dependencies
57+
run: python -m pip install --disable-pip-version-check pyyaml
58+
59+
- name: Validate repository artifacts
60+
run: python3 scripts/validate_public_assets.py --mode local --repo-root .
61+
62+
live:
63+
needs:
64+
- local
65+
if: >-
66+
${{
67+
github.event_name == 'workflow_dispatch' ||
68+
github.event_name == 'schedule' ||
69+
github.event_name == 'workflow_run'
70+
}}
71+
runs-on: ubuntu-latest
72+
steps:
73+
- name: Checkout repository
74+
uses: actions/checkout@v6
75+
with:
76+
ref: main
77+
78+
- name: Setup Python
79+
uses: actions/setup-python@v5
80+
with:
81+
python-version: "3.12"
82+
83+
- name: Install validation dependencies
84+
run: python -m pip install --disable-pip-version-check pyyaml
85+
86+
- name: Validate live public endpoints
87+
run: python3 scripts/validate_public_assets.py --mode live

README.en.md

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,26 @@
11
# Free VPN Subscriptions
22

3+
[中文](./README.md) | [English](./README.en.md)
4+
35
[![Public Repo](https://img.shields.io/badge/repo-public-0f766e)](https://github.com/Au1rxx/free-vpn-subscriptions)
4-
[![Formats](https://img.shields.io/badge/formats-clash%20%7C%20sing--box%20%7C%20v2ray-cf6a32)](https://github.com/Au1rxx/free-vpn-subscriptions/tree/main/output)
6+
[![Updated](https://img.shields.io/badge/updates-every%206%20hours-0f766e)](https://au1rxx.github.io/free-vpn-subscriptions/updates.html)
7+
[![Formats](https://img.shields.io/badge/formats-clash%20%7C%20sing--box%20%7C%20v2ray-cf6a32)](https://au1rxx.github.io/free-vpn-subscriptions/)
58
[![Status Feed](https://img.shields.io/badge/status-live-1d221c)](https://raw.githubusercontent.com/Au1rxx/free-vpn-subscriptions/main/output/status.json)
69
[![Latest Release](https://img.shields.io/github/v/release/Au1rxx/free-vpn-subscriptions)](https://github.com/Au1rxx/free-vpn-subscriptions/releases/latest)
710

8-
Free Clash, sing-box, and V2Ray subscription links with live node status, multi-region coverage, setup guides for common clients, and a dedicated updates page for release snapshots.
11+
Public distribution entry for Clash, sing-box, and V2Ray formats. Health is checked hourly, public snapshots are refreshed on schedule, and the repo includes setup guides, verification notes, and troubleshooting pages.
912

10-
[Open Live Status Site](https://au1rxx.github.io/free-vpn-subscriptions/)[Updates And Snapshot History](https://au1rxx.github.io/free-vpn-subscriptions/updates.html)[Status Dashboard](https://au1rxx.github.io/free-vpn-subscriptions/status.html)[Verification And Compatibility](https://au1rxx.github.io/free-vpn-subscriptions/verification.html)[Clash Guide](./docs/clash-subscription.md)[sing-box Guide](./docs/sing-box-subscription.md)[V2Ray Guide](./docs/v2ray-subscription.md)[FAQ](./docs/faq.md)
13+
[Open Live Status Site](https://au1rxx.github.io/free-vpn-subscriptions/)[Updates And Snapshot History](https://au1rxx.github.io/free-vpn-subscriptions/updates.html)[Status Dashboard](https://au1rxx.github.io/free-vpn-subscriptions/status.html)[Verification And Compatibility](https://au1rxx.github.io/free-vpn-subscriptions/verification.html)[FAQ](./docs/faq.md)
1114

1215
[Atom Feed](https://au1rxx.github.io/free-vpn-subscriptions/updates.xml)[JSON Feed](https://au1rxx.github.io/free-vpn-subscriptions/updates.json)[Discussions](https://github.com/Au1rxx/free-vpn-subscriptions/discussions)
1316

17+
## What returning visitors should check
18+
19+
- `Is the public status fresh?` Open the [Status Dashboard](https://au1rxx.github.io/free-vpn-subscriptions/status.html).
20+
- `Was there a new snapshot today?` Open [Updates And Snapshot History](https://au1rxx.github.io/free-vpn-subscriptions/updates.html).
21+
- `Are the shared paths still valid?` Open the [Verification And Compatibility](https://au1rxx.github.io/free-vpn-subscriptions/verification.html) page.
22+
- `Want ongoing updates?` Star the repo or subscribe to Atom / JSON feed.
23+
1424
## Check These Signals First
1525

1626
- If you want to confirm that the public side is still fresh, check the [Status Dashboard](https://au1rxx.github.io/free-vpn-subscriptions/status.html) and the latest timestamp in `output/status.json`.
@@ -25,27 +35,19 @@ Free Clash, sing-box, and V2Ray subscription links with live node status, multi-
2535
- Multi-region endpoints with hourly health checks and scheduled subscription refreshes.
2636
- Public documentation designed for fast onboarding and high GitHub discoverability.
2737

28-
## Subscription Links
29-
30-
Use the raw links below in your client:
31-
32-
| Format | Direct Link | Update Cadence |
33-
|--------|-------------|----------------|
34-
| Clash | `https://raw.githubusercontent.com/Au1rxx/free-vpn-subscriptions/main/output/clash.yaml` | Every 6 hours |
35-
| sing-box | `https://raw.githubusercontent.com/Au1rxx/free-vpn-subscriptions/main/output/singbox.json` | Every 6 hours |
36-
| V2Ray | `https://raw.githubusercontent.com/Au1rxx/free-vpn-subscriptions/main/output/v2ray-base64.txt` | Every 6 hours |
37-
| Status | `https://raw.githubusercontent.com/Au1rxx/free-vpn-subscriptions/main/output/status.json` | Every hour |
38+
## How to get started
3839

39-
## Release Downloads
40+
- If you want the fastest entry, start from the [homepage](https://au1rxx.github.io/free-vpn-subscriptions/).
41+
- If you need help choosing a format, open [Which subscription format should I use?](https://au1rxx.github.io/free-vpn-subscriptions/which-subscription-format-should-i-use.html).
42+
- If you want a downloadable snapshot, open [GitHub Releases](https://github.com/Au1rxx/free-vpn-subscriptions/releases).
43+
- If you want the difference between raw auto-refresh paths and release snapshots, open the [Verification And Compatibility](https://au1rxx.github.io/free-vpn-subscriptions/verification.html) page.
4044

41-
Use Releases as a backup distribution channel, a snapshot archive, or a clean download entry for users who do not want to browse raw files. Each new release also includes a human-readable summary of node health, region and protocol mix, plus a comparison against the previous snapshot when available.
45+
## Update cadence
4246

43-
| Format | Latest Release Asset |
44-
|--------|----------------------|
45-
| Clash | `https://github.com/Au1rxx/free-vpn-subscriptions/releases/latest/download/clash.yaml` |
46-
| sing-box | `https://github.com/Au1rxx/free-vpn-subscriptions/releases/latest/download/singbox.json` |
47-
| V2Ray | `https://github.com/Au1rxx/free-vpn-subscriptions/releases/latest/download/v2ray-base64.txt` |
48-
| Status | `https://github.com/Au1rxx/free-vpn-subscriptions/releases/latest/download/status.json` |
47+
- Fleet health checks: every hour
48+
- Public subscription snapshots: refreshed on schedule
49+
- Release snapshots: follow public artifact updates for manual download and history
50+
- Update feeds: automatically refreshed after new releases
4951

5052
## Why The Main Subscription URLs Stay Stable
5153

@@ -64,7 +66,7 @@ Use Releases as a backup distribution channel, a snapshot archive, or a clean do
6466
## Quick Start
6567

6668
1. Pick the subscription format that matches your client.
67-
2. Import the direct link above into your VPN client.
69+
2. Start from the homepage or the client-specific guide instead of pasting a raw link blindly.
6870
3. Refresh the profile when the node set changes.
6971
4. Check the live status site before troubleshooting client-side issues.
7072

README.md

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,24 @@
33
[中文](./README.md) | [English](./README.en.md)
44

55
[![Public Repo](https://img.shields.io/badge/repo-public-0f766e)](https://github.com/Au1rxx/free-vpn-subscriptions)
6-
[![Formats](https://img.shields.io/badge/formats-clash%20%7C%20sing--box%20%7C%20v2ray-cf6a32)](https://github.com/Au1rxx/free-vpn-subscriptions/tree/main/output)
6+
[![Updated](https://img.shields.io/badge/updates-every%206%20hours-0f766e)](https://au1rxx.github.io/free-vpn-subscriptions/updates.html)
7+
[![Formats](https://img.shields.io/badge/formats-clash%20%7C%20sing--box%20%7C%20v2ray-cf6a32)](https://au1rxx.github.io/free-vpn-subscriptions/)
78
[![Status Feed](https://img.shields.io/badge/status-live-1d221c)](https://raw.githubusercontent.com/Au1rxx/free-vpn-subscriptions/main/output/status.json)
89
[![Latest Release](https://img.shields.io/github/v/release/Au1rxx/free-vpn-subscriptions)](https://github.com/Au1rxx/free-vpn-subscriptions/releases/latest)
910

10-
公开提供 Clash、sing-box、V2Ray 订阅链接,附带实时节点状态、多地区覆盖、客户端导入教程与故障排查页面
11+
公开提供 Clash、sing-box、V2Ray 三种格式的订阅分发入口。状态每小时检查,公开快照按计划刷新,附带客户端教程、验证说明和故障排查页面
1112

12-
[打开站点首页](https://au1rxx.github.io/free-vpn-subscriptions/)[更新记录与快照历史](https://au1rxx.github.io/free-vpn-subscriptions/updates.html)[状态面板](https://au1rxx.github.io/free-vpn-subscriptions/status.html)[验证与兼容性](https://au1rxx.github.io/free-vpn-subscriptions/verification.html)[Clash 指南](./docs/clash-subscription.md)[sing-box 指南](./docs/sing-box-subscription.md)[V2Ray 指南](./docs/v2ray-subscription.md)[FAQ](./docs/faq.md)
13+
[打开站点首页](https://au1rxx.github.io/free-vpn-subscriptions/)[更新记录与快照历史](https://au1rxx.github.io/free-vpn-subscriptions/updates.html)[状态面板](https://au1rxx.github.io/free-vpn-subscriptions/status.html)[验证与兼容性](https://au1rxx.github.io/free-vpn-subscriptions/verification.html)[FAQ](./docs/faq.md)
1314

1415
[Atom Feed](https://au1rxx.github.io/free-vpn-subscriptions/updates.xml)[JSON Feed](https://au1rxx.github.io/free-vpn-subscriptions/updates.json)[Discussions](https://github.com/Au1rxx/free-vpn-subscriptions/discussions)
1516

17+
## 每次回来看什么
18+
19+
- `状态是否新鲜`:先看 [状态面板](https://au1rxx.github.io/free-vpn-subscriptions/status.html)
20+
- `今天有没有新快照`:看 [更新记录与快照历史](https://au1rxx.github.io/free-vpn-subscriptions/updates.html)
21+
- `分享出去的入口靠不靠谱`:看 [验证与兼容性页面](https://au1rxx.github.io/free-vpn-subscriptions/verification.html)
22+
- `想持续跟踪更新``Star` 仓库,或订阅 Atom / JSON Feed。
23+
1624
## 先看这三个信号
1725

1826
- 想确认公开侧是不是还在更新,先看 [状态面板](https://au1rxx.github.io/free-vpn-subscriptions/status.html)`output/status.json` 的最近检查时间。
@@ -27,27 +35,19 @@
2735
- 多地区节点,按小时检查健康,按计划刷新订阅文件。
2836
- 文档和页面按 GitHub / Google 可发现性设计,兼顾搜索流量与导入转化。
2937

30-
## 订阅链接
31-
32-
在客户端中直接使用以下原始链接:
33-
34-
| 格式 | 直链 | 更新频率 |
35-
|------|------|----------|
36-
| Clash | `https://raw.githubusercontent.com/Au1rxx/free-vpn-subscriptions/main/output/clash.yaml` | 每 6 小时 |
37-
| sing-box | `https://raw.githubusercontent.com/Au1rxx/free-vpn-subscriptions/main/output/singbox.json` | 每 6 小时 |
38-
| V2Ray | `https://raw.githubusercontent.com/Au1rxx/free-vpn-subscriptions/main/output/v2ray-base64.txt` | 每 6 小时 |
39-
| 状态 | `https://raw.githubusercontent.com/Au1rxx/free-vpn-subscriptions/main/output/status.json` | 每 1 小时 |
38+
## 获取方式
4039

41-
## Release 下载入口
40+
- 如果你只想快速上手:从 [站点首页](https://au1rxx.github.io/free-vpn-subscriptions/) 进入。
41+
- 如果你要判断该选哪种格式:看 [我该使用哪种订阅格式](https://au1rxx.github.io/free-vpn-subscriptions/which-subscription-format-should-i-use.html)
42+
- 如果你要手动下载快照:看 [GitHub Releases](https://github.com/Au1rxx/free-vpn-subscriptions/releases)
43+
- 如果你要确认 `raw``release` 的区别:看 [验证与兼容性页面](https://au1rxx.github.io/free-vpn-subscriptions/verification.html)
4244

43-
`Releases` 既是备用分发通道,也是历史快照存档,还适合不想直接使用 raw 链接的用户。现在每次 Release 还会附带本次节点概况、地区/协议分布,以及与上一快照相比的变化摘要。
45+
## 更新节奏
4446

45-
| 格式 | 最新 Release 资产 |
46-
|------|-------------------|
47-
| Clash | `https://github.com/Au1rxx/free-vpn-subscriptions/releases/latest/download/clash.yaml` |
48-
| sing-box | `https://github.com/Au1rxx/free-vpn-subscriptions/releases/latest/download/singbox.json` |
49-
| V2Ray | `https://github.com/Au1rxx/free-vpn-subscriptions/releases/latest/download/v2ray-base64.txt` |
50-
| 状态 | `https://github.com/Au1rxx/free-vpn-subscriptions/releases/latest/download/status.json` |
47+
- 节点健康状态:每小时检查一次
48+
- 公开订阅快照:按计划刷新
49+
- Release 快照:跟随公开产物更新,适合历史回看和手动下载
50+
- 更新 Feed:跟随最新 Release 自动刷新
5151

5252
## 为什么主订阅链接保持不变
5353

@@ -66,7 +66,7 @@
6666
## 快速开始
6767

6868
1. 先确认你的客户端需要哪种订阅格式。
69-
2. 把对应链接导入到客户端
69+
2. 从首页或对应客户端教程进入,不要先盲贴原始链接
7070
3. 节点有变更时刷新订阅。
7171
4. 排查问题前先看状态页。
7272

0 commit comments

Comments
 (0)