diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..3370355 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: true +contact_links: + - name: Security problem + url: https://github.com/jammyfu/github-risers/security/advisories/new + about: Report vulnerabilities privately, not in a public issue. diff --git a/.github/ISSUE_TEMPLATE/ranking-bug.yml b/.github/ISSUE_TEMPLATE/ranking-bug.yml new file mode 100644 index 0000000..9b5f731 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/ranking-bug.yml @@ -0,0 +1,15 @@ +name: Ranking or data problem +description: A wrong number, a repo in the wrong board, or a broken link +labels: [bug] +body: + - type: input + id: where + attributes: {label: Where, description: "Page and board, e.g. README.md > AI > Fastest rising this week"} + validations: {required: true} + - type: input + id: snapshot + attributes: {label: Snapshot, description: "e.g. rankings/2026-10-30/cn-0000"} + - type: textarea + id: problem + attributes: {label: What is wrong?, description: "Include how you checked it against the GitHub API if you can"} + validations: {required: true} diff --git a/.github/ISSUE_TEMPLATE/suggest-project.yml b/.github/ISSUE_TEMPLATE/suggest-project.yml new file mode 100644 index 0000000..2809910 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/suggest-project.yml @@ -0,0 +1,18 @@ +name: Suggest a project +description: Propose a repository to track, or a category change +labels: [enhancement] +body: + - type: input + id: repo + attributes: {label: Repository, description: "owner/name or URL"} + validations: {required: true} + - type: dropdown + id: category + attributes: + label: Category + options: [AI, Developer Tools, Security, Web / Frontend, Infrastructure, Design / Creative, Data] + validations: {required: true} + - type: textarea + id: why + attributes: {label: Why does it belong here?} + validations: {required: true} diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..6e34d11 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,8 @@ +## Summary + +## Checklist +- [ ] Followed [CONTRIBUTING.md](../CONTRIBUTING.md) +- [ ] Edited inputs only (`data/projects.json`, `data/categories.json`, `docs/`, `tools/`), not generated files +- [ ] New or changed descriptions have all five languages (en, zh-Hans, zh-Hant, ja, ko) +- [ ] `python3 tools/verify.py` passes +- [ ] No tracking or analytics code added diff --git a/.github/social-preview.png b/.github/social-preview.png new file mode 100644 index 0000000..d22466b Binary files /dev/null and b/.github/social-preview.png differ diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 0000000..5d155aa --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,20 @@ +cff-version: 1.2.0 +message: "If you use GitHub Risers rankings or data, please cite it as below." +title: "GitHub Risers: GitHub trending repositories ranked by star growth" +abstract: "A script-generated leaderboard that ranks GitHub repositories by stars gained per day (last 7, 30 and 365 days) instead of total stars, grouped by category with AI as the main board. Data comes from the GitHub API and is refreshed twice a day." +type: dataset +authors: + - alias: "jammyfu" + website: "https://github.com/jammyfu" +repository-code: "https://github.com/jammyfu/github-risers" +url: "https://jammyfu.github.io/github-risers/" +license: MIT +version: 0.1.0 +date-released: 2026-10-30 +keywords: + - github-trending + - trending-repositories + - star-growth + - github-ranking + - open-source + - ai diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..c7fef5e --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,85 @@ + +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at the maintainer via GitHub (@jammyfu) — open a private security advisory or contact the maintainer through their GitHub profile. All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of actions. + +**Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at [https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations + diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ee83f95 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,27 @@ +# Contributing to GitHub Risers + +Thanks for helping. Short version: change the **inputs**, never the generated outputs, and open a pull request. + +## What you can change +- `data/projects.json`: tracked projects. Each entry needs one valid `category` and a `desc` in all five languages: `en`, `zh-Hans`, `zh-Hant`, `ja`, `ko`. +- `data/categories.json`: category names, descriptions and topics (also five languages). +- `data/newcomer_i18n.json`: hand-written translations of new-repo descriptions. +- `docs/`: documentation and the GitHub Pages site. + +## What you must not edit by hand +`README*.md`, `data/stats.json`, `latest/`, `rankings/` are generated by `tools/update_stars.py` and `tools/render_readme.py`. History snapshots under `rankings/` are append-only. + +## Rules of the project +- Star numbers come from the GitHub API only. Never type or estimate numbers; mark missing data as missing. +- Zero telemetry: no analytics, tracking or beacon scripts. +- No star buying, swaps or manipulation. Suggestions that ask for any of that are closed. +- Changes go through pull requests; do not push to `main`. + +## Check before you push +```sh +python3 tools/verify.py +``` +This compiles the tools, runs the tests and checks that the generated READMEs are current. It needs no network. CI runs the same command. + +## Suggesting a project +Open an issue with the repository link, the category you think fits and why. Tracked projects are chosen to cover each category; the "Hottest new repos" boards are found automatically by topic. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..cb04ee5 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,12 @@ +# Security Policy + +## Reporting a vulnerability + +Please **do not** open a public issue for security problems. +Use GitHub's private reporting: **Security → Report a vulnerability** at + + +We aim to acknowledge reports within 7 days. Only the latest `main` is supported. + +## Scope +This repository contains scripts, data and documentation. The scheduled workflow uses the repository's built-in `GITHUB_TOKEN`; an optional `CURSOR_API_KEY` secret is read only by the translation step. Never commit tokens or keys. diff --git a/docs/.nojekyll b/docs/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/docs/FACTS.md b/docs/FACTS.md new file mode 100644 index 0000000..2961249 --- /dev/null +++ b/docs/FACTS.md @@ -0,0 +1,29 @@ +# GitHub Risers: facts + +A one-page, quotable summary. Details live in [CATEGORIES.md](CATEGORIES.md), [NEW_ARRIVALS.md](NEW_ARRIVALS.md) and [DAILY_UPDATE.md](DAILY_UPDATE.md). Nothing here is estimated; if a number is not in the repo's data files, it is not stated here. + +| Item | Fact | +|---|---| +| Name | GitHub Risers (formerly `ai-growth-atlas`; Chinese: GitHub 涨星榜) | +| What it is | A leaderboard of GitHub repositories ranked by **star growth** (stars gained per day), not by total stars | +| What it is not | Not an official GitHub product, not affiliated with GitHub, not a manually curated list, not a star-buying or promotion service | +| Main board | AI (LLMs, agents, MCP, coding copilots, generative AI) | +| Other boards | Developer Tools, Security, Web / Frontend, Infrastructure, Design / Creative, Data | +| Boards per category | 1. Hottest new repos (created in the last 7 days) 2. Fastest rising this week 3. This month 4. This year 5. Total stars (always last). Up to the top 20 each | +| Growth windows | 7, 30 and 365 complete UTC days before the run day | +| Growth formula | `per_day = stars gained in the window / days used`. A repo younger than the window uses its own age as the divisor and is marked young | +| New-repo hotness | `stars / max(age in days, 1)`, repos created in the last 7 days, at least 100 stars, not a fork, not archived | +| Star data source | GitHub REST API only: `GET /repos/{owner}/{repo}` for the total and `GET /repos/{owner}/{repo}/stargazers/history` for daily gains. Missing data is shown as missing, never filled in | +| New-repo discovery | GitHub search API, one `topic:` query per category topic; the repo must carry a category topic itself | +| Update schedule | Twice a day: 00:00 Beijing time (UTC+8) and 00:00 Los Angeles time (follows daylight saving). Runs by GitHub Actions cron, so a run can start a few minutes late | +| History | Every run is kept under `rankings///`; the newest copy is in `latest/` | +| Languages | English, 简体中文, 繁體中文, 日本語, 한국어 | +| Suspected cracked / pirated repos | Flagged by a published heuristic (`tools/spam.py`) and ranked after all normal repos in the new-repo board; never a category leader; never hidden | +| Fake stars | Not detected. Star counts are whatever the GitHub API returns | +| Use of AI | Rankings are computed by plain scripts. Translations and polish of repo descriptions can be produced with an AI model in an optional CI step; numbers never are | +| Telemetry | None. No analytics, tracking or beacon scripts | +| License | MIT | +| Author | [jammyfu](https://github.com/jammyfu) | +| Repository | | +| Website | | +| Cite | See [CITATION.cff](../CITATION.cff) | diff --git a/docs/FAQ.md b/docs/FAQ.md new file mode 100644 index 0000000..9789ad7 --- /dev/null +++ b/docs/FAQ.md @@ -0,0 +1,46 @@ +# GitHub Risers: FAQ + +## What is GitHub Risers? +A leaderboard of GitHub repositories ranked by how fast they gain stars, not by how many they already have. AI is the main board; Developer Tools, Security, Web / Frontend, Infrastructure, Design / Creative and Data have their own boards. It is generated by scripts from the GitHub API and updated twice a day. + +## How is it different from sorting by total stars? +Total-star lists keep the oldest giants on top. GitHub Risers divides stars gained in a window (7, 30 or 365 days) by the number of days, so a project that is taking off now can outrank one that is merely famous. Total stars still appear, as the last board in each category. + +## Is it the same as GitHub Trending? +No. GitHub Trending is GitHub's own page. GitHub Risers is an independent, open-source project with published rules, five languages and a saved history of every update. It is not affiliated with GitHub. + +## How is the growth rate computed? +`per_day = stars gained over the window / days used`. The gain is the sum of daily star counts from `GET /repos/{owner}/{repo}/stargazers/history` over the complete UTC days before the run. A repository younger than the window is divided by its own age and marked "young". See [FACTS.md](FACTS.md). + +## How often is it updated? +Twice a day, at 00:00 Beijing time (UTC+8) and 00:00 Los Angeles time. The schedule runs on GitHub Actions cron, so a run can start a few minutes late. Each run is archived in its own folder under `rankings/`. + +## Where do the numbers come from? Are any estimated? +Only the GitHub API. A project that cannot be fetched is shown as missing data; numbers are never typed in or estimated. + +## How are repositories assigned to a category? +Tracked projects (`data/projects.json`) each have one category. Newcomers are found by GitHub topic: a repo must carry one of the category's own topics. Owners tag their repos, so an occasional off-topic hit is possible. Rules: [CATEGORIES.md](CATEGORIES.md). + +## What is "Hottest new repos"? +Repositories created in the last 7 days with at least 100 stars, excluding forks and archived repos, ranked by stars divided by age in days. See [NEW_ARRIVALS.md](NEW_ARRIVALS.md). + +## Does it detect fake stars? +No. It reports the counts GitHub returns. It only flags, with a published heuristic, new repos that look like cracked, pirated or activator bundles, and ranks them after all normal repos without hiding them. + +## Does it use generative AI? +The rankings are computed by plain scripts. Descriptions of new repos can be translated and polished with an AI model in an optional CI step; numbers are never produced that way. + +## Is it affiliated with GitHub? +No. "GitHub" is used only to say whose data it ranks. + +## Does the site track visitors? +No. There are no analytics, tracking or beacon scripts anywhere in the repo. + +## How do I cite it? +Use [CITATION.cff](../CITATION.cff) (GitHub shows a "Cite this repository" button), and mention the date of the snapshot you used, for example `rankings/2026-10-30/cn-0000/`. + +## How can I suggest a project or report a mistake? +Open an issue, or send a pull request that edits `data/projects.json` or `data/categories.json` (all five languages required). Generated files (`README*.md`, `data/stats.json`, `latest/`, `rankings/`) are never edited by hand. See [CONTRIBUTING.md](../CONTRIBUTING.md). + +## What license is it under? +MIT. diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..cc33946 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,192 @@ + + + + + +GitHub Risers: GitHub Trending Repos Ranked by Star Growth + + + + + + + + + + + + + + + + + +
+

GitHub Risers

+

GitHub trending repositories ranked by star growth (stars gained per day), not total stars. AI is the main board; developer tools, security, web, infrastructure, design and data have their own. Numbers come straight from the GitHub API and are refreshed twice a day.

+

It is a script-generated leaderboard: not an official GitHub product, not a manually curated list, and not a star-buying or promotion service.

+Open the latest rankings +

简体中文

+
+
+

Key facts

+ + +
WhatRepositories ranked by stars gained per day over 7, 30 and 365 days, plus a 7-day hottest-new-repos board
CategoriesAI (main), Developer Tools, Security, Web / Frontend, Infrastructure, Design / Creative, Data
Updates00:00 Beijing time and 00:00 Los Angeles time, every day
Data sourceGitHub REST API only; missing data is shown as missing, never estimated
TelemetryNone
LicenseMIT
+

Rankings in five languages

+ +

FAQ

+
What is GitHub Risers?

A leaderboard of GitHub repositories ranked by how fast they gain stars, not by how many they already have. AI is the main board, with separate boards for developer tools, security, web, infrastructure, design and data.

How is the growth rate computed?

per_day = stars gained over the window / days used. The gain is the sum of daily star counts from the GitHub API endpoint stargazers/history over the complete UTC days before the run. A repository younger than the window is divided by its own age and marked young.

How often is it updated?

Twice a day, at 00:00 Beijing time (UTC+8) and 00:00 Los Angeles time. The schedule runs on GitHub Actions, so a run can start a few minutes late. Every run is archived under its own folder in the repository.

Is it the same as GitHub Trending?

No. GitHub Trending is GitHub's own page. GitHub Risers is an independent open-source project with published rules and a saved history of every update. It is not affiliated with GitHub.

What is the hottest new repos board?

Repositories created in the last 7 days with at least 100 stars, not forks, not archived, ranked by stars divided by age in days.

Does it detect fake stars?

No. It reports the counts the GitHub API returns. It only flags, with a published heuristic, new repos that look like cracked or pirated bundles and ranks them after all normal repos.

Does it use generative AI?

The rankings are computed by plain scripts. Translations of repo descriptions can be produced with an AI model in an optional step; numbers never are.

How do I cite it?

Use the CITATION.cff file in the repository (GitHub shows a Cite this repository button) and name the snapshot date.

+

Documentation

+ +
+
MIT License. Author: jammyfu. No analytics or tracking. Not affiliated with GitHub.
+ + diff --git a/docs/llms.txt b/docs/llms.txt new file mode 100644 index 0000000..e144cba --- /dev/null +++ b/docs/llms.txt @@ -0,0 +1,27 @@ +# GitHub Risers (GitHub 涨星榜) + +> GitHub trending repositories ranked by star growth (stars gained per day), not total stars. AI is the main board; developer tools, security, web, infrastructure, design and data have their own boards, each with a 7-day "hottest new repos" list. Numbers come from the GitHub API only. Updated twice a day: 00:00 Beijing time and 00:00 Los Angeles time. READMEs in English, 简体中文, 繁體中文, 日本語, 한국어. MIT license. Open source, no telemetry. Not affiliated with GitHub. + +GitHub Risers is a script-generated leaderboard, not a manual editorial list. It is not a star-buying or promotion service and does not use generative AI to compute rankings. + +## Start here +- [Website (English)](https://jammyfu.github.io/github-risers/): what it is, FAQ, how to cite +- [网站(简体中文)](https://jammyfu.github.io/github-risers/zh-Hans/): 是什么、常见问题、如何引用 +- [README (English rankings)](https://github.com/jammyfu/github-risers#readme): the latest rankings +- [README.zh-Hans.md](https://github.com/jammyfu/github-risers/blob/main/README.zh-Hans.md): 简体中文榜单 + +## Method and facts +- [docs/FACTS.md](https://github.com/jammyfu/github-risers/blob/main/docs/FACTS.md): one-page facts: scope, formula, update schedule, data sources, limits +- [docs/FAQ.md](https://github.com/jammyfu/github-risers/blob/main/docs/FAQ.md): questions people ask about the ranking +- [docs/CATEGORIES.md](https://github.com/jammyfu/github-risers/blob/main/docs/CATEGORIES.md): category rules (topic-only discovery; suspected cracked/pirated repos ranked last) +- [docs/NEW_ARRIVALS.md](https://github.com/jammyfu/github-risers/blob/main/docs/NEW_ARRIVALS.md): 7-day newcomer criteria +- [docs/DAILY_UPDATE.md](https://github.com/jammyfu/github-risers/blob/main/docs/DAILY_UPDATE.md): how the daily update runs + +## Data +- [data/stats.json](https://raw.githubusercontent.com/jammyfu/github-risers/main/data/stats.json): latest growth stats (JSON) +- [data/projects.json](https://raw.githubusercontent.com/jammyfu/github-risers/main/data/projects.json): tracked projects with five-language descriptions +- [rankings/README.md](https://github.com/jammyfu/github-risers/blob/main/rankings/README.md): history index, one snapshot per update slot + +## Optional +- [CITATION.cff](https://github.com/jammyfu/github-risers/blob/main/CITATION.cff): how to cite +- [CONTRIBUTING.md](https://github.com/jammyfu/github-risers/blob/main/CONTRIBUTING.md): how to suggest a project or fix diff --git a/docs/robots.txt b/docs/robots.txt new file mode 100644 index 0000000..7ff0e3c --- /dev/null +++ b/docs/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://jammyfu.github.io/github-risers/sitemap.xml diff --git a/docs/sitemap.xml b/docs/sitemap.xml new file mode 100644 index 0000000..475d54c --- /dev/null +++ b/docs/sitemap.xml @@ -0,0 +1,13 @@ + + + + https://jammyfu.github.io/github-risers/ + + + + + https://jammyfu.github.io/github-risers/zh-Hans/ + + + + diff --git a/docs/zh-Hans/index.html b/docs/zh-Hans/index.html new file mode 100644 index 0000000..939336e --- /dev/null +++ b/docs/zh-Hans/index.html @@ -0,0 +1,192 @@ + + + + + +GitHub 涨星榜(GitHub Risers):按涨星速度排名的 GitHub 热门仓库 + + + + + + + + + + + + + + + + + +
+

GitHub 涨星榜(GitHub Risers)

+

按涨星速度(每天新增 star 数)而不是总 star 数,给 GitHub 热门仓库排名。AI 是主榜,开发工具、安全、前端、基础设施、设计、数据各有自己的榜。数字直接取自 GitHub API,每天更新两次。

+

它是脚本生成的榜单:不是 GitHub 官方产品,不是人工精选清单,也不是买星或推广服务。

+查看最新榜单 +

English

+
+
+

关键事实

+ + +
是什么按 7、30、365 天的每日涨星速度排名,另有近 7 天新仓库榜
分类AI(主榜)、开发工具、安全、Web / 前端、基础设施、设计 / 创意、数据
更新时间每天北京时间 0 点和美西(洛杉矶)0 点各一次
数据来源只用 GitHub REST API;取不到的数据标为缺失,不估算
遥测无
许可证MIT
+

五种语言的榜单

+ +

常见问题

+
GitHub 涨星榜是什么?

一份按涨星速度而不是总 star 数排序的 GitHub 仓库榜单。AI 是主榜,开发工具、安全、前端、基础设施、设计、数据各有独立榜单。

涨星速度怎么算?

每日涨星 = 窗口内新增 star 数 ÷ 所用天数。新增数取自 GitHub API 的 stargazers/history,按运行日之前完整的 UTC 日累加。比窗口更新的仓库用自己的年龄做除数,并标为新仓库。

多久更新一次?

每天两次:北京时间 0 点(UTC+8)和美西洛杉矶时间 0 点。由 GitHub Actions 定时触发,可能晚几分钟开始。每次运行都会在仓库里单独存档。

它和 GitHub Trending 一样吗?

不一样。GitHub Trending 是 GitHub 自己的页面;涨星榜是独立的开源项目,规则公开,每次更新都有存档,与 GitHub 无任何关联。

“最热新仓库”榜怎么选?

近 7 天内创建、至少 100 star、非 fork、未归档的仓库,按 star 数 ÷ 仓库年龄(天)排序。

能识别刷星吗?

不能。它只如实报告 GitHub API 返回的数字。仅对疑似破解 / 盗版合集的新仓库用公开的规则标记,并排在所有正常仓库之后。

用了生成式 AI 吗?

榜单由普通脚本计算。新仓库描述的翻译可在一个可选步骤里用 AI 模型生成;数字从不由 AI 生成。

怎么引用?

使用仓库里的 CITATION.cff(GitHub 页面有“Cite this repository”按钮),并注明所用快照的日期。

+

文档

+ +
+
MIT 许可证。作者:jammyfu。无统计、无追踪。与 GitHub 无关联。
+ + diff --git a/llms.txt b/llms.txt index b7d03e1..e144cba 100644 --- a/llms.txt +++ b/llms.txt @@ -1,12 +1,27 @@ -# GitHub Risers(GitHub 飙升榜) +# GitHub Risers (GitHub 涨星榜) -> GitHub trending ranked by star growth, not total stars. AI first, plus developer tools, security, web, infrastructure, design and data; 7-day new-repo board per category. Real numbers from the GitHub API, updated twice a day (Beijing 00:00 and Los Angeles 00:00). MIT license. +> GitHub trending repositories ranked by star growth (stars gained per day), not total stars. AI is the main board; developer tools, security, web, infrastructure, design and data have their own boards, each with a 7-day "hottest new repos" list. Numbers come from the GitHub API only. Updated twice a day: 00:00 Beijing time and 00:00 Los Angeles time. READMEs in English, 简体中文, 繁體中文, 日本語, 한국어. MIT license. Open source, no telemetry. Not affiliated with GitHub. -## Docs -- [README](https://github.com/jammyfu/github-risers#readme): English rankings +GitHub Risers is a script-generated leaderboard, not a manual editorial list. It is not a star-buying or promotion service and does not use generative AI to compute rankings. + +## Start here +- [Website (English)](https://jammyfu.github.io/github-risers/): what it is, FAQ, how to cite +- [网站(简体中文)](https://jammyfu.github.io/github-risers/zh-Hans/): 是什么、常见问题、如何引用 +- [README (English rankings)](https://github.com/jammyfu/github-risers#readme): the latest rankings - [README.zh-Hans.md](https://github.com/jammyfu/github-risers/blob/main/README.zh-Hans.md): 简体中文榜单 + +## Method and facts +- [docs/FACTS.md](https://github.com/jammyfu/github-risers/blob/main/docs/FACTS.md): one-page facts: scope, formula, update schedule, data sources, limits +- [docs/FAQ.md](https://github.com/jammyfu/github-risers/blob/main/docs/FAQ.md): questions people ask about the ranking - [docs/CATEGORIES.md](https://github.com/jammyfu/github-risers/blob/main/docs/CATEGORIES.md): category rules (topic-only discovery; suspected cracked/pirated repos ranked last) -- [docs/NEW_ARRIVALS.md](https://github.com/jammyfu/github-risers/blob/main/docs/NEW_ARRIVALS.md): 7-day newcomers criteria -- [docs/DAILY_UPDATE.md](https://github.com/jammyfu/github-risers/blob/main/docs/DAILY_UPDATE.md): daily automation -- [data/projects.json](https://github.com/jammyfu/github-risers/blob/main/data/projects.json): tracked projects -- [data/stats.json](https://github.com/jammyfu/github-risers/blob/main/data/stats.json): latest growth stats +- [docs/NEW_ARRIVALS.md](https://github.com/jammyfu/github-risers/blob/main/docs/NEW_ARRIVALS.md): 7-day newcomer criteria +- [docs/DAILY_UPDATE.md](https://github.com/jammyfu/github-risers/blob/main/docs/DAILY_UPDATE.md): how the daily update runs + +## Data +- [data/stats.json](https://raw.githubusercontent.com/jammyfu/github-risers/main/data/stats.json): latest growth stats (JSON) +- [data/projects.json](https://raw.githubusercontent.com/jammyfu/github-risers/main/data/projects.json): tracked projects with five-language descriptions +- [rankings/README.md](https://github.com/jammyfu/github-risers/blob/main/rankings/README.md): history index, one snapshot per update slot + +## Optional +- [CITATION.cff](https://github.com/jammyfu/github-risers/blob/main/CITATION.cff): how to cite +- [CONTRIBUTING.md](https://github.com/jammyfu/github-risers/blob/main/CONTRIBUTING.md): how to suggest a project or fix diff --git a/tests/test_repo.py b/tests/test_repo.py index d4b76ea..dd00dda 100644 --- a/tests/test_repo.py +++ b/tests/test_repo.py @@ -174,6 +174,8 @@ def test_no_trackers_in_repo_text(self): and p.name not in {"test_repo.py"}] for f in files: body = f.read_text("utf-8", "replace").lower() + # Inert JSON-LD blocks (structured data for search engines, never executed) are the only allowed ', "", body, flags=re.S) for t in TRACKERS: self.assertNotIn(t, body, f"{f.relative_to(ROOT)} contains {t}")