diff --git a/.github/workflows/daily-update.yml b/.github/workflows/daily-update.yml index 1b3341c..7c71af7 100644 --- a/.github/workflows/daily-update.yml +++ b/.github/workflows/daily-update.yml @@ -91,6 +91,6 @@ jobs: fi git config user.name "github-actions[bot]" git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - git add data rankings latest README*.md + git add data rankings latest README*.md docs/HOW_IT_WORKS*.md git commit -m "chore(data): daily star update $(date -u +%F)" git push origin HEAD:main diff --git a/AGENTS.md b/AGENTS.md index f29f27e..a59e2e8 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -5,11 +5,11 @@ Project harness follows `jammyfu/CoderSkills` → `skills/continuous-project-loo - Single plan entry: `CURRENT_PLAN.md`. Long-term route: `MASTER_PLAN.md`. Candidates: `TODO_BACKLOG.md`. Records: `docs/project-governance/`. - Verify before claiming done: `python3 tools/verify.py` (explicit interpreter, no PATH reliance). - Star data must come from the GitHub API only (`python3 tools/update_stars.py`). Never type or estimate numbers; mark missing data as missing. -- Never edit the generated files by hand: `README*.md`, `data/stats.json`, `latest/`, `rankings/` (history snapshots are append-only; never edit or delete them by hand). Edit `data/projects.json`, `data/categories.json`, `tools/i18n.py`, then re-run the tools. +- Never edit the generated files by hand: `README*.md`, `docs/HOW_IT_WORKS*.md`, `data/stats.json`, `latest/`, `rankings/` (history snapshots are append-only; never edit or delete them by hand). Edit `data/projects.json`, `data/categories.json`, `tools/i18n.py`, then re-run the tools. - Zero telemetry: no analytics, tracking or beacon scripts, ever. - `data/projects.json` `desc` and `data/categories.json` `name`/`desc` need all five languages: en, zh-Hans, zh-Hant, ja, ko. - Changes go through pull requests. Do not push or merge to `main` without the owner's approval (the daily workflow/script is the only automated writer of `data/` and `README*`). -- Generated too: `rankings/README*.md`, `latest/rankings*.md`, `rankings///rankings..md` (all from `tools/i18n.py` + `stats.json`). Translations of new-repo descriptions are hand-written in `data/newcomer_i18n.json`; list the gaps with `python3 tools/newcomer_i18n.py`. +- Generated too: `rankings/README*.md`, `latest/rankings*.md`, `rankings///rankings..md` (all from `tools/i18n.py` + `stats.json`). Translations of new-repo descriptions live in the translation library `data/translation_library.json` (repo + source hash + language; fixed terms in `data/glossary.json`); list the gaps and the hit rate with `python3 tools/newcomer_i18n.py`. The README is only a first screen (top 10 per board; the full top 20 is in `latest/`; it links `docs/FAQ.md`, `docs/FACTS.md`, `CITATION.cff`, `.github/social-preview.png`, which the GEO work owns: never generate or overwrite them from the generator) (headline, one sentence, this round's #1s, the boards): change its wording in `tools/i18n.py` / `tools/render_readme.py`, and put explanations in `render_docs` (`docs/HOW_IT_WORKS*.md`). - The "hottest new repos (7 days)" ranking is discovered by `tools/newcomers.py` from the search API; it must never repeat a project from another ranking (see `docs/NEW_ARRIVALS.md`). - Categories (AI primary + others) are defined in `data/categories.json` and documented in `docs/CATEGORIES.md`. Newcomers are per-category; see `docs/NEW_ARRIVALS.md`. diff --git a/README.ja.md b/README.ja.md index 551b513..fdc9444 100644 --- a/README.ja.md +++ b/README.ja.md @@ -1,44 +1,44 @@ [English](README.md) | [简体中文](README.zh-Hans.md) | [繁體中文](README.zh-Hant.md) | **日本語** | [한국어](README.ko.md) -# GitHub Risers:スター増加速度で並べるカテゴリ別トレンドランキング +# GitHub スター急上昇ランキング / GitHub Risers -> 総スター数ではなく、スターが増える速さで並べた GitHub トレンド(Star Growth)。AI をメインに、開発者ツール・セキュリティ・Web/フロントエンド・インフラ・デザイン・データも。1 日 2 回更新、各カテゴリに 7 日以内の新着ランキング付き。 +GitHub スター急上昇ランキング / GitHub Risers -総スター数順のリストでは古い大物が居座り、いま伸びているものが埋もれます。GitHub Risers は 1 日あたりの増加スター数(直近 7・30・365 日)で並べ、カテゴリごとに表示します。AI がメインのランキングです。各カテゴリは、直近 7 日以内に作られたリポジトリの「新着」ランキング、週・月・年の増加ランキング、最後に総スター数の順です。数値はすべて GitHub API から取得しています。分類ルール:[docs/CATEGORIES.md](docs/CATEGORIES.md)。 +[![MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![CI](https://github.com/jammyfu/github-risers/actions/workflows/ci.yml/badge.svg)](https://github.com/jammyfu/github-risers/actions/workflows/ci.yml) [![updated](https://img.shields.io/badge/updated-2026--10--30-brightgreen.svg)](latest/rankings.ja.md) -GitHub API から取得:2026-10-30 08:39:25(UTC)。 -1 日 2 回更新:北京時間 0 時(UTC+8)とロサンゼルス時間 0 時(America/Los_Angeles、夏時間に追従)。更新ごとに時間帯別に保存されます。 -各カテゴリのランキングは、全 70 収録プロジェクトのうち上位最大 20 件を表示します。 +総スター数ではなく、1 日あたりに増えたスター数で GitHub リポジトリを並べます。AI が先頭で、開発者ツール、セキュリティ、Web / フロントエンド、インフラ、デザイン / クリエイティブ、データが続きます。1 日 2 回更新。 -以下が最新のランキングです。更新のたびに時間帯ごとにも保存しています:[ランキング履歴](rankings/README.ja.md) · [latest/rankings.ja.md](latest/rankings.ja.md)。 +2026-10-30 08:39(UTC)更新、1 日 2 回(北京時間 0 時、ロサンゼルス時間 0 時)。 -## 今回のカテゴリ別 1 位 +[ウェブサイト](https://jammyfu.github.io/github-risers/) · [仕組み](docs/HOW_IT_WORKS.ja.md) · [ファクト](docs/FACTS.md) · [履歴](rankings/README.ja.md) · [最新](latest/rankings.ja.md) -各カテゴリの各ランキングの 1 位を、下の実データからスクリプトで自動生成しています。「なし」は今回その枠に該当がないことを示します。 +## 今回のカテゴリ別 1 位 | カテゴリ | 新着 1 位(7 日) | 今週 1 位 | 今月 1 位 | 今年 1 位 | 総スター 1 位 | |---|---|---|---|---|---| -| **AI** ★ メイン | [rddmwmddr/android-ad-cleaner](https://github.com/rddmwmddr/android-ad-cleaner)
798/日 | [morluto/rea](https://github.com/morluto/rea)
5,942/日 | [morluto/rea](https://github.com/morluto/rea)
13,623/日 | [deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness)
3,412/日 | [morluto/rea](https://github.com/morluto/rea)
409,565 ★ | -| **開発者ツール** | [heydeer/pngdeer](https://github.com/heydeer/pngdeer)
72.1/日 | [zed-industries/zed](https://github.com/zed-industries/zed)
56.6/日 | [zed-industries/zed](https://github.com/zed-industries/zed)
53.8/日 | [zed-industries/zed](https://github.com/zed-industries/zed)
70.6/日 | [oven-sh/bun](https://github.com/oven-sh/bun)
96,468 ★ | -| **セキュリティ** | [vaishantsah/watson-AI-osint-all-in-one](https://github.com/vaishantsah/watson-AI-osint-all-in-one)
134/日 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
32.7/日 | [projectdiscovery/nuclei](https://github.com/projectdiscovery/nuclei)
29.7/日 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
27.7/日 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
38,849 ★ | -| **Web / フロントエンド** | [designfuchen/word-atlas](https://github.com/designfuchen/word-atlas)
658/日 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
103/日 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
84.6/日 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
83.0/日 | [facebook/react](https://github.com/facebook/react)
251,753 ★ | -| **インフラ** | [zeabur-oss/zeabur](https://github.com/zeabur-oss/zeabur)
91.1/日 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
44.1/日 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
83.4/日 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
32.4/日 | [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes)
128,522 ★ | -| **デザイン / クリエイティブ** | なし | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
65.6/日 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
64.6/日 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
73.9/日 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
134,834 ★ | -| **データ** | [hugues31/duckpad](https://github.com/hugues31/duckpad)
53.5/日 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
40.0/日 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
31.1/日 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
25.7/日 | [apache/superset](https://github.com/apache/superset)
75,366 ★ | - -
カテゴリ - -| | | -|---|---| -| AI ★ メイン | LLM・エージェント・MCP・コーディング助手・生成 AI | -| 開発者ツール | CLI・エディタ・パッケージマネージャ・リンタ・ビルドツール | -| セキュリティ | 脆弱性スキャン・SAST・サプライチェーン・ランタイムセキュリティ | -| Web / フロントエンド | フロントエンド枠組み・UI キット・CSS・ブラウザツール | -| インフラ | コンテナ・Kubernetes・クラウド・ネットワーク・可観測性 | -| デザイン / クリエイティブ | デザインシステム・描画・アニメーション・制作ツール | -| データ | データベース・分析・ETL・データエンジニアリング | - -
+| **[AI](#ai)** ★ メイン | [rddmwmddr/android-ad-cleaner](https://github.com/rddmwmddr/android-ad-cleaner)
798/日 | [morluto/rea](https://github.com/morluto/rea)
5,942/日 | [morluto/rea](https://github.com/morluto/rea)
13,623/日 | [deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness)
3,412/日 | [morluto/rea](https://github.com/morluto/rea)
409,565 ★ | +| **[開発者ツール](#開発者ツール)** | [heydeer/pngdeer](https://github.com/heydeer/pngdeer)
72.1/日 | [zed-industries/zed](https://github.com/zed-industries/zed)
56.6/日 | [zed-industries/zed](https://github.com/zed-industries/zed)
53.8/日 | [zed-industries/zed](https://github.com/zed-industries/zed)
70.6/日 | [oven-sh/bun](https://github.com/oven-sh/bun)
96,468 ★ | +| **[セキュリティ](#セキュリティ)** | [vaishantsah/watson-AI-osint-all-in-one](https://github.com/vaishantsah/watson-AI-osint-all-in-one)
134/日 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
32.7/日 | [projectdiscovery/nuclei](https://github.com/projectdiscovery/nuclei)
29.7/日 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
27.7/日 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
38,849 ★ | +| **[Web / フロントエンド](#web--フロントエンド)** | [designfuchen/word-atlas](https://github.com/designfuchen/word-atlas)
658/日 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
103/日 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
84.6/日 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
83.0/日 | [facebook/react](https://github.com/facebook/react)
251,753 ★ | +| **[インフラ](#インフラ)** | [zeabur-oss/zeabur](https://github.com/zeabur-oss/zeabur)
91.1/日 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
44.1/日 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
83.4/日 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
32.4/日 | [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes)
128,522 ★ | +| **[デザイン / クリエイティブ](#デザイン--クリエイティブ)** | なし | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
65.6/日 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
64.6/日 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
73.9/日 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
134,834 ★ | +| **[データ](#データ)** | [hugues31/duckpad](https://github.com/hugues31/duckpad)
53.5/日 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
40.0/日 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
31.1/日 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
25.7/日 | [apache/superset](https://github.com/apache/superset)
75,366 ★ | + +ここでは各ランキングの上位 10 件だけを載せています。上位 20 件の全体は [latest/rankings.ja.md](latest/rankings.ja.md) にあります。 + +## よくある質問 + +### GitHub Risers とは? + +総スター数ではなく、1 日あたりに増えたスター数で GitHub リポジトリを並べたランキングです。AI がメインで、ほかに 6 つのカテゴリがあります。データは GitHub API からスクリプトで作っています。 [詳しく見る](docs/FAQ.md#what-is-github-risers) + +### GitHub Trending とどう違う? + +GitHub Trending は GitHub 公式のページです。GitHub Risers は独立したオープンソースのプロジェクトで、ルールを公開し、5 言語に対応し、更新のたびに履歴を残します。GitHub とは無関係です。 [詳しく見る](docs/FAQ.md#is-it-the-same-as-github-trending) + +### 更新は何回? + +1 日 2 回、北京時間 0 時とロサンゼルス時間 0 時です。実行のたびに保存します。 [詳しく見る](docs/FAQ.md#how-often-is-it-updated) ## AI @@ -46,8 +46,6 @@ GitHub API から取得:2026-10-30 08:39:25(UTC)。 ### 7 日以内の新着で最も熱いリポジトリ(作成から 7 日以内) -このカテゴリで直近 7 日以内に作成されたリポジトリを GitHub 検索 API(topic で判定:リポジトリ自身がそのカテゴリの topic を持つこと)で探し、作成からの 1 日あたりスター数で並べます。このカテゴリの他のランキング(または収録プロジェクト)に載っているもの、および先のカテゴリ(AI 優先)ですでに載ったものは除外します。説明文は各リポジトリ自身の GitHub 説明;手作業の翻訳は [data/newcomer_i18n.json](data/newcomer_i18n.json)。ルール:[docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | プロジェクト | 作成日(UTC) | 総スター数 | スター/日 | スター推移 | |---|---|---|---:|---:|---| | 1 | [rddmwmddr/android-ad-cleaner](https://github.com/rddmwmddr/android-ad-cleaner)
中国メーカー製 Android スマホのシステム内にある広告、トレンド検索、ニュースのおすすめ、マーケティング通知をオフにする。root 不要で元に戻せ、AI エージェントがワンクリックで実行できる。 | 2026-10-24
6.1 日 | 4,892 | 798.4 | rddmwmddr/android-ad-cleaner のスター推移グラフ | @@ -60,16 +58,6 @@ GitHub API から取得:2026-10-30 08:39:25(UTC)。 | 8 | [haydenschmitty/floorplan](https://github.com/haydenschmitty/floorplan)
アプリが実際にどう組み合わさっているかが見える。Claude または Codex が描く、平易な英語で説明されたインタラクティブなコードベースマップ。 | 2026-10-27
2.9 日 | 410 | 143.4 | haydenschmitty/floorplan のスター推移グラフ | | 9 | [patch-gg/anymove](https://github.com/patch-gg/anymove)
1 本の AI 動画からあらゆる生き物のモーションキャプチャを実現:1 フレームに 2 台のカメラ、DINOv2 による関節検出、両方の視点でリグをフィットさせ、GLB を出力。 | 2026-10-27
3.0 日 | 431 | 142.4 | patch-gg/anymove のスター推移グラフ | | 10 | [daveebbelaar/bama](https://github.com/daveebbelaar/bama)
BAMA:Build Any Mac App(あらゆる Mac アプリを作る)。Swift と SwiftUI でネイティブ macOS アプリを調査・クローン・設計・構築・最適化・テストするためのエージェントスキル。 | 2026-10-24
6.0 日 | 838 | 139.8 | daveebbelaar/bama のスター推移グラフ | -| 11 | [shipwords-dev/shipwords](https://github.com/shipwords-dev/shipwords)
新しいキーワードごとに稼げる AI サイトを公開。認証、クレジット、決済、AI 生成を備えた Cloudflare ネイティブのスターター。/ 新語サイト群フレームワーク:1 語につき 1 サイト、午後のうちに公開。伸びたものは改良を続け、伸びなかったものは… | 2026-10-28
2.1 日 | 287 | 137.6 | shipwords-dev/shipwords のスター推移グラフ | -| 12 | [jmanico/grim-prompter](https://github.com/jmanico/grim-prompter)
AI コーディングエージェント向けの脅威モデリング:Claude Code、Codex など任意のエージェントにリポジトリを読ませると、証拠をたどれる脅威モデルが得られる。36 種類のアーキテクチャ、29 種類の手法、… | 2026-10-28
1.9 日 | 188 | 101.4 | jmanico/grim-prompter のスター推移グラフ | -| 13 | [andyhuo520/vibe-knowledge](https://github.com/andyhuo520/vibe-knowledge)
Vibe 知識大賞:1 つの知識ポイント → ナレーション付きで、すべての文に出典がある高品質な知識ショート動画に(Claude Code skill · 44 種のスタイル · コードでフレームごとに生成) | 2026-10-28
2.0 日 | 185 | 94.4 | andyhuo520/vibe-knowledge のスター推移グラフ | -| 14 | [hevnsnt/CVEngine](https://github.com/hevnsnt/CVEngine)
AI ファーストの外部攻撃対象領域アセスメント。継続的な探索、証拠に基づく脆弱性の検証、開発者エージェント向け MCP 連携を備える。 | 2026-10-24
5.4 日 | 510 | 94.1 | hevnsnt/CVEngine のスター推移グラフ | -| 15 | [davemessew/AgentFlux](https://github.com/davemessew/AgentFlux)
ビジュアルワークフローと自律型エージェントのためのエージェント型 AI プラットフォーム。Docker で自分のパソコンやサーバーに立ち上げられる。 | 2026-10-27
2.8 日 | 235 | 85.5 | davemessew/AgentFlux のスター推移グラフ | -| 16 | [SAOS-3624/dsh-video-storyboard](https://github.com/SAOS-3624/dsh-video-storyboard)
DeepSeek Harness 向けのシーン認識ストーリーボード:番号付きの 9〜16 コマを、タイムスタンプ、文字起こし、音声エンベロープとともに 1 枚の画像(384 トークン)にまとめる。2 つのツール… | 2026-10-26
3.4 日 | 229 | 66.5 | SAOS-3624/dsh-video-storyboard のスター推移グラフ | -| 17 | [routerhubSI/uncensored-ai-api](https://github.com/routerhubSI/uncensored-ai-api)
検閲なしの AI API とモデル——1 つのキーで Claude、GPT、Gemini、Grok、DeepSeek、GLM、Qwen を利用でき、提供されている場合は無検閲版・abliterated 版も選べる。OpenAI-… | 2026-10-24
5.7 日 | 368 | 65.1 | routerhubSI/uncensored-ai-api のスター推移グラフ | -| 18 | [JunWan666/astrbot-for-android](https://github.com/JunWan666/astrbot-for-android)
Android スマホ上で AstrBot と NapCat をローカルにデプロイして管理できる。PRoot Ubuntu の実行環境を内蔵し、ネイティブ管理画面、WebUI、ログ、バックアップと復元、独立したアップデートに対応。root 不要。 | 2026-10-26
4.1 日 | 264 | 63.7 | JunWan666/astrbot-for-android のスター推移グラフ | -| 19 | [aa1143/NamiGPT](https://github.com/aa1143/NamiGPT)
予備知識ゼロから学ぶ大規模言語モデル(LLM)の入門チュートリアル:GPT-2 をゼロから手書きし、LLM がどう動くかを 1 行ずつ理解する / PyTorch で GPT-2 をゼロから段階的に構築 | 2026-10-28
2.3 日 | 135 | 58.2 | aa1143/NamiGPT のスター推移グラフ | -| 20 | [jacke-pp/ai-wallet-binance](https://github.com/jacke-pp/ai-wallet-binance)
どんな AI でも、あなた自身の Binance AI ウォレットで取引できる:即時の売買、Agent 専用ローンチパッド(Four、Flap、GANG)でのスナイプ、AI 専用 Mint、ローカルの取引ページ。署名は Binance が行い、秘密鍵には触れない。無料のオープンソース、MIT · 作者:Jacke_pp · 連絡先:X @Jacke_pp(DM) | 2026-10-25
5.0 日 | 236 | 47.7 | jacke-pp/ai-wallet-binance のスター推移グラフ | ### 今週もっとも伸びた(直近 7 日) @@ -85,16 +73,6 @@ GitHub API から取得:2026-10-30 08:39:25(UTC)。 | 8 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
コードベース全体を一枚の地図にして、どのファイルが互いに呼び合うか AI が一目で把握できる。大規模プロジェクトを頭から読む必要がなくなる。
`AI` | +5,783 | 826.1 | 138,983 | Graphify-Labs/graphify のスター推移グラフ | | 9 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
Web ページを書く感覚で動画を書けば、AI がそのままレンダリングする。コーディングエージェントからも使え、編集ソフトを覚える必要はない。
`AI` | +5,541 | 791.6 | 75,673 | heygen-com/hyperframes のスター推移グラフ | | 10 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
AI エージェントにインターネット全体を見せるツール。コマンド一つで Twitter・Reddit・YouTube・GitHub・Bilibili・小紅書を読み、検索できる。API 利用料はかからない。
`AI` | +5,483 | 783.3 | 106,509 | Panniantong/Agent-Reach のスター推移グラフ | -| 11 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
コーディングエージェントにセンスを与えるスキル集。アートディレクション、実在の参考画像、ブラウザでの自己チェックにより、ありがちな平均的 AI ランディングページを作らせない。
`AI` | +4,623 | 660.4 | 105,834 | Leonxlnx/taste-skill のスター推移グラフ | -| 12 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
コーディングエージェントにデザインの知見を与えるスキル。複数のプラットフォームやフレームワークで、プロらしい UI/UX を作らせる。
`AI` | +3,692 | 527.4 | 142,715 | nextlevelbuilder/ui-ux-pro-max-skill のスター推移グラフ | -| 13 | [anomalyco/opencode](https://github.com/anomalyco/opencode)
ブラウザを開かず、ターミナルのまま AI でコーディング。多数のモデルに対応し、Claude Code や Codex に対抗する無料のオープンソース。
`AI` | +3,142 | 448.9 | 223,154 | anomalyco/opencode のスター推移グラフ | -| 14 | [thedotmack/claude-mem](https://github.com/thedotmack/claude-mem)
セッションをまたいでエージェントに記憶を持たせる。作業内容を記録し、AI で圧縮して、次のセッションに関連部分を戻す。Claude Code・Codex・Gemini・OpenCode などで使える。
`AI` | +2,821 | 403.0 | 105,138 | thedotmack/claude-mem のスター推移グラフ | -| 15 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
無料の MIT ライセンス AI ゲートウェイ。一つのエンドポイントで数百のプロバイダーとモデルにつながり、クォータ切れ時は自動で切り替える。Claude Code・Codex・Cursor・OpenCode・Cline・Copilot に対応。
`AI` | +2,779 | 397.0 | 82,663 | cheaper-inference/OmniRoute のスター推移グラフ | -| 16 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
AI エージェントのチームを会社のように運営するオープンソースアプリ。目標を割り当て、予算を決め、作業とコストを一つのダッシュボードで追える。OpenClaw が社員なら、Paperclip は会社そのもの。
`AI` | +2,593 | 370.4 | 108,798 | paperclipai/paperclip のスター推移グラフ | -| 17 | [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent)
Nous Research 製の自己改善型 AI エージェント。学習ループを内蔵し、経験からスキルを作り、使いながら改善する。Telegram・Discord・Slack などからも話しかけられる。
`AI` | +2,564 | 366.3 | 258,636 | NousResearch/hermes-agent のスター推移グラフ | -| 18 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
Claude Code・Codex・Gemini CLI・OpenCode・OpenClaw などをまとめて管理するデスクトップアプリ。API プロバイダーをワンクリックで切り替え、MCP・スキル・プロンプトも設定ファイルを手で編集せず一か所で管理できる。
`AI` | +2,542 | 363.1 | 150,238 | farion1231/cc-switch のスター推移グラフ | -| 19 | [NVIDIA/SkillSpector](https://github.com/NVIDIA/SkillSpector)
NVIDIA 製の AI エージェント向けスキルのセキュリティスキャナ。インストール前に脆弱性、プロンプトインジェクション、データ流出、サプライチェーンリスクを検査する。Claude Code・Codex・MCP スキルに対応。
`AI` | +2,414 | 344.9 | 23,432 | NVIDIA/SkillSpector のスター推移グラフ | -| 20 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
コーディングエージェント向けの本格的なエンジニアリングスキル集。シニアエンジニアが仕様から出荷まで守るワークフローと品質ゲートをまとめ、エージェントが毎回それに従うようにする。
`AI` | +2,185 | 312.1 | 111,823 | addyosmani/agent-skills のスター推移グラフ | ### 今月もっとも伸びた(直近 30 日) @@ -110,16 +88,6 @@ GitHub API から取得:2026-10-30 08:39:25(UTC)。 | 8 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
Web ページを書く感覚で動画を書けば、AI がそのままレンダリングする。コーディングエージェントからも使え、編集ソフトを覚える必要はない。
`AI` | +21,640 | 721.3 | 75,673 | heygen-com/hyperframes のスター推移グラフ | | 9 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
AI エージェントにインターネット全体を見せるツール。コマンド一つで Twitter・Reddit・YouTube・GitHub・Bilibili・小紅書を読み、検索できる。API 利用料はかからない。
`AI` | +20,788 | 692.9 | 106,509 | Panniantong/Agent-Reach のスター推移グラフ | | 10 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
コードベース全体を一枚の地図にして、どのファイルが互いに呼び合うか AI が一目で把握できる。大規模プロジェクトを頭から読む必要がなくなる。
`AI` | +17,170 | 572.3 | 138,983 | Graphify-Labs/graphify のスター推移グラフ | -| 11 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
コーディングエージェントにセンスを与えるスキル集。アートディレクション、実在の参考画像、ブラウザでの自己チェックにより、ありがちな平均的 AI ランディングページを作らせない。
`AI` | +14,956 | 498.5 | 105,834 | Leonxlnx/taste-skill のスター推移グラフ | -| 12 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
AI エージェントのチームを会社のように運営するオープンソースアプリ。目標を割り当て、予算を決め、作業とコストを一つのダッシュボードで追える。OpenClaw が社員なら、Paperclip は会社そのもの。
`AI` | +14,436 | 481.2 | 108,798 | paperclipai/paperclip のスター推移グラフ | -| 13 | [anomalyco/opencode](https://github.com/anomalyco/opencode)
ブラウザを開かず、ターミナルのまま AI でコーディング。多数のモデルに対応し、Claude Code や Codex に対抗する無料のオープンソース。
`AI` | +13,404 | 446.8 | 223,154 | anomalyco/opencode のスター推移グラフ | -| 14 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
Claude Code・Codex・Gemini CLI・OpenCode・OpenClaw などをまとめて管理するデスクトップアプリ。API プロバイダーをワンクリックで切り替え、MCP・スキル・プロンプトも設定ファイルを手で編集せず一か所で管理できる。
`AI` | +12,324 | 410.8 | 150,238 | farion1231/cc-switch のスター推移グラフ | -| 15 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
コーディングエージェント向けの本格的なエンジニアリングスキル集。シニアエンジニアが仕様から出荷まで守るワークフローと品質ゲートをまとめ、エージェントが毎回それに従うようにする。
`AI` | +12,280 | 409.3 | 111,823 | addyosmani/agent-skills のスター推移グラフ | -| 16 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
無料の MIT ライセンス AI ゲートウェイ。一つのエンドポイントで数百のプロバイダーとモデルにつながり、クォータ切れ時は自動で切り替える。Claude Code・Codex・Cursor・OpenCode・Cline・Copilot に対応。
`AI` | +11,696 | 389.9 | 82,663 | cheaper-inference/OmniRoute のスター推移グラフ | -| 17 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
コーディングエージェントにデザインの知見を与えるスキル。複数のプラットフォームやフレームワークで、プロらしい UI/UX を作らせる。
`AI` | +11,660 | 388.7 | 142,715 | nextlevelbuilder/ui-ux-pro-max-skill のスター推移グラフ | -| 18 | [thedotmack/claude-mem](https://github.com/thedotmack/claude-mem)
セッションをまたいでエージェントに記憶を持たせる。作業内容を記録し、AI で圧縮して、次のセッションに関連部分を戻す。Claude Code・Codex・Gemini・OpenCode などで使える。
`AI` | +10,595 | 353.2 | 105,138 | thedotmack/claude-mem のスター推移グラフ | -| 19 | [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent)
Nous Research 製の自己改善型 AI エージェント。学習ループを内蔵し、経験からスキルを作り、使いながら改善する。Telegram・Discord・Slack などからも話しかけられる。
`AI` | +9,731 | 324.4 | 258,636 | NousResearch/hermes-agent のスター推移グラフ | -| 20 | [anthropics/skills](https://github.com/anthropics/skills)
Anthropic 公式の Agent Skills 公開リポジトリ。指示・スクリプト・リソースをまとめたフォルダを Claude が必要なときに読み込む。クリエイティブ制作から Web アプリのテストまで、自作スキルの手本になる。
`AI` | +6,531 | 217.7 | 184,884 | anthropics/skills のスター推移グラフ | ### 今年もっとも伸びた(直近 365 日) @@ -135,16 +103,6 @@ GitHub API から取得:2026-10-30 08:39:25(UTC)。 | 8 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
コードベース全体を一枚の地図にして、どのファイルが互いに呼び合うか AI が一目で把握できる。大規模プロジェクトを頭から読む必要がなくなる。
`AI` | +138,922 | 661.5 †
÷210日 | 138,983 | Graphify-Labs/graphify のスター推移グラフ | | 9 | [anomalyco/opencode](https://github.com/anomalyco/opencode)
ブラウザを開かず、ターミナルのまま AI でコーディング。多数のモデルに対応し、Claude Code や Codex に対抗する無料のオープンソース。
`AI` | +194,805 | 533.7 | 223,154 | anomalyco/opencode のスター推移グラフ | | 10 | [stablyai/orca](https://github.com/stablyai/orca)
一つのデスクトップで複数の AI コーディングエージェントを同時に走らせ、誰の出来が良いか比べられる。各エージェントは独立したワークスペースで互いに干渉しない。
`AI` | +110,415 | 486.4 †
÷227日 | 110,515 | stablyai/orca のスター推移グラフ | -| 11 | [anthropics/skills](https://github.com/anthropics/skills)
Anthropic 公式の Agent Skills 公開リポジトリ。指示・スクリプト・リソースをまとめたフォルダを Claude が必要なときに読み込む。クリエイティブ制作から Web アプリのテストまで、自作スキルの手本になる。
`AI` | +170,780 | 467.9 | 184,884 | anthropics/skills のスター推移グラフ | -| 12 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
AI エージェントのチームを会社のように運営するオープンソースアプリ。目標を割り当て、予算を決め、作業とコストを一つのダッシュボードで追える。OpenClaw が社員なら、Paperclip は会社そのもの。
`AI` | +108,764 | 449.4 †
÷242日 | 108,798 | paperclipai/paperclip のスター推移グラフ | -| 13 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
コーディングエージェント向けの本格的なエンジニアリングスキル集。シニアエンジニアが仕様から出荷まで守るワークフローと品質ゲートをまとめ、エージェントが毎回それに従うようにする。
`AI` | +111,805 | 435.0 †
÷257日 | 111,823 | addyosmani/agent-skills のスター推移グラフ | -| 14 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
AI エージェントにインターネット全体を見せるツール。コマンド一つで Twitter・Reddit・YouTube・GitHub・Bilibili・小紅書を読み、検索できる。API 利用料はかからない。
`AI` | +106,451 | 429.2 †
÷248日 | 106,509 | Panniantong/Agent-Reach のスター推移グラフ | -| 15 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
コーディングエージェントにデザインの知見を与えるスキル。複数のプラットフォームやフレームワークで、プロらしい UI/UX を作らせる。
`AI` | +142,662 | 427.1 †
÷334日 | 142,715 | nextlevelbuilder/ui-ux-pro-max-skill のスター推移グラフ | -| 16 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
コーディングエージェントにセンスを与えるスキル集。アートディレクション、実在の参考画像、ブラウザでの自己チェックにより、ありがちな平均的 AI ランディングページを作らせない。
`AI` | +105,762 | 418.0 †
÷253日 | 105,834 | Leonxlnx/taste-skill のスター推移グラフ | -| 17 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
Claude Code・Codex・Gemini CLI・OpenCode・OpenClaw などをまとめて管理するデスクトップアプリ。API プロバイダーをワンクリックで切り替え、MCP・スキル・プロンプトも設定ファイルを手で編集せず一か所で管理できる。
`AI` | +147,480 | 404.1 | 150,238 | farion1231/cc-switch のスター推移グラフ | -| 18 | [cloudflare/security-audit-skill](https://github.com/cloudflare/security-audit-skill)
AI に自分のコードの脆弱性を調べさせ、さらに別の AI に反論させる。コーディングエージェントが書きがちな安全でないコード対策。
`AI` | +53,137 | 396.5 †
÷134日 | 53,235 | cloudflare/security-audit-skill のスター推移グラフ | -| 19 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
Web ページを書く感覚で動画を書けば、AI がそのままレンダリングする。コーディングエージェントからも使え、編集ソフトを覚える必要はない。
`AI` | +75,613 | 323.1 †
÷234日 | 75,673 | heygen-com/hyperframes のスター推移グラフ | -| 20 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
無料の MIT ライセンス AI ゲートウェイ。一つのエンドポイントで数百のプロバイダーとモデルにつながり、クォータ切れ時は自動で切り替える。Claude Code・Codex・Cursor・OpenCode・Cline・Copilot に対応。
`AI` | +82,646 | 319.1 †
÷259日 | 82,663 | cheaper-inference/OmniRoute のスター推移グラフ | † リポジトリの作成が集計期間より新しいため、スター/日は期間全体ではなくリポジトリの経過日数(数値の下に表示)で割っています。 @@ -162,16 +120,6 @@ GitHub API から取得:2026-10-30 08:39:25(UTC)。 | 8 | [DietrichGebert/ponytail](https://github.com/DietrichGebert/ponytail)
AI がコードに余計なものを盛りすぎる問題の特効薬。怠け者のベテランのように、書かずに済むなら書かず、書くなら正しく書くことを教える。
`AI` | 180,485 | DietrichGebert/ponytail のスター推移グラフ | | 9 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
Claude Code・Codex・Gemini CLI・OpenCode・OpenClaw などをまとめて管理するデスクトップアプリ。API プロバイダーをワンクリックで切り替え、MCP・スキル・プロンプトも設定ファイルを手で編集せず一か所で管理できる。
`AI` | 150,238 | farion1231/cc-switch のスター推移グラフ | | 10 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
コーディングエージェントにデザインの知見を与えるスキル。複数のプラットフォームやフレームワークで、プロらしい UI/UX を作らせる。
`AI` | 142,715 | nextlevelbuilder/ui-ux-pro-max-skill のスター推移グラフ | -| 11 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
コードベース全体を一枚の地図にして、どのファイルが互いに呼び合うか AI が一目で把握できる。大規模プロジェクトを頭から読む必要がなくなる。
`AI` | 138,983 | Graphify-Labs/graphify のスター推移グラフ | -| 12 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
コーディングエージェント向けの本格的なエンジニアリングスキル集。シニアエンジニアが仕様から出荷まで守るワークフローと品質ゲートをまとめ、エージェントが毎回それに従うようにする。
`AI` | 111,823 | addyosmani/agent-skills のスター推移グラフ | -| 13 | [stablyai/orca](https://github.com/stablyai/orca)
一つのデスクトップで複数の AI コーディングエージェントを同時に走らせ、誰の出来が良いか比べられる。各エージェントは独立したワークスペースで互いに干渉しない。
`AI` | 110,515 | stablyai/orca のスター推移グラフ | -| 14 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
AI エージェントのチームを会社のように運営するオープンソースアプリ。目標を割り当て、予算を決め、作業とコストを一つのダッシュボードで追える。OpenClaw が社員なら、Paperclip は会社そのもの。
`AI` | 108,798 | paperclipai/paperclip のスター推移グラフ | -| 15 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
AI エージェントにインターネット全体を見せるツール。コマンド一つで Twitter・Reddit・YouTube・GitHub・Bilibili・小紅書を読み、検索できる。API 利用料はかからない。
`AI` | 106,509 | Panniantong/Agent-Reach のスター推移グラフ | -| 16 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
コーディングエージェントにセンスを与えるスキル集。アートディレクション、実在の参考画像、ブラウザでの自己チェックにより、ありがちな平均的 AI ランディングページを作らせない。
`AI` | 105,834 | Leonxlnx/taste-skill のスター推移グラフ | -| 17 | [thedotmack/claude-mem](https://github.com/thedotmack/claude-mem)
セッションをまたいでエージェントに記憶を持たせる。作業内容を記録し、AI で圧縮して、次のセッションに関連部分を戻す。Claude Code・Codex・Gemini・OpenCode などで使える。
`AI` | 105,138 | thedotmack/claude-mem のスター推移グラフ | -| 18 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
無料の MIT ライセンス AI ゲートウェイ。一つのエンドポイントで数百のプロバイダーとモデルにつながり、クォータ切れ時は自動で切り替える。Claude Code・Codex・Cursor・OpenCode・Cline・Copilot に対応。
`AI` | 82,663 | cheaper-inference/OmniRoute のスター推移グラフ | -| 19 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
Web ページを書く感覚で動画を書けば、AI がそのままレンダリングする。コーディングエージェントからも使え、編集ソフトを覚える必要はない。
`AI` | 75,673 | heygen-com/hyperframes のスター推移グラフ | -| 20 | [cloudflare/security-audit-skill](https://github.com/cloudflare/security-audit-skill)
AI に自分のコードの脆弱性を調べさせ、さらに別の AI に反論させる。コーディングエージェントが書きがちな安全でないコード対策。
`AI` | 53,235 | cloudflare/security-audit-skill のスター推移グラフ | ## 開発者ツール @@ -179,8 +127,6 @@ GitHub API から取得:2026-10-30 08:39:25(UTC)。 ### 7 日以内の新着で最も熱いリポジトリ(作成から 7 日以内) -このカテゴリで直近 7 日以内に作成されたリポジトリを GitHub 検索 API(topic で判定:リポジトリ自身がそのカテゴリの topic を持つこと)で探し、作成からの 1 日あたりスター数で並べます。このカテゴリの他のランキング(または収録プロジェクト)に載っているもの、および先のカテゴリ(AI 優先)ですでに載ったものは除外します。説明文は各リポジトリ自身の GitHub 説明;手作業の翻訳は [data/newcomer_i18n.json](data/newcomer_i18n.json)。ルール:[docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | プロジェクト | 作成日(UTC) | 総スター数 | スター/日 | スター推移 | |---|---|---|---:|---:|---| | 1 | [heydeer/pngdeer](https://github.com/heydeer/pngdeer)
画像は小さく、見た目はそのまま。品質を自動で決めて、PNG を PNG または WebP に圧縮する。同じ品質なら、中央値の画像で PNG 出力が TinyPNG より 8〜12% 小さい… | 2026-10-25
5.2 日 | 371 | 72.1 | heydeer/pngdeer のスター推移グラフ | @@ -193,16 +139,6 @@ GitHub API から取得:2026-10-30 08:39:25(UTC)。 | 8 | [ScorpionHub17/KMS-Pico](https://github.com/ScorpionHub17/KMS-Pico)
Kms Pico Free 2026 の完全版スタンドアロンセットアップ。アクティベーション済みのデスクトップ版で、すぐに使え、スムーズにインストールできる。 | 2026-10-29
1.0 日 | 197 | 197.0 | ScorpionHub17/KMS-Pico のスター推移グラフ | | 9 | [Sourcecladrag/Windows-Optimizer](https://github.com/Sourcecladrag/Windows-Optimizer)
Windows Optimizer 2026——高度なシステムチューニングと機能強化を備えた、すぐに使える完全版インストーラー。 | 2026-10-29
1.0 日 | 197 | 197.0 | Sourcecladrag/Windows-Optimizer のスター推移グラフ | | 10 | [AshReinvigorate/Microsoft-Office](https://github.com/AshReinvigorate/Microsoft-Office)
Microsoft Office 2026 の完全版スタンドアロンセットアップ。すぐに使えるデスクトップ版インストールで、全機能がアクティベーション済み。 | 2026-10-30
1.0 日 | 126 | 126.0 | AshReinvigorate/Microsoft-Office のスター推移グラフ | -| 11 | [Fangludisclose/SystemCare-Pro](https://github.com/Fangludisclose/SystemCare-Pro)
Systemcare Pro 2026 のすぐに使える完全版インストーラー。全機能がアクティベーション済みの完全なスタンドアロンセットアップで、そのまま実行できる。 | 2026-10-30
1.0 日 | 126 | 126.0 | Fangludisclose/SystemCare-Pro のスター推移グラフ | -| 12 | [FormHalberdierSouk/SoundPad](https://github.com/FormHalberdierSouk/SoundPad)
Soundpad 2026:プロ向けのオーディオ制作に必要なプラグインとエフェクトをひととおり揃えた、すぐに使える完全版インストーラー。 | 2026-10-30
1.0 日 | 126 | 126.0 | FormHalberdierSouk/SoundPad のスター推移グラフ | -| 13 | [Lostbrocreate/Adobe-InDesign](https://github.com/Lostbrocreate/Adobe-InDesign)
セキュアなデジタルアセット配備パイプライン 2026 のすぐに使える完全版インストーラー。オンラインとオフラインの出版を効率化する、すぐ使えるソリューション。 | 2026-10-30
1.0 日 | 126 | 126.0 | Lostbrocreate/Adobe-InDesign のスター推移グラフ | -| 14 | [nodedevelopersack/Cubase](https://github.com/nodedevelopersack/Cubase)
プロ向け Cubase 13 の完全版スタンドアロンインストールビルド。アクティベーション済みで、デスクトップでのオーディオ制作をスムーズに行える。 | 2026-10-30
1.0 日 | 126 | 126.0 | nodedevelopersack/Cubase のスター推移グラフ | -| 15 | [Phantomeidemonstrate/AnyDesk](https://github.com/Phantomeidemonstrate/AnyDesk)
Anydesk 2026:すぐに使える完全版インストーラー。完全なスタンドアロンセットアップで、リモートデスクトップ接続をスムーズにする。 | 2026-10-30
1.0 日 | 125 | 125.0 | Phantomeidemonstrate/AnyDesk のスター推移グラフ | -| 16 | [PhoenixRetreat/Wondshare-Recoverit](https://github.com/PhoenixRetreat/Wondshare-Recoverit)
Wondshare Recoverit 2026 の完全版スタンドアロンセットアップ。すぐに実行できる完全版インストーラーで、全機能がアクティベーション済み。 | 2026-10-30
1.0 日 | 125 | 125.0 | PhoenixRetreat/Wondshare-Recoverit のスター推移グラフ | -| 17 | [scarletscreengrasp/Uttorent](https://github.com/scarletscreengrasp/Uttorent)
Uttorent 2026——すぐに使える完全版インストーラー。完全なスタンドアロンセットアップで、そのまま実行できる。 | 2026-10-30
1.0 日 | 125 | 125.0 | scarletscreengrasp/Uttorent のスター推移グラフ | -| 18 | [SoapmakerShout44/Cinema-4d](https://github.com/SoapmakerShout44/Cinema-4d)
プロ向け Cinema 4D ユーティリティ構成。完全なスタンドアロンインストールセットアップで、2026 年のワークフローを効率化する。 | 2026-10-30
1.0 日 | 125 | 125.0 | SoapmakerShout44/Cinema-4d のスター推移グラフ | -| 19 | [twilightstonerestore/Glary-Utilities-Pro](https://github.com/twilightstonerestore/Glary-Utilities-Pro)
Glary Utilities Pro 2026:全ツールがアクティベーション済みの、すぐに使える完全版インストーラー。デスクトップですぐに使い始められる。 | 2026-10-30
1.0 日 | 125 | 125.0 | twilightstonerestore/Glary-Utilities-Pro のスター推移グラフ | -| 20 | [ViceFencerManacle/Camtasia](https://github.com/ViceFencerManacle/Camtasia)
Camtasia 2026 のすぐに使える完全版インストーラー。全機能を備え、デスクトップでそのまま実行できる。 | 2026-10-30
1.0 日 | 125 | 125.0 | ViceFencerManacle/Camtasia のスター推移グラフ | ### 今週もっとも伸びた(直近 7 日) @@ -262,8 +198,6 @@ GitHub API から取得:2026-10-30 08:39:25(UTC)。 ### 7 日以内の新着で最も熱いリポジトリ(作成から 7 日以内) -このカテゴリで直近 7 日以内に作成されたリポジトリを GitHub 検索 API(topic で判定:リポジトリ自身がそのカテゴリの topic を持つこと)で探し、作成からの 1 日あたりスター数で並べます。このカテゴリの他のランキング(または収録プロジェクト)に載っているもの、および先のカテゴリ(AI 優先)ですでに載ったものは除外します。説明文は各リポジトリ自身の GitHub 説明;手作業の翻訳は [data/newcomer_i18n.json](data/newcomer_i18n.json)。ルール:[docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | プロジェクト | 作成日(UTC) | 総スター数 | スター/日 | スター推移 | |---|---|---|---:|---:|---| | 1 | [vaishantsah/watson-AI-osint-all-in-one](https://github.com/vaishantsah/watson-AI-osint-all-in-one)
Watson — Windows 向けの無料 OSINT ツール:ニックネーム、メールアドレス、電話番号、Web サイトから、3,100 以上の公開サイトで人物を検索できる。オープンソースインテリジェンスを手軽に:digi… | 2026-10-28
2.4 日 | 316 | 134.2 | vaishantsah/watson-AI-osint-all-in-one のスター推移グラフ | @@ -327,8 +261,6 @@ GitHub API から取得:2026-10-30 08:39:25(UTC)。 ### 7 日以内の新着で最も熱いリポジトリ(作成から 7 日以内) -このカテゴリで直近 7 日以内に作成されたリポジトリを GitHub 検索 API(topic で判定:リポジトリ自身がそのカテゴリの topic を持つこと)で探し、作成からの 1 日あたりスター数で並べます。このカテゴリの他のランキング(または収録プロジェクト)に載っているもの、および先のカテゴリ(AI 優先)ですでに載ったものは除外します。説明文は各リポジトリ自身の GitHub 説明;手作業の翻訳は [data/newcomer_i18n.json](data/newcomer_i18n.json)。ルール:[docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | プロジェクト | 作成日(UTC) | 総スター数 | スター/日 | スター推移 | |---|---|---|---:|---:|---| | 1 | [designfuchen/word-atlas](https://github.com/designfuchen/word-atlas)
詞光 · Word Atlas — イラスト付きの IELTS 語彙 7,298 語。英国式・米国式の音声と FSRS 復習に対応。オープンソースアプリ + CC BY 4.0 データセット。 | 2026-10-25
5.0 日 | 3,297 | 658.3 | designfuchen/word-atlas のスター推移グラフ | @@ -395,8 +327,6 @@ GitHub API から取得:2026-10-30 08:39:25(UTC)。 ### 7 日以内の新着で最も熱いリポジトリ(作成から 7 日以内) -このカテゴリで直近 7 日以内に作成されたリポジトリを GitHub 検索 API(topic で判定:リポジトリ自身がそのカテゴリの topic を持つこと)で探し、作成からの 1 日あたりスター数で並べます。このカテゴリの他のランキング(または収録プロジェクト)に載っているもの、および先のカテゴリ(AI 優先)ですでに載ったものは除外します。説明文は各リポジトリ自身の GitHub 説明;手作業の翻訳は [data/newcomer_i18n.json](data/newcomer_i18n.json)。ルール:[docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | プロジェクト | 作成日(UTC) | 総スター数 | スター/日 | スター推移 | |---|---|---|---:|---:|---| | 1 | [zeabur-oss/zeabur](https://github.com/zeabur-oss/zeabur)
自分の Kubernetes 上で動かすセルフホスト型 PaaS。 | 2026-10-24
6.0 日 | 551 | 91.1 | zeabur-oss/zeabur のスター推移グラフ | @@ -460,8 +390,6 @@ GitHub API から取得:2026-10-30 08:39:25(UTC)。 ### 7 日以内の新着で最も熱いリポジトリ(作成から 7 日以内) -このカテゴリで直近 7 日以内に作成されたリポジトリを GitHub 検索 API(topic で判定:リポジトリ自身がそのカテゴリの topic を持つこと)で探し、作成からの 1 日あたりスター数で並べます。このカテゴリの他のランキング(または収録プロジェクト)に載っているもの、および先のカテゴリ(AI 優先)ですでに載ったものは除外します。説明文は各リポジトリ自身の GitHub 説明;手作業の翻訳は [data/newcomer_i18n.json](data/newcomer_i18n.json)。ルール:[docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - 今回の実行で条件を満たす新着リポジトリはありませんでした。 ### 今週もっとも伸びた(直近 7 日) @@ -522,8 +450,6 @@ GitHub API から取得:2026-10-30 08:39:25(UTC)。 ### 7 日以内の新着で最も熱いリポジトリ(作成から 7 日以内) -このカテゴリで直近 7 日以内に作成されたリポジトリを GitHub 検索 API(topic で判定:リポジトリ自身がそのカテゴリの topic を持つこと)で探し、作成からの 1 日あたりスター数で並べます。このカテゴリの他のランキング(または収録プロジェクト)に載っているもの、および先のカテゴリ(AI 優先)ですでに載ったものは除外します。説明文は各リポジトリ自身の GitHub 説明;手作業の翻訳は [data/newcomer_i18n.json](data/newcomer_i18n.json)。ルール:[docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | プロジェクト | 作成日(UTC) | 総スター数 | スター/日 | スター推移 | |---|---|---|---:|---:|---| | 1 | [hugues31/duckpad](https://github.com/hugues31/duckpad)
オープンソースコミュニティにふさわしい、データ変換ツール。 | 2026-10-25
5.0 日 | 269 | 53.5 | hugues31/duckpad のスター推移グラフ | @@ -580,18 +506,10 @@ GitHub API から取得:2026-10-30 08:39:25(UTC)。 | 7 | [dbt-labs/dbt-core](https://github.com/dbt-labs/dbt-core)
ウェアハウスのデータをソフト工学のやり方で変換。
`データ` | 14,104 | dbt-labs/dbt-core のスター推移グラフ | | 8 | [jupyter/notebook](https://github.com/jupyter/notebook)
文書を作り共有する Jupyter インタラクティブノートブック。
`データ` | 13,461 | jupyter/notebook のスター推移グラフ | -## 欠損データ - -今回の実行で欠損したプロジェクトはありません。 - -## 数値の出どころ +--- -- 総スター数:`GET /repos/{owner}/{repo}` の `stargazers_count`。 -- 増加数:`GET /repos/{owner}/{repo}/stargazers/history`(GitHub が提供する、ユーザー情報を含まない週次/日次のスター数)。今日より前の N 日分(UTC、今日は含まない)の合計で、スター/日 = 増加数 ÷ N。 -- GitHub は週/日の区切りが UTC と一致する保証はないとしており、後から外されたスターは数えられないため、期間の端では多少の誤差が出ます。 -- スター推移は `star-history.com` の SVG 画像を URL で参照しています。このリポジトリに解析・トラッキング用スクリプトは一切ありません。 -- 生データは [`data/stats.json`](data/stats.json)、日次スナップショットは [`data/stars.json`](data/stars.json) に追記されます。 +役に立ったら、ほかの人にも見つけてもらえるようリポジトリにスターを付けてください。 -## コントリビュート +引用の仕方:[CITATION.cff](CITATION.cff) を見てください。 -`data/projects.json` に項目を追加し(`category` と 5 言語の `desc`)、`python tools/update_stars.py` を実行。カテゴリ:[docs/CATEGORIES.md](docs/CATEGORIES.md)。毎日の更新:[docs/DAILY_UPDATE.md](docs/DAILY_UPDATE.md)。 +数字の出し方と参加方法:[docs/HOW_IT_WORKS.ja.md](docs/HOW_IT_WORKS.ja.md)。新規リポジトリのルール:[docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。カテゴリ:[docs/CATEGORIES.md](docs/CATEGORIES.md)。 diff --git a/README.ko.md b/README.ko.md index 6addc9b..d177d99 100644 --- a/README.ko.md +++ b/README.ko.md @@ -1,44 +1,44 @@ [English](README.md) | [简体中文](README.zh-Hans.md) | [繁體中文](README.zh-Hant.md) | [日本語](README.ja.md) | **한국어** -# GitHub Risers: 스타 증가 속도로 줄 세우는 카테고리별 트렌딩 랭킹 +# GitHub 스타 급상승 랭킹 / GitHub Risers -> 총 스타 수가 아니라 스타가 늘어나는 속도로 매긴 GitHub 트렌딩(Star Growth). AI가 메인이고 개발자 도구·보안·웹/프론트엔드·인프라·디자인·데이터도 다룹니다. 하루 두 번 갱신하며 카테고리마다 7일 신규 랭킹이 있습니다. +GitHub 스타 급상승 랭킹 / GitHub Risers -총 스타 순 목록에서는 오래된 대형 프로젝트가 계속 상위를 차지하고, 지금 뜨는 프로젝트는 묻힙니다. GitHub Risers는 하루 평균 늘어난 스타 수(최근 7·30·365일)로 순위를 매기고 카테고리별로 보여 주며, AI가 메인 랭킹입니다. 각 카테고리는 최근 7일 안에 만들어진 저장소의 신규 랭킹, 주·월·연 증가 랭킹, 마지막으로 총 스타 순입니다. 모든 수치는 GitHub API에서 가져옵니다. 분류 규칙: [docs/CATEGORIES.md](docs/CATEGORIES.md). +[![MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![CI](https://github.com/jammyfu/github-risers/actions/workflows/ci.yml/badge.svg)](https://github.com/jammyfu/github-risers/actions/workflows/ci.yml) [![updated](https://img.shields.io/badge/updated-2026--10--30-brightgreen.svg)](latest/rankings.ko.md) -GitHub API에서 가져온 시각: 2026-10-30 08:39:25 (UTC). -하루 두 번 갱신: 베이징 시간 0시(UTC+8)와 로스앤젤레스 시간 0시(America/Los_Angeles, 서머타임 반영). 갱신할 때마다 시간대별로 따로 보관합니다. -각 카테고리 랭킹은 전체 70개 수록 프로젝트 중 상위 최대 20개만 보여 줍니다. +총 스타 수가 아니라 하루에 늘어난 스타 수로 GitHub 저장소를 줄 세웁니다. AI가 맨 앞이고 개발자 도구, 보안, Web / 프론트엔드, 인프라, 디자인 / 크리에이티브, 데이터가 뒤따릅니다. 하루 두 번 갱신합니다. -아래가 최신 순위입니다. 업데이트할 때마다 시간대별로도 저장합니다: [순위 기록](rankings/README.ko.md) · [latest/rankings.ko.md](latest/rankings.ko.md). +2026-10-30 08:39(UTC) 갱신, 하루 두 번(베이징 0시, 로스앤젤레스 0시). -## 이번 회차 카테고리별 1위 +[웹사이트](https://jammyfu.github.io/github-risers/) · [작동 방식](docs/HOW_IT_WORKS.ko.md) · [팩트](docs/FACTS.md) · [지난 랭킹](rankings/README.ko.md) · [최신](latest/rankings.ko.md) -각 카테고리의 모든 랭킹 1위를 아래 실제 데이터로 스크립트가 자동 생성합니다. '없음'은 이번 실행에서 해당 랭킹에 항목이 없다는 뜻입니다. +## 이번 회차 카테고리별 1위 | 카테고리 | 신규 1위(7일) | 이번 주 1위 | 이번 달 1위 | 올해 1위 | 총 스타 1위 | |---|---|---|---|---|---| -| **AI** ★ 메인 | [rddmwmddr/android-ad-cleaner](https://github.com/rddmwmddr/android-ad-cleaner)
798/일 | [morluto/rea](https://github.com/morluto/rea)
5,942/일 | [morluto/rea](https://github.com/morluto/rea)
13,623/일 | [deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness)
3,412/일 | [morluto/rea](https://github.com/morluto/rea)
409,565 ★ | -| **개발자 도구** | [heydeer/pngdeer](https://github.com/heydeer/pngdeer)
72.1/일 | [zed-industries/zed](https://github.com/zed-industries/zed)
56.6/일 | [zed-industries/zed](https://github.com/zed-industries/zed)
53.8/일 | [zed-industries/zed](https://github.com/zed-industries/zed)
70.6/일 | [oven-sh/bun](https://github.com/oven-sh/bun)
96,468 ★ | -| **보안** | [vaishantsah/watson-AI-osint-all-in-one](https://github.com/vaishantsah/watson-AI-osint-all-in-one)
134/일 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
32.7/일 | [projectdiscovery/nuclei](https://github.com/projectdiscovery/nuclei)
29.7/일 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
27.7/일 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
38,849 ★ | -| **Web / 프론트엔드** | [designfuchen/word-atlas](https://github.com/designfuchen/word-atlas)
658/일 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
103/일 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
84.6/일 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
83.0/일 | [facebook/react](https://github.com/facebook/react)
251,753 ★ | -| **인프라** | [zeabur-oss/zeabur](https://github.com/zeabur-oss/zeabur)
91.1/일 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
44.1/일 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
83.4/일 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
32.4/일 | [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes)
128,522 ★ | -| **디자인 / 크리에이티브** | 없음 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
65.6/일 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
64.6/일 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
73.9/일 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
134,834 ★ | -| **데이터** | [hugues31/duckpad](https://github.com/hugues31/duckpad)
53.5/일 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
40.0/일 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
31.1/일 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
25.7/일 | [apache/superset](https://github.com/apache/superset)
75,366 ★ | - -
카테고리 - -| | | -|---|---| -| AI ★ 메인 | LLM, 에이전트, MCP, 코딩 어시스턴트, 생성형 AI | -| 개발자 도구 | CLI, 에디터, 패키지 관리자, 린터, 빌드 도구 | -| 보안 | 취약점 스캐너, SAST, 공급망·런타임 보안 | -| Web / 프론트엔드 | 프론트엔드 프레임워크, UI 키트, CSS, 브라우저 도구 | -| 인프라 | 컨테이너, Kubernetes, 클라우드, 네트워킹, 관측성 | -| 디자인 / 크리에이티브 | 디자인 시스템, 드로잉, 애니메이션, 크리에이티브 도구 | -| 데이터 | 데이터베이스, 분석, ETL, 데이터 엔지니어링 | - -
+| **[AI](#ai)** ★ 메인 | [rddmwmddr/android-ad-cleaner](https://github.com/rddmwmddr/android-ad-cleaner)
798/일 | [morluto/rea](https://github.com/morluto/rea)
5,942/일 | [morluto/rea](https://github.com/morluto/rea)
13,623/일 | [deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness)
3,412/일 | [morluto/rea](https://github.com/morluto/rea)
409,565 ★ | +| **[개발자 도구](#개발자-도구)** | [heydeer/pngdeer](https://github.com/heydeer/pngdeer)
72.1/일 | [zed-industries/zed](https://github.com/zed-industries/zed)
56.6/일 | [zed-industries/zed](https://github.com/zed-industries/zed)
53.8/일 | [zed-industries/zed](https://github.com/zed-industries/zed)
70.6/일 | [oven-sh/bun](https://github.com/oven-sh/bun)
96,468 ★ | +| **[보안](#보안)** | [vaishantsah/watson-AI-osint-all-in-one](https://github.com/vaishantsah/watson-AI-osint-all-in-one)
134/일 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
32.7/일 | [projectdiscovery/nuclei](https://github.com/projectdiscovery/nuclei)
29.7/일 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
27.7/일 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
38,849 ★ | +| **[Web / 프론트엔드](#web--프론트엔드)** | [designfuchen/word-atlas](https://github.com/designfuchen/word-atlas)
658/일 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
103/일 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
84.6/일 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
83.0/일 | [facebook/react](https://github.com/facebook/react)
251,753 ★ | +| **[인프라](#인프라)** | [zeabur-oss/zeabur](https://github.com/zeabur-oss/zeabur)
91.1/일 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
44.1/일 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
83.4/일 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
32.4/일 | [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes)
128,522 ★ | +| **[디자인 / 크리에이티브](#디자인--크리에이티브)** | 없음 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
65.6/일 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
64.6/일 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
73.9/일 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
134,834 ★ | +| **[데이터](#데이터)** | [hugues31/duckpad](https://github.com/hugues31/duckpad)
53.5/일 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
40.0/일 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
31.1/일 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
25.7/일 | [apache/superset](https://github.com/apache/superset)
75,366 ★ | + +여기에는 랭킹마다 상위 10개만 싣습니다. 상위 20개 전체는 [latest/rankings.ko.md](latest/rankings.ko.md)에 있습니다. + +## 자주 묻는 질문 + +### GitHub Risers가 뭔가요? + +총 스타 수가 아니라 하루에 늘어난 스타 수로 GitHub 저장소를 줄 세운 랭킹입니다. AI가 메인이고 카테고리가 여섯 개 더 있습니다. 데이터는 GitHub API에서 스크립트로 만듭니다. [더 보기](docs/FAQ.md#what-is-github-risers) + +### GitHub Trending과 뭐가 다른가요? + +GitHub Trending은 GitHub 공식 페이지입니다. GitHub Risers는 독립적인 오픈 소스 프로젝트로, 규칙을 공개하고 5개 언어를 지원하며 갱신 때마다 기록을 남깁니다. GitHub와는 관련이 없습니다. [더 보기](docs/FAQ.md#is-it-the-same-as-github-trending) + +### 얼마나 자주 갱신하나요? + +하루 두 번, 베이징 시간 0시와 로스앤젤레스 시간 0시입니다. 실행할 때마다 보관합니다. [더 보기](docs/FAQ.md#how-often-is-it-updated) ## AI @@ -46,8 +46,6 @@ GitHub API에서 가져온 시각: 2026-10-30 08:39:25 (UTC). ### 7일 이내 신규 인기 저장소 (최근 7일 내 생성) -이 카테고리에서 최근 7일 안에 만들어진 저장소를 GitHub 검색 API(topic 기준: 저장소 자신이 해당 카테고리의 topic을 가져야 함)로 찾아 생성 이후 하루 평균 스타 순으로 줄 세웁니다. 이 카테고리의 다른 랭킹(또는 수록 프로젝트)에 이미 있거나, 앞선 카테고리(AI 우선)에 이미 올라간 저장소는 빼 둡니다. 설명은 저장소 자신의 GitHub 설명; 손번역은 [data/newcomer_i18n.json](data/newcomer_i18n.json). 규칙: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). - | # | 프로젝트 | 생성일 (UTC) | 총 스타 | 스타/일 | 스타 추이 | |---|---|---|---:|---:|---| | 1 | [rddmwmddr/android-ad-cleaner](https://github.com/rddmwmddr/android-ad-cleaner)
중국산 안드로이드 스마트폰 시스템의 광고, 인기 검색어, 뉴스 추천, 마케팅 푸시를 꺼 준다. root 없이 쓸 수 있고 원래대로 되돌릴 수 있으며, AI 에이전트가 한 번에 실행할 수 있다. | 2026-10-24
6.1일 | 4,892 | 798.4 | rddmwmddr/android-ad-cleaner 스타 추이 그래프 | @@ -60,16 +58,6 @@ GitHub API에서 가져온 시각: 2026-10-30 08:39:25 (UTC). | 8 | [haydenschmitty/floorplan](https://github.com/haydenschmitty/floorplan)
앱이 실제로 어떻게 맞물려 있는지 보여 준다. Claude나 Codex가 그려 주는, 쉬운 영어로 설명된 대화형 코드베이스 지도. | 2026-10-27
2.9일 | 410 | 143.4 | haydenschmitty/floorplan 스타 추이 그래프 | | 9 | [patch-gg/anymove](https://github.com/patch-gg/anymove)
AI 영상 하나로 모든 생물의 모션 캡처: 한 화면에 카메라 두 대, DINOv2 관절 인식, 두 시점 모두에 리그를 맞추고 GLB로 출력. | 2026-10-27
3.0일 | 431 | 142.4 | patch-gg/anymove 스타 추이 그래프 | | 10 | [daveebbelaar/bama](https://github.com/daveebbelaar/bama)
BAMA: Build Any Mac App(어떤 Mac 앱이든 만든다). Swift와 SwiftUI로 네이티브 macOS 앱을 조사, 복제, 설계, 빌드, 최적화, 테스트하는 에이전트 스킬. | 2026-10-24
6.0일 | 838 | 139.8 | daveebbelaar/bama 스타 추이 그래프 | -| 11 | [shipwords-dev/shipwords](https://github.com/shipwords-dev/shipwords)
새 키워드마다 돈 되는 AI 사이트를 하나씩 배포. 인증, 크레딧, 결제, AI 생성을 갖춘 Cloudflare 네이티브 스타터. / 신조어 사이트군 프레임워크: 키워드 하나에 사이트 하나, 오후 한나절이면 오픈. 반응이 오면 계속 개선하고, 반응이 없으면… | 2026-10-28
2.1일 | 287 | 137.6 | shipwords-dev/shipwords 스타 추이 그래프 | -| 12 | [jmanico/grim-prompter](https://github.com/jmanico/grim-prompter)
AI 코딩 에이전트를 위한 위협 모델링: Claude Code, Codex 등 어떤 에이전트든 저장소에 연결하면 근거를 추적할 수 있는 위협 모델을 만들어 준다. 아키텍처 36종, 기법 29종, … | 2026-10-28
1.9일 | 188 | 101.4 | jmanico/grim-prompter 스타 추이 그래프 | -| 13 | [andyhuo520/vibe-knowledge](https://github.com/andyhuo520/vibe-knowledge)
Vibe 지식 대상: 지식 포인트 하나 → 내레이션이 있고 모든 문장에 출처가 달린 고품질 지식 쇼츠 영상 한 편(Claude Code skill · 스타일 44종 · 코드로 프레임 단위 제작) | 2026-10-28
2.0일 | 185 | 94.4 | andyhuo520/vibe-knowledge 스타 추이 그래프 | -| 14 | [hevnsnt/CVEngine](https://github.com/hevnsnt/CVEngine)
AI 우선 외부 공격 표면 평가: 지속적인 탐색, 증거 기반 취약점 검증, 개발자 에이전트용 MCP 연동을 제공한다. | 2026-10-24
5.4일 | 510 | 94.1 | hevnsnt/CVEngine 스타 추이 그래프 | -| 15 | [davemessew/AgentFlux](https://github.com/davemessew/AgentFlux)
시각적 워크플로와 자율 에이전트를 위한 에이전틱 AI 플랫폼. Docker로 내 컴퓨터나 서버에서 실행할 수 있다. | 2026-10-27
2.8일 | 235 | 85.5 | davemessew/AgentFlux 스타 추이 그래프 | -| 16 | [SAOS-3624/dsh-video-storyboard](https://github.com/SAOS-3624/dsh-video-storyboard)
DeepSeek Harness용 장면 인식 스토리보드: 번호가 매겨진 9~16개 칸을 타임스탬프, 대본, 오디오 엔벨로프와 함께 이미지 한 장(384 토큰)에 담는다. 도구 두 개… | 2026-10-26
3.4일 | 229 | 66.5 | SAOS-3624/dsh-video-storyboard 스타 추이 그래프 | -| 17 | [routerhubSI/uncensored-ai-api](https://github.com/routerhubSI/uncensored-ai-api)
검열 없는 AI API와 모델 — 키 하나로 Claude, GPT, Gemini, Grok, DeepSeek, GLM, Qwen을 쓸 수 있고, 제공되는 경우 무검열·abliterated 변형도 선택할 수 있다. OpenAI-… | 2026-10-24
5.7일 | 368 | 65.1 | routerhubSI/uncensored-ai-api 스타 추이 그래프 | -| 18 | [JunWan666/astrbot-for-android](https://github.com/JunWan666/astrbot-for-android)
Android 폰에서 AstrBot과 NapCat을 로컬로 배포하고 관리한다. PRoot Ubuntu 실행 환경을 내장했고, 네이티브 관리 화면, WebUI, 로그, 백업·복원, 독립 업데이트를 지원한다. root 불필요. | 2026-10-26
4.1일 | 264 | 63.7 | JunWan666/astrbot-for-android 스타 추이 그래프 | -| 19 | [aa1143/NamiGPT](https://github.com/aa1143/NamiGPT)
사전 지식 없이 시작하는 대규모 언어 모델(LLM) 입문 튜토리얼: GPT-2를 처음부터 직접 짜면서 LLM이 어떻게 동작하는지 한 줄씩 이해한다 / PyTorch로 GPT-2를 처음부터 단계별로 구축 | 2026-10-28
2.3일 | 135 | 58.2 | aa1143/NamiGPT 스타 추이 그래프 | -| 20 | [jacke-pp/ai-wallet-binance](https://github.com/jacke-pp/ai-wallet-binance)
어떤 AI든 내 Binance AI 지갑으로 거래할 수 있다: 즉시 매수·매도, Agent 전용 런치패드(Four, Flap, GANG) 스나이핑, AI 전용 Mint, 로컬 거래 페이지. 서명은 Binance가 처리하며 개인 키는 건드리지 않는다. 무료 오픈 소스 MIT · 제작자: Jacke_pp · 연락: X @Jacke_pp(DM) | 2026-10-25
5.0일 | 236 | 47.7 | jacke-pp/ai-wallet-binance 스타 추이 그래프 | ### 이번 주 가장 빨리 오른 프로젝트 (최근 7일) @@ -85,16 +73,6 @@ GitHub API에서 가져온 시각: 2026-10-30 08:39:25 (UTC). | 8 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
코드베이스 전체를 한 장의 지도로 만들어 어떤 파일이 서로 호출하는지 AI가 한눈에 파악한다. 큰 프로젝트를 처음부터 끝까지 읽을 필요가 없다.
`AI` | +5,783 | 826.1 | 138,983 | Graphify-Labs/graphify 스타 추이 그래프 | | 9 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
웹 페이지를 쓰듯 영상을 쓰면 AI가 바로 렌더링한다. 코딩 에이전트도 쓸 수 있어 편집 소프트웨어를 따로 배울 필요가 없다.
`AI` | +5,541 | 791.6 | 75,673 | heygen-com/hyperframes 스타 추이 그래프 | | 10 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
AI 에이전트에게 인터넷 전체를 보여주는 도구. 명령 하나로 트위터·Reddit·YouTube·GitHub·Bilibili·샤오홍슈를 읽고 검색하며 API 비용이 들지 않는다.
`AI` | +5,483 | 783.3 | 106,509 | Panniantong/Agent-Reach 스타 추이 그래프 | -| 11 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
코딩 에이전트에게 '감각'을 주는 스킬 모음. 아트 디렉션, 실제 참고 이미지, 브라우저 자체 점검으로 흔해 빠진 AI 랜딩 페이지를 만들지 않게 한다.
`AI` | +4,623 | 660.4 | 105,834 | Leonxlnx/taste-skill 스타 추이 그래프 | -| 12 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
코딩 에이전트에 디자인 감각을 더해 주는 스킬. 여러 플랫폼과 프레임워크에서 전문가다운 UI/UX를 만들게 한다.
`AI` | +3,692 | 527.4 | 142,715 | nextlevelbuilder/ui-ux-pro-max-skill 스타 추이 그래프 | -| 13 | [anomalyco/opencode](https://github.com/anomalyco/opencode)
웹 페이지 없이 터미널에서 바로 AI로 코딩한다. 여러 모델을 지원하고 Claude Code·Codex에 맞서는 무료 오픈소스.
`AI` | +3,142 | 448.9 | 223,154 | anomalyco/opencode 스타 추이 그래프 | -| 14 | [thedotmack/claude-mem](https://github.com/thedotmack/claude-mem)
세션이 바뀌어도 에이전트가 기억하게 한다. 작업 내용을 기록하고 AI로 압축해 다음 세션에 관련 내용을 다시 넣어 준다. Claude Code·Codex·Gemini·OpenCode 등에서 쓸 수 있다.
`AI` | +2,821 | 403.0 | 105,138 | thedotmack/claude-mem 스타 추이 그래프 | -| 15 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
무료 MIT 라이선스 AI 게이트웨이. 하나의 엔드포인트로 수백 개 제공자와 모델에 연결하고 할당량이 떨어지면 자동 전환한다. Claude Code·Codex·Cursor·OpenCode·Cline·Copilot과 함께 쓸 수 있다.
`AI` | +2,779 | 397.0 | 82,663 | cheaper-inference/OmniRoute 스타 추이 그래프 | -| 16 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
AI 에이전트 팀을 회사처럼 운영하는 오픈소스 앱. 목표를 배정하고 예산을 정하고 작업과 비용을 한 대시보드에서 추적한다. OpenClaw가 직원이라면 Paperclip은 회사다.
`AI` | +2,593 | 370.4 | 108,798 | paperclipai/paperclip 스타 추이 그래프 | -| 17 | [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent)
Nous Research가 만든 스스로 개선하는 AI 에이전트. 학습 루프가 내장되어 경험에서 스킬을 만들고 쓰면서 다듬으며, Telegram·Discord·Slack 등에서도 대화할 수 있다.
`AI` | +2,564 | 366.3 | 258,636 | NousResearch/hermes-agent 스타 추이 그래프 | -| 18 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
Claude Code·Codex·Gemini CLI·OpenCode·OpenClaw 등을 한곳에서 관리하는 데스크톱 앱. API 제공자를 한 번에 바꾸고 MCP·스킬·프롬프트도 설정 파일을 손으로 고치지 않고 관리한다.
`AI` | +2,542 | 363.1 | 150,238 | farion1231/cc-switch 스타 추이 그래프 | -| 19 | [NVIDIA/SkillSpector](https://github.com/NVIDIA/SkillSpector)
NVIDIA가 만든 AI 에이전트 스킬 보안 스캐너. 설치 전에 취약점, 프롬프트 인젝션, 데이터 유출, 공급망 위험을 검사한다. Claude Code·Codex·MCP 스킬을 지원한다.
`AI` | +2,414 | 344.9 | 23,432 | NVIDIA/SkillSpector 스타 추이 그래프 | -| 20 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
코딩 에이전트를 위한 실무급 엔지니어링 스킬 모음. 시니어 엔지니어가 명세부터 출시까지 지키는 워크플로와 품질 게이트를 담아 에이전트가 매번 따르게 한다.
`AI` | +2,185 | 312.1 | 111,823 | addyosmani/agent-skills 스타 추이 그래프 | ### 이번 달 가장 빨리 오른 프로젝트 (최근 30일) @@ -110,16 +88,6 @@ GitHub API에서 가져온 시각: 2026-10-30 08:39:25 (UTC). | 8 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
웹 페이지를 쓰듯 영상을 쓰면 AI가 바로 렌더링한다. 코딩 에이전트도 쓸 수 있어 편집 소프트웨어를 따로 배울 필요가 없다.
`AI` | +21,640 | 721.3 | 75,673 | heygen-com/hyperframes 스타 추이 그래프 | | 9 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
AI 에이전트에게 인터넷 전체를 보여주는 도구. 명령 하나로 트위터·Reddit·YouTube·GitHub·Bilibili·샤오홍슈를 읽고 검색하며 API 비용이 들지 않는다.
`AI` | +20,788 | 692.9 | 106,509 | Panniantong/Agent-Reach 스타 추이 그래프 | | 10 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
코드베이스 전체를 한 장의 지도로 만들어 어떤 파일이 서로 호출하는지 AI가 한눈에 파악한다. 큰 프로젝트를 처음부터 끝까지 읽을 필요가 없다.
`AI` | +17,170 | 572.3 | 138,983 | Graphify-Labs/graphify 스타 추이 그래프 | -| 11 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
코딩 에이전트에게 '감각'을 주는 스킬 모음. 아트 디렉션, 실제 참고 이미지, 브라우저 자체 점검으로 흔해 빠진 AI 랜딩 페이지를 만들지 않게 한다.
`AI` | +14,956 | 498.5 | 105,834 | Leonxlnx/taste-skill 스타 추이 그래프 | -| 12 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
AI 에이전트 팀을 회사처럼 운영하는 오픈소스 앱. 목표를 배정하고 예산을 정하고 작업과 비용을 한 대시보드에서 추적한다. OpenClaw가 직원이라면 Paperclip은 회사다.
`AI` | +14,436 | 481.2 | 108,798 | paperclipai/paperclip 스타 추이 그래프 | -| 13 | [anomalyco/opencode](https://github.com/anomalyco/opencode)
웹 페이지 없이 터미널에서 바로 AI로 코딩한다. 여러 모델을 지원하고 Claude Code·Codex에 맞서는 무료 오픈소스.
`AI` | +13,404 | 446.8 | 223,154 | anomalyco/opencode 스타 추이 그래프 | -| 14 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
Claude Code·Codex·Gemini CLI·OpenCode·OpenClaw 등을 한곳에서 관리하는 데스크톱 앱. API 제공자를 한 번에 바꾸고 MCP·스킬·프롬프트도 설정 파일을 손으로 고치지 않고 관리한다.
`AI` | +12,324 | 410.8 | 150,238 | farion1231/cc-switch 스타 추이 그래프 | -| 15 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
코딩 에이전트를 위한 실무급 엔지니어링 스킬 모음. 시니어 엔지니어가 명세부터 출시까지 지키는 워크플로와 품질 게이트를 담아 에이전트가 매번 따르게 한다.
`AI` | +12,280 | 409.3 | 111,823 | addyosmani/agent-skills 스타 추이 그래프 | -| 16 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
무료 MIT 라이선스 AI 게이트웨이. 하나의 엔드포인트로 수백 개 제공자와 모델에 연결하고 할당량이 떨어지면 자동 전환한다. Claude Code·Codex·Cursor·OpenCode·Cline·Copilot과 함께 쓸 수 있다.
`AI` | +11,696 | 389.9 | 82,663 | cheaper-inference/OmniRoute 스타 추이 그래프 | -| 17 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
코딩 에이전트에 디자인 감각을 더해 주는 스킬. 여러 플랫폼과 프레임워크에서 전문가다운 UI/UX를 만들게 한다.
`AI` | +11,660 | 388.7 | 142,715 | nextlevelbuilder/ui-ux-pro-max-skill 스타 추이 그래프 | -| 18 | [thedotmack/claude-mem](https://github.com/thedotmack/claude-mem)
세션이 바뀌어도 에이전트가 기억하게 한다. 작업 내용을 기록하고 AI로 압축해 다음 세션에 관련 내용을 다시 넣어 준다. Claude Code·Codex·Gemini·OpenCode 등에서 쓸 수 있다.
`AI` | +10,595 | 353.2 | 105,138 | thedotmack/claude-mem 스타 추이 그래프 | -| 19 | [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent)
Nous Research가 만든 스스로 개선하는 AI 에이전트. 학습 루프가 내장되어 경험에서 스킬을 만들고 쓰면서 다듬으며, Telegram·Discord·Slack 등에서도 대화할 수 있다.
`AI` | +9,731 | 324.4 | 258,636 | NousResearch/hermes-agent 스타 추이 그래프 | -| 20 | [anthropics/skills](https://github.com/anthropics/skills)
Anthropic이 공개한 Agent Skills 저장소. 지침·스크립트·리소스를 담은 폴더를 Claude가 필요할 때 불러온다. 창작부터 웹 앱 테스트까지 다양해 직접 스킬을 만들 때 참고하기 좋다.
`AI` | +6,531 | 217.7 | 184,884 | anthropics/skills 스타 추이 그래프 | ### 올해 가장 빨리 오른 프로젝트 (최근 365일) @@ -135,16 +103,6 @@ GitHub API에서 가져온 시각: 2026-10-30 08:39:25 (UTC). | 8 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
코드베이스 전체를 한 장의 지도로 만들어 어떤 파일이 서로 호출하는지 AI가 한눈에 파악한다. 큰 프로젝트를 처음부터 끝까지 읽을 필요가 없다.
`AI` | +138,922 | 661.5 †
÷210일 | 138,983 | Graphify-Labs/graphify 스타 추이 그래프 | | 9 | [anomalyco/opencode](https://github.com/anomalyco/opencode)
웹 페이지 없이 터미널에서 바로 AI로 코딩한다. 여러 모델을 지원하고 Claude Code·Codex에 맞서는 무료 오픈소스.
`AI` | +194,805 | 533.7 | 223,154 | anomalyco/opencode 스타 추이 그래프 | | 10 | [stablyai/orca](https://github.com/stablyai/orca)
한 데스크톱에서 여러 AI 코딩 에이전트를 동시에 돌려 누가 더 잘 짜는지 비교한다. 에이전트마다 작업 공간이 따로라 서로 방해하지 않는다.
`AI` | +110,415 | 486.4 †
÷227일 | 110,515 | stablyai/orca 스타 추이 그래프 | -| 11 | [anthropics/skills](https://github.com/anthropics/skills)
Anthropic이 공개한 Agent Skills 저장소. 지침·스크립트·리소스를 담은 폴더를 Claude가 필요할 때 불러온다. 창작부터 웹 앱 테스트까지 다양해 직접 스킬을 만들 때 참고하기 좋다.
`AI` | +170,780 | 467.9 | 184,884 | anthropics/skills 스타 추이 그래프 | -| 12 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
AI 에이전트 팀을 회사처럼 운영하는 오픈소스 앱. 목표를 배정하고 예산을 정하고 작업과 비용을 한 대시보드에서 추적한다. OpenClaw가 직원이라면 Paperclip은 회사다.
`AI` | +108,764 | 449.4 †
÷242일 | 108,798 | paperclipai/paperclip 스타 추이 그래프 | -| 13 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
코딩 에이전트를 위한 실무급 엔지니어링 스킬 모음. 시니어 엔지니어가 명세부터 출시까지 지키는 워크플로와 품질 게이트를 담아 에이전트가 매번 따르게 한다.
`AI` | +111,805 | 435.0 †
÷257일 | 111,823 | addyosmani/agent-skills 스타 추이 그래프 | -| 14 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
AI 에이전트에게 인터넷 전체를 보여주는 도구. 명령 하나로 트위터·Reddit·YouTube·GitHub·Bilibili·샤오홍슈를 읽고 검색하며 API 비용이 들지 않는다.
`AI` | +106,451 | 429.2 †
÷248일 | 106,509 | Panniantong/Agent-Reach 스타 추이 그래프 | -| 15 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
코딩 에이전트에 디자인 감각을 더해 주는 스킬. 여러 플랫폼과 프레임워크에서 전문가다운 UI/UX를 만들게 한다.
`AI` | +142,662 | 427.1 †
÷334일 | 142,715 | nextlevelbuilder/ui-ux-pro-max-skill 스타 추이 그래프 | -| 16 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
코딩 에이전트에게 '감각'을 주는 스킬 모음. 아트 디렉션, 실제 참고 이미지, 브라우저 자체 점검으로 흔해 빠진 AI 랜딩 페이지를 만들지 않게 한다.
`AI` | +105,762 | 418.0 †
÷253일 | 105,834 | Leonxlnx/taste-skill 스타 추이 그래프 | -| 17 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
Claude Code·Codex·Gemini CLI·OpenCode·OpenClaw 등을 한곳에서 관리하는 데스크톱 앱. API 제공자를 한 번에 바꾸고 MCP·스킬·프롬프트도 설정 파일을 손으로 고치지 않고 관리한다.
`AI` | +147,480 | 404.1 | 150,238 | farion1231/cc-switch 스타 추이 그래프 | -| 18 | [cloudflare/security-audit-skill](https://github.com/cloudflare/security-audit-skill)
AI가 자기 코드의 취약점을 직접 찾게 하고, 다른 AI를 불러 반박까지 시킨다. 코딩 에이전트가 쓰는 불안전한 코드를 잡아낸다.
`AI` | +53,137 | 396.5 †
÷134일 | 53,235 | cloudflare/security-audit-skill 스타 추이 그래프 | -| 19 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
웹 페이지를 쓰듯 영상을 쓰면 AI가 바로 렌더링한다. 코딩 에이전트도 쓸 수 있어 편집 소프트웨어를 따로 배울 필요가 없다.
`AI` | +75,613 | 323.1 †
÷234일 | 75,673 | heygen-com/hyperframes 스타 추이 그래프 | -| 20 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
무료 MIT 라이선스 AI 게이트웨이. 하나의 엔드포인트로 수백 개 제공자와 모델에 연결하고 할당량이 떨어지면 자동 전환한다. Claude Code·Codex·Cursor·OpenCode·Cline·Copilot과 함께 쓸 수 있다.
`AI` | +82,646 | 319.1 †
÷259일 | 82,663 | cheaper-inference/OmniRoute 스타 추이 그래프 | † 저장소가 집계 기간보다 새로 만들어져, 스타/일은 전체 기간이 아니라 저장소 나이(숫자 아래 표시, 일 단위)로 나눈 값입니다. @@ -162,16 +120,6 @@ GitHub API에서 가져온 시각: 2026-10-30 08:39:25 (UTC). | 8 | [DietrichGebert/ponytail](https://github.com/DietrichGebert/ponytail)
AI가 코드에 군더더기를 잔뜩 붙이는 버릇을 고친다. 게으른 베테랑처럼 안 써도 되면 쓰지 않고, 쓸 거면 제대로 쓰게 가르친다.
`AI` | 180,485 | DietrichGebert/ponytail 스타 추이 그래프 | | 9 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
Claude Code·Codex·Gemini CLI·OpenCode·OpenClaw 등을 한곳에서 관리하는 데스크톱 앱. API 제공자를 한 번에 바꾸고 MCP·스킬·프롬프트도 설정 파일을 손으로 고치지 않고 관리한다.
`AI` | 150,238 | farion1231/cc-switch 스타 추이 그래프 | | 10 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
코딩 에이전트에 디자인 감각을 더해 주는 스킬. 여러 플랫폼과 프레임워크에서 전문가다운 UI/UX를 만들게 한다.
`AI` | 142,715 | nextlevelbuilder/ui-ux-pro-max-skill 스타 추이 그래프 | -| 11 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
코드베이스 전체를 한 장의 지도로 만들어 어떤 파일이 서로 호출하는지 AI가 한눈에 파악한다. 큰 프로젝트를 처음부터 끝까지 읽을 필요가 없다.
`AI` | 138,983 | Graphify-Labs/graphify 스타 추이 그래프 | -| 12 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
코딩 에이전트를 위한 실무급 엔지니어링 스킬 모음. 시니어 엔지니어가 명세부터 출시까지 지키는 워크플로와 품질 게이트를 담아 에이전트가 매번 따르게 한다.
`AI` | 111,823 | addyosmani/agent-skills 스타 추이 그래프 | -| 13 | [stablyai/orca](https://github.com/stablyai/orca)
한 데스크톱에서 여러 AI 코딩 에이전트를 동시에 돌려 누가 더 잘 짜는지 비교한다. 에이전트마다 작업 공간이 따로라 서로 방해하지 않는다.
`AI` | 110,515 | stablyai/orca 스타 추이 그래프 | -| 14 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
AI 에이전트 팀을 회사처럼 운영하는 오픈소스 앱. 목표를 배정하고 예산을 정하고 작업과 비용을 한 대시보드에서 추적한다. OpenClaw가 직원이라면 Paperclip은 회사다.
`AI` | 108,798 | paperclipai/paperclip 스타 추이 그래프 | -| 15 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
AI 에이전트에게 인터넷 전체를 보여주는 도구. 명령 하나로 트위터·Reddit·YouTube·GitHub·Bilibili·샤오홍슈를 읽고 검색하며 API 비용이 들지 않는다.
`AI` | 106,509 | Panniantong/Agent-Reach 스타 추이 그래프 | -| 16 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
코딩 에이전트에게 '감각'을 주는 스킬 모음. 아트 디렉션, 실제 참고 이미지, 브라우저 자체 점검으로 흔해 빠진 AI 랜딩 페이지를 만들지 않게 한다.
`AI` | 105,834 | Leonxlnx/taste-skill 스타 추이 그래프 | -| 17 | [thedotmack/claude-mem](https://github.com/thedotmack/claude-mem)
세션이 바뀌어도 에이전트가 기억하게 한다. 작업 내용을 기록하고 AI로 압축해 다음 세션에 관련 내용을 다시 넣어 준다. Claude Code·Codex·Gemini·OpenCode 등에서 쓸 수 있다.
`AI` | 105,138 | thedotmack/claude-mem 스타 추이 그래프 | -| 18 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
무료 MIT 라이선스 AI 게이트웨이. 하나의 엔드포인트로 수백 개 제공자와 모델에 연결하고 할당량이 떨어지면 자동 전환한다. Claude Code·Codex·Cursor·OpenCode·Cline·Copilot과 함께 쓸 수 있다.
`AI` | 82,663 | cheaper-inference/OmniRoute 스타 추이 그래프 | -| 19 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
웹 페이지를 쓰듯 영상을 쓰면 AI가 바로 렌더링한다. 코딩 에이전트도 쓸 수 있어 편집 소프트웨어를 따로 배울 필요가 없다.
`AI` | 75,673 | heygen-com/hyperframes 스타 추이 그래프 | -| 20 | [cloudflare/security-audit-skill](https://github.com/cloudflare/security-audit-skill)
AI가 자기 코드의 취약점을 직접 찾게 하고, 다른 AI를 불러 반박까지 시킨다. 코딩 에이전트가 쓰는 불안전한 코드를 잡아낸다.
`AI` | 53,235 | cloudflare/security-audit-skill 스타 추이 그래프 | ## 개발자 도구 @@ -179,8 +127,6 @@ GitHub API에서 가져온 시각: 2026-10-30 08:39:25 (UTC). ### 7일 이내 신규 인기 저장소 (최근 7일 내 생성) -이 카테고리에서 최근 7일 안에 만들어진 저장소를 GitHub 검색 API(topic 기준: 저장소 자신이 해당 카테고리의 topic을 가져야 함)로 찾아 생성 이후 하루 평균 스타 순으로 줄 세웁니다. 이 카테고리의 다른 랭킹(또는 수록 프로젝트)에 이미 있거나, 앞선 카테고리(AI 우선)에 이미 올라간 저장소는 빼 둡니다. 설명은 저장소 자신의 GitHub 설명; 손번역은 [data/newcomer_i18n.json](data/newcomer_i18n.json). 규칙: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). - | # | 프로젝트 | 생성일 (UTC) | 총 스타 | 스타/일 | 스타 추이 | |---|---|---|---:|---:|---| | 1 | [heydeer/pngdeer](https://github.com/heydeer/pngdeer)
화질은 그대로, 용량은 더 작게. 화질을 자동으로 정해 PNG를 PNG 또는 WebP로 압축한다. 같은 화질 기준으로 중앙값 이미지에서 PNG 출력이 TinyPNG보다 8~12% 작다… | 2026-10-25
5.2일 | 371 | 72.1 | heydeer/pngdeer 스타 추이 그래프 | @@ -193,16 +139,6 @@ GitHub API에서 가져온 시각: 2026-10-30 08:39:25 (UTC). | 8 | [ScorpionHub17/KMS-Pico](https://github.com/ScorpionHub17/KMS-Pico)
Kms Pico Free 2026 완전한 독립 설치본. 사전 활성화된 데스크톱 버전으로, 바로 실행할 수 있고 설치가 매끄럽다. | 2026-10-29
1.0일 | 197 | 197.0 | ScorpionHub17/KMS-Pico 스타 추이 그래프 | | 9 | [Sourcecladrag/Windows-Optimizer](https://github.com/Sourcecladrag/Windows-Optimizer)
Windows Optimizer 2026 — 고급 시스템 튜닝과 개선 기능을 갖춘, 바로 실행할 수 있는 완전한 설치 프로그램. | 2026-10-29
1.0일 | 197 | 197.0 | Sourcecladrag/Windows-Optimizer 스타 추이 그래프 | | 10 | [AshReinvigorate/Microsoft-Office](https://github.com/AshReinvigorate/Microsoft-Office)
Microsoft Office 2026 완전한 독립 설치본. 바로 실행할 수 있는 데스크톱 설치본으로, 모든 기능이 사전 활성화되어 있다. | 2026-10-30
1.0일 | 126 | 126.0 | AshReinvigorate/Microsoft-Office 스타 추이 그래프 | -| 11 | [Fangludisclose/SystemCare-Pro](https://github.com/Fangludisclose/SystemCare-Pro)
Systemcare Pro 2026 바로 쓸 수 있는 완전한 설치 프로그램. 모든 기능이 활성화된 완전한 독립 설치본으로, 바로 실행할 수 있다. | 2026-10-30
1.0일 | 126 | 126.0 | Fangludisclose/SystemCare-Pro 스타 추이 그래프 | -| 12 | [FormHalberdierSouk/SoundPad](https://github.com/FormHalberdierSouk/SoundPad)
Soundpad 2026: 전문 오디오 제작에 필요한 주요 플러그인과 이펙트를 모두 담은, 바로 쓸 수 있는 완전한 설치 프로그램. | 2026-10-30
1.0일 | 126 | 126.0 | FormHalberdierSouk/SoundPad 스타 추이 그래프 | -| 13 | [Lostbrocreate/Adobe-InDesign](https://github.com/Lostbrocreate/Adobe-InDesign)
보안 디지털 자산 배포 파이프라인 2026 바로 쓸 수 있는 완전한 설치 프로그램. 온라인과 오프라인 출판을 효율적으로 처리하는, 바로 실행 가능한 솔루션. | 2026-10-30
1.0일 | 126 | 126.0 | Lostbrocreate/Adobe-InDesign 스타 추이 그래프 | -| 14 | [nodedevelopersack/Cubase](https://github.com/nodedevelopersack/Cubase)
전문가용 Cubase 13 완전한 독립 설치 빌드로, 사전 활성화되어 있어 데스크톱에서 매끄럽게 오디오 제작을 할 수 있다. | 2026-10-30
1.0일 | 126 | 126.0 | nodedevelopersack/Cubase 스타 추이 그래프 | -| 15 | [Phantomeidemonstrate/AnyDesk](https://github.com/Phantomeidemonstrate/AnyDesk)
Anydesk 2026: 바로 쓸 수 있는 완전한 설치 프로그램. 완전한 독립 설치본으로 원격 데스크톱 접속을 매끄럽게 해 준다. | 2026-10-30
1.0일 | 125 | 125.0 | Phantomeidemonstrate/AnyDesk 스타 추이 그래프 | -| 16 | [PhoenixRetreat/Wondshare-Recoverit](https://github.com/PhoenixRetreat/Wondshare-Recoverit)
Wondshare Recoverit 2026 완전한 독립 설치본. 바로 실행할 수 있는 완전한 설치 프로그램으로, 모든 기능이 활성화되어 있다. | 2026-10-30
1.0일 | 125 | 125.0 | PhoenixRetreat/Wondshare-Recoverit 스타 추이 그래프 | -| 17 | [scarletscreengrasp/Uttorent](https://github.com/scarletscreengrasp/Uttorent)
Uttorent 2026 — 바로 쓸 수 있는 완전한 설치 프로그램. 완전한 독립 설치본으로 바로 실행할 수 있다. | 2026-10-30
1.0일 | 125 | 125.0 | scarletscreengrasp/Uttorent 스타 추이 그래프 | -| 18 | [SoapmakerShout44/Cinema-4d](https://github.com/SoapmakerShout44/Cinema-4d)
전문가용 Cinema 4D 유틸리티 구성. 완전한 독립 설치 세트로 2026년의 작업 흐름을 효율적으로 만들어 준다. | 2026-10-30
1.0일 | 125 | 125.0 | SoapmakerShout44/Cinema-4d 스타 추이 그래프 | -| 19 | [twilightstonerestore/Glary-Utilities-Pro](https://github.com/twilightstonerestore/Glary-Utilities-Pro)
Glary Utilities Pro 2026: 모든 도구가 활성화된, 바로 쓸 수 있는 완전한 설치 프로그램. 데스크톱에서 즉시 사용할 수 있다. | 2026-10-30
1.0일 | 125 | 125.0 | twilightstonerestore/Glary-Utilities-Pro 스타 추이 그래프 | -| 20 | [ViceFencerManacle/Camtasia](https://github.com/ViceFencerManacle/Camtasia)
Camtasia 2026 바로 쓸 수 있는 완전한 설치 프로그램. 모든 기능을 갖췄고 데스크톱에서 바로 실행할 수 있다. | 2026-10-30
1.0일 | 125 | 125.0 | ViceFencerManacle/Camtasia 스타 추이 그래프 | ### 이번 주 가장 빨리 오른 프로젝트 (최근 7일) @@ -262,8 +198,6 @@ GitHub API에서 가져온 시각: 2026-10-30 08:39:25 (UTC). ### 7일 이내 신규 인기 저장소 (최근 7일 내 생성) -이 카테고리에서 최근 7일 안에 만들어진 저장소를 GitHub 검색 API(topic 기준: 저장소 자신이 해당 카테고리의 topic을 가져야 함)로 찾아 생성 이후 하루 평균 스타 순으로 줄 세웁니다. 이 카테고리의 다른 랭킹(또는 수록 프로젝트)에 이미 있거나, 앞선 카테고리(AI 우선)에 이미 올라간 저장소는 빼 둡니다. 설명은 저장소 자신의 GitHub 설명; 손번역은 [data/newcomer_i18n.json](data/newcomer_i18n.json). 규칙: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). - | # | 프로젝트 | 생성일 (UTC) | 총 스타 | 스타/일 | 스타 추이 | |---|---|---|---:|---:|---| | 1 | [vaishantsah/watson-AI-osint-all-in-one](https://github.com/vaishantsah/watson-AI-osint-all-in-one)
Watson — Windows용 무료 OSINT 도구: 닉네임, 이메일, 전화번호, 웹사이트로 3,100개 이상의 공개 사이트에서 사람을 검색한다. 오픈소스 인텔리전스를 쉽게: digi… | 2026-10-28
2.4일 | 316 | 134.2 | vaishantsah/watson-AI-osint-all-in-one 스타 추이 그래프 | @@ -327,8 +261,6 @@ GitHub API에서 가져온 시각: 2026-10-30 08:39:25 (UTC). ### 7일 이내 신규 인기 저장소 (최근 7일 내 생성) -이 카테고리에서 최근 7일 안에 만들어진 저장소를 GitHub 검색 API(topic 기준: 저장소 자신이 해당 카테고리의 topic을 가져야 함)로 찾아 생성 이후 하루 평균 스타 순으로 줄 세웁니다. 이 카테고리의 다른 랭킹(또는 수록 프로젝트)에 이미 있거나, 앞선 카테고리(AI 우선)에 이미 올라간 저장소는 빼 둡니다. 설명은 저장소 자신의 GitHub 설명; 손번역은 [data/newcomer_i18n.json](data/newcomer_i18n.json). 규칙: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). - | # | 프로젝트 | 생성일 (UTC) | 총 스타 | 스타/일 | 스타 추이 | |---|---|---|---:|---:|---| | 1 | [designfuchen/word-atlas](https://github.com/designfuchen/word-atlas)
词光 · Word Atlas — 삽화가 곁들여진 IELTS 어휘 7,298개. 영국식·미국식 발음과 FSRS 복습을 지원한다. 오픈 소스 앱 + CC BY 4.0 데이터셋. | 2026-10-25
5.0일 | 3,297 | 658.3 | designfuchen/word-atlas 스타 추이 그래프 | @@ -395,8 +327,6 @@ GitHub API에서 가져온 시각: 2026-10-30 08:39:25 (UTC). ### 7일 이내 신규 인기 저장소 (최근 7일 내 생성) -이 카테고리에서 최근 7일 안에 만들어진 저장소를 GitHub 검색 API(topic 기준: 저장소 자신이 해당 카테고리의 topic을 가져야 함)로 찾아 생성 이후 하루 평균 스타 순으로 줄 세웁니다. 이 카테고리의 다른 랭킹(또는 수록 프로젝트)에 이미 있거나, 앞선 카테고리(AI 우선)에 이미 올라간 저장소는 빼 둡니다. 설명은 저장소 자신의 GitHub 설명; 손번역은 [data/newcomer_i18n.json](data/newcomer_i18n.json). 규칙: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). - | # | 프로젝트 | 생성일 (UTC) | 총 스타 | 스타/일 | 스타 추이 | |---|---|---|---:|---:|---| | 1 | [zeabur-oss/zeabur](https://github.com/zeabur-oss/zeabur)
내 Kubernetes 위에서 돌리는 셀프 호스팅 PaaS. | 2026-10-24
6.0일 | 551 | 91.1 | zeabur-oss/zeabur 스타 추이 그래프 | @@ -460,8 +390,6 @@ GitHub API에서 가져온 시각: 2026-10-30 08:39:25 (UTC). ### 7일 이내 신규 인기 저장소 (최근 7일 내 생성) -이 카테고리에서 최근 7일 안에 만들어진 저장소를 GitHub 검색 API(topic 기준: 저장소 자신이 해당 카테고리의 topic을 가져야 함)로 찾아 생성 이후 하루 평균 스타 순으로 줄 세웁니다. 이 카테고리의 다른 랭킹(또는 수록 프로젝트)에 이미 있거나, 앞선 카테고리(AI 우선)에 이미 올라간 저장소는 빼 둡니다. 설명은 저장소 자신의 GitHub 설명; 손번역은 [data/newcomer_i18n.json](data/newcomer_i18n.json). 규칙: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). - 이번 실행에서 조건을 충족한 신규 저장소가 없습니다. ### 이번 주 가장 빨리 오른 프로젝트 (최근 7일) @@ -522,8 +450,6 @@ GitHub API에서 가져온 시각: 2026-10-30 08:39:25 (UTC). ### 7일 이내 신규 인기 저장소 (최근 7일 내 생성) -이 카테고리에서 최근 7일 안에 만들어진 저장소를 GitHub 검색 API(topic 기준: 저장소 자신이 해당 카테고리의 topic을 가져야 함)로 찾아 생성 이후 하루 평균 스타 순으로 줄 세웁니다. 이 카테고리의 다른 랭킹(또는 수록 프로젝트)에 이미 있거나, 앞선 카테고리(AI 우선)에 이미 올라간 저장소는 빼 둡니다. 설명은 저장소 자신의 GitHub 설명; 손번역은 [data/newcomer_i18n.json](data/newcomer_i18n.json). 규칙: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). - | # | 프로젝트 | 생성일 (UTC) | 총 스타 | 스타/일 | 스타 추이 | |---|---|---|---:|---:|---| | 1 | [hugues31/duckpad](https://github.com/hugues31/duckpad)
오픈 소스 커뮤니티가 누려야 할 데이터 변환 도구. | 2026-10-25
5.0일 | 269 | 53.5 | hugues31/duckpad 스타 추이 그래프 | @@ -580,18 +506,10 @@ GitHub API에서 가져온 시각: 2026-10-30 08:39:25 (UTC). | 7 | [dbt-labs/dbt-core](https://github.com/dbt-labs/dbt-core)
웨어하우스 데이터를 소프트웨어 공학 방식으로 변환.
`데이터` | 14,104 | dbt-labs/dbt-core 스타 추이 그래프 | | 8 | [jupyter/notebook](https://github.com/jupyter/notebook)
문서를 만들고 공유하는 Jupyter 인터랙티브 노트북.
`데이터` | 13,461 | jupyter/notebook 스타 추이 그래프 | -## 누락된 데이터 - -이번 실행에서 누락된 프로젝트는 없습니다. - -## 숫자는 어떻게 얻나 +--- -- 총 스타: `GET /repos/{owner}/{repo}`의 `stargazers_count`. -- 증가 스타: `GET /repos/{owner}/{repo}/stargazers/history` (GitHub가 제공하는 사용자 정보 없는 주간/일간 스타 수). 오늘 이전 N일(UTC, 오늘 제외)의 합이며 스타/일 = 증가 수 ÷ N. -- GitHub는 주/일 구간 경계가 UTC와 일치한다고 보장하지 않으며, 나중에 취소된 스타는 집계되지 않으므로 기간 끝에서 약간의 오차가 있을 수 있습니다. -- 스타 추이 그래프는 `star-history.com`의 SVG 이미지를 URL로 참조합니다. 이 저장소에는 분석·추적 스크립트가 전혀 없습니다. -- 원본 숫자는 [`data/stats.json`](data/stats.json), 일별 스냅샷은 [`data/stars.json`](data/stars.json)에 누적됩니다. +도움이 됐다면 다른 사람도 찾을 수 있도록 저장소에 스타를 눌러 주세요. -## 기여하기 +인용 방법: [CITATION.cff](CITATION.cff)를 보세요. -`data/projects.json`에 항목을 추가하고(`category`와 다섯 언어 `desc`), `python tools/update_stars.py`를 실행하세요. 카테고리: [docs/CATEGORIES.md](docs/CATEGORIES.md). 매일 갱신: [docs/DAILY_UPDATE.md](docs/DAILY_UPDATE.md). +숫자를 만드는 방법과 참여 방법: [docs/HOW_IT_WORKS.ko.md](docs/HOW_IT_WORKS.ko.md). 신규 저장소 규칙: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). 카테고리: [docs/CATEGORIES.md](docs/CATEGORIES.md). diff --git a/README.md b/README.md index 37cd2b0..448624e 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,44 @@ **English** | [简体中文](README.zh-Hans.md) | [繁體中文](README.zh-Hant.md) | [日本語](README.ja.md) | [한국어](README.ko.md) -# GitHub Risers: Trending Repos Ranked by Star Growth +# GitHub Risers: Ranked by Stars Gained per Day -> GitHub trending ranked by star growth, not total stars. AI first, plus developer tools, security, web, infrastructure, design and data. Refreshed twice a day, with a 7-day new-repo board in every category. +GitHub Risers: Ranked by Stars Gained per Day -Total-star lists keep the old giants on top and bury what is taking off right now. GitHub Risers ranks repos by stars gained per day (last 7, 30 and 365 days) and groups them into categories, with AI as the main board. Every category has a hottest-new-repos board for repos created in the last 7 days, then week, month and year star-growth rankings, and total stars last. All numbers come straight from the GitHub API. Classification rules: [docs/CATEGORIES.md](docs/CATEGORIES.md). +[![MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![CI](https://github.com/jammyfu/github-risers/actions/workflows/ci.yml/badge.svg)](https://github.com/jammyfu/github-risers/actions/workflows/ci.yml) [![updated](https://img.shields.io/badge/updated-2026--10--30-brightgreen.svg)](latest/rankings.md) -Data fetched from the GitHub API on 2026-10-30 08:39:25 (UTC). -Updated twice a day: 00:00 Beijing time (UTC+8) and 00:00 Los Angeles time (America/Los_Angeles, follows daylight saving). Each update is archived under its own time slot. -Each category ranking shows up to the top 20 of 70 tracked projects across all categories. +Trending GitHub repos ranked by star growth (stars gained per day), not total stars: AI first, then developer tools, security, web, infrastructure, design and data. -These tables are the latest ranking. Every update is also saved per time slot: [ranking history](rankings/README.md) · [latest/rankings.md](latest/rankings.md). +Updated 2026-10-30 08:39 UTC, twice a day (00:00 Beijing, 00:00 Los Angeles). -## Category leaders this round +[Website](https://jammyfu.github.io/github-risers/) · [How it works](docs/HOW_IT_WORKS.md) · [Facts](docs/FACTS.md) · [History](rankings/README.md) · [Latest](latest/rankings.md) -The #1 of every board in every category, generated by script from the data below. n/a means that board has no entry in this run. +## Category leaders this round | Category | #1 new (7 days) | #1 this week | #1 this month | #1 this year | #1 total stars | |---|---|---|---|---|---| -| **AI** ★ primary | [rddmwmddr/android-ad-cleaner](https://github.com/rddmwmddr/android-ad-cleaner)
798/day | [morluto/rea](https://github.com/morluto/rea)
5,942/day | [morluto/rea](https://github.com/morluto/rea)
13,623/day | [deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness)
3,412/day | [morluto/rea](https://github.com/morluto/rea)
409,565 ★ | -| **Developer Tools** | [heydeer/pngdeer](https://github.com/heydeer/pngdeer)
72.1/day | [zed-industries/zed](https://github.com/zed-industries/zed)
56.6/day | [zed-industries/zed](https://github.com/zed-industries/zed)
53.8/day | [zed-industries/zed](https://github.com/zed-industries/zed)
70.6/day | [oven-sh/bun](https://github.com/oven-sh/bun)
96,468 ★ | -| **Security** | [vaishantsah/watson-AI-osint-all-in-one](https://github.com/vaishantsah/watson-AI-osint-all-in-one)
134/day | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
32.7/day | [projectdiscovery/nuclei](https://github.com/projectdiscovery/nuclei)
29.7/day | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
27.7/day | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
38,849 ★ | -| **Web / Frontend** | [designfuchen/word-atlas](https://github.com/designfuchen/word-atlas)
658/day | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
103/day | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
84.6/day | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
83.0/day | [facebook/react](https://github.com/facebook/react)
251,753 ★ | -| **Infrastructure** | [zeabur-oss/zeabur](https://github.com/zeabur-oss/zeabur)
91.1/day | [caddyserver/caddy](https://github.com/caddyserver/caddy)
44.1/day | [caddyserver/caddy](https://github.com/caddyserver/caddy)
83.4/day | [caddyserver/caddy](https://github.com/caddyserver/caddy)
32.4/day | [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes)
128,522 ★ | -| **Design / Creative** | n/a | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
65.6/day | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
64.6/day | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
73.9/day | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
134,834 ★ | -| **Data** | [hugues31/duckpad](https://github.com/hugues31/duckpad)
53.5/day | [duckdb/duckdb](https://github.com/duckdb/duckdb)
40.0/day | [duckdb/duckdb](https://github.com/duckdb/duckdb)
31.1/day | [duckdb/duckdb](https://github.com/duckdb/duckdb)
25.7/day | [apache/superset](https://github.com/apache/superset)
75,366 ★ | - -
Categories - -| | | -|---|---| -| AI ★ primary | LLMs, agents, MCP, coding copilots and generative AI | -| Developer Tools | CLIs, editors, package managers, linters and build tooling | -| Security | Vulnerability scanners, SAST, supply-chain and runtime security | -| Web / Frontend | Frontend frameworks, UI kits, CSS and browser tooling | -| Infrastructure | Containers, Kubernetes, cloud, networking and observability | -| Design / Creative | Design systems, drawing, animation and creative tooling | -| Data | Databases, analytics, ETL and data engineering | - -
+| **[AI](#ai)** ★ primary | [rddmwmddr/android-ad-cleaner](https://github.com/rddmwmddr/android-ad-cleaner)
798/day | [morluto/rea](https://github.com/morluto/rea)
5,942/day | [morluto/rea](https://github.com/morluto/rea)
13,623/day | [deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness)
3,412/day | [morluto/rea](https://github.com/morluto/rea)
409,565 ★ | +| **[Developer Tools](#developer-tools)** | [heydeer/pngdeer](https://github.com/heydeer/pngdeer)
72.1/day | [zed-industries/zed](https://github.com/zed-industries/zed)
56.6/day | [zed-industries/zed](https://github.com/zed-industries/zed)
53.8/day | [zed-industries/zed](https://github.com/zed-industries/zed)
70.6/day | [oven-sh/bun](https://github.com/oven-sh/bun)
96,468 ★ | +| **[Security](#security)** | [vaishantsah/watson-AI-osint-all-in-one](https://github.com/vaishantsah/watson-AI-osint-all-in-one)
134/day | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
32.7/day | [projectdiscovery/nuclei](https://github.com/projectdiscovery/nuclei)
29.7/day | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
27.7/day | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
38,849 ★ | +| **[Web / Frontend](#web--frontend)** | [designfuchen/word-atlas](https://github.com/designfuchen/word-atlas)
658/day | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
103/day | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
84.6/day | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
83.0/day | [facebook/react](https://github.com/facebook/react)
251,753 ★ | +| **[Infrastructure](#infrastructure)** | [zeabur-oss/zeabur](https://github.com/zeabur-oss/zeabur)
91.1/day | [caddyserver/caddy](https://github.com/caddyserver/caddy)
44.1/day | [caddyserver/caddy](https://github.com/caddyserver/caddy)
83.4/day | [caddyserver/caddy](https://github.com/caddyserver/caddy)
32.4/day | [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes)
128,522 ★ | +| **[Design / Creative](#design--creative)** | n/a | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
65.6/day | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
64.6/day | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
73.9/day | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
134,834 ★ | +| **[Data](#data)** | [hugues31/duckpad](https://github.com/hugues31/duckpad)
53.5/day | [duckdb/duckdb](https://github.com/duckdb/duckdb)
40.0/day | [duckdb/duckdb](https://github.com/duckdb/duckdb)
31.1/day | [duckdb/duckdb](https://github.com/duckdb/duckdb)
25.7/day | [apache/superset](https://github.com/apache/superset)
75,366 ★ | + +Each board shows the top 10 here. The full top-20 lists are in [latest/rankings.md](latest/rankings.md). + +## Quick answers + +### What is GitHub Risers? + +A leaderboard of GitHub repos ranked by stars gained per day, not total stars. AI is the main board; six more categories follow. Built by script from the GitHub API. [Read more](docs/FAQ.md#what-is-github-risers) + +### How is it different from GitHub Trending? + +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. [Read more](docs/FAQ.md#is-it-the-same-as-github-trending) + +### How often is it updated? + +Twice a day, at 00:00 Beijing time and 00:00 Los Angeles time. Every run is archived. [Read more](docs/FAQ.md#how-often-is-it-updated) ## AI @@ -46,8 +46,6 @@ The #1 of every board in every category, generated by script from the data below ### Hottest new repos (created in the last 7 days) -Repositories created within the last 7 days in this category, found with the GitHub search API (by topic: a repo must carry one of the category's topics) and ranked by stars per day since creation. A repo that appears in this category's other rankings (or is a tracked project here), or that already claimed a slot in an earlier category (AI first), is left out. Descriptions are the repo's own GitHub description; hand-written translations live in [data/newcomer_i18n.json](data/newcomer_i18n.json). Rules: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). - | # | Project | Created (UTC) | Total stars | Stars/day | Star history | |---|---|---|---:|---:|---| | 1 | [rddmwmddr/android-ad-cleaner](https://github.com/rddmwmddr/android-ad-cleaner)
Turns off the ads, trending searches, news recommendations and marketing pushes built into Chinese Android phone systems. No root needed, reversible, and AI agents can run it in one step. | 2026-10-24
6.1 d | 4,892 | 798.4 | star history rddmwmddr/android-ad-cleaner | @@ -60,16 +58,6 @@ Repositories created within the last 7 days in this category, found with the Git | 8 | [haydenschmitty/floorplan](https://github.com/haydenschmitty/floorplan)
See how your app actually fits together. An interactive, plain-English map of your codebase, drawn by Claude or Codex. | 2026-10-27
2.9 d | 410 | 143.4 | star history haydenschmitty/floorplan | | 9 | [patch-gg/anymove](https://github.com/patch-gg/anymove)
Motion capture for any creature from one AI video: two cameras in one frame, a DINOv2 joint reader, the rig fitted in both views, a GLB out. | 2026-10-27
3.0 d | 431 | 142.4 | star history patch-gg/anymove | | 10 | [daveebbelaar/bama](https://github.com/daveebbelaar/bama)
BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI. | 2026-10-24
6.0 d | 838 | 139.8 | star history daveebbelaar/bama | -| 11 | [shipwords-dev/shipwords](https://github.com/shipwords-dev/shipwords)
Ship a money-making AI site for every new keyword. Cloudflare-native starter with auth, credits, payments and AI generation. / A framework for farms of new-keyword sites: one new keyword, one site, live in an afternoon. Keep iterating on the ones that take off, drop the ones that don't… | 2026-10-28
2.1 d | 287 | 137.6 | star history shipwords-dev/shipwords | -| 12 | [jmanico/grim-prompter](https://github.com/jmanico/grim-prompter)
Threat modeling for AI coding agents: point Claude Code, Codex or any agent at your repo and get an evidence-traced threat model. 36 architectures, 29 methods,… | 2026-10-28
1.9 d | 188 | 101.4 | star history jmanico/grim-prompter | -| 13 | [andyhuo520/vibe-knowledge](https://github.com/andyhuo520/vibe-knowledge)
Vibe Knowledge Awards: one knowledge point → one polished short knowledge video with narration and a source for every sentence (Claude Code skill · 44 styles · built frame by frame in code) | 2026-10-28
2.0 d | 185 | 94.4 | star history andyhuo520/vibe-knowledge | -| 14 | [hevnsnt/CVEngine](https://github.com/hevnsnt/CVEngine)
AI-first external attack surface assessment with continuous discovery, evidence-based vulnerability validation, and developer-agent MCP integration. | 2026-10-24
5.4 d | 510 | 94.1 | star history hevnsnt/CVEngine | -| 15 | [davemessew/AgentFlux](https://github.com/davemessew/AgentFlux)
Agentic AI platform for visual workflows and autonomous agents. Run it with Docker on your own computer or server. | 2026-10-27
2.8 d | 235 | 85.5 | star history davemessew/AgentFlux | -| 16 | [SAOS-3624/dsh-video-storyboard](https://github.com/SAOS-3624/dsh-video-storyboard)
Scene-aware storyboard for DeepSeek Harness: 9-16 numbered cells with timestamps + transcript + an audio envelope, packed into ONE image (384 tokens). Two tool… | 2026-10-26
3.4 d | 229 | 66.5 | star history SAOS-3624/dsh-video-storyboard | -| 17 | [routerhubSI/uncensored-ai-api](https://github.com/routerhubSI/uncensored-ai-api)
Uncensored AI API and models — one key for Claude, GPT, Gemini, Grok, DeepSeek, GLM and Qwen, with uncensored and abliterated variants where available. OpenAI-… | 2026-10-24
5.7 d | 368 | 65.1 | star history routerhubSI/uncensored-ai-api | -| 18 | [JunWan666/astrbot-for-android](https://github.com/JunWan666/astrbot-for-android)
Deploy and manage AstrBot and NapCat locally on an Android phone. Ships with a built-in PRoot Ubuntu runtime and supports a native management UI, WebUI, logs, backup and restore, and independent updates, with no root required. | 2026-10-26
4.1 d | 264 | 63.7 | star history JunWan666/astrbot-for-android | -| 19 | [aa1143/NamiGPT](https://github.com/aa1143/NamiGPT)
A beginner tutorial for large language models (LLMs): write GPT-2 by hand from scratch and see line by line how an LLM works / Build GPT-2 from scratch in PyTorch, step by step | 2026-10-28
2.3 d | 135 | 58.2 | star history aa1143/NamiGPT | -| 20 | [jacke-pp/ai-wallet-binance](https://github.com/jacke-pp/ai-wallet-binance)
Let any AI trade with your own Binance AI wallet: instant buy and sell, sniping on Agent-only launchpads (Four, Flap, GANG), AI-only Mint, and a local trading page. Binance signs the transactions and your private key is never touched. Free and open source, MIT · Author: Jacke_pp · Contact: X @Jacke_pp (DM) | 2026-10-25
5.0 d | 236 | 47.7 | star history jacke-pp/ai-wallet-binance | ### Fastest rising this week (last 7 days) @@ -85,16 +73,6 @@ Repositories created within the last 7 days in this category, found with the Git | 8 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
Turns a whole codebase into a map so AI sees at a glance which files call which. Big projects no longer need reading top to bottom.
`AI` | +5,783 | 826.1 | 138,983 | star history Graphify-Labs/graphify | | 9 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
Write video the way you write a web page and let AI render it. Coding agents can use it too, no editing software to learn.
`AI` | +5,541 | 791.6 | 75,673 | star history heygen-com/hyperframes | | 10 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
Gives your AI agent eyes on the whole internet. One command-line tool to read and search Twitter, Reddit, YouTube, GitHub, Bilibili and XiaoHongShu, with zero API fees.
`AI` | +5,483 | 783.3 | 106,509 | star history Panniantong/Agent-Reach | -| 11 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
Agent skills that give coding agents taste: art direction, real reference images and a browser check, so they stop producing the generic average AI landing page.
`AI` | +4,623 | 660.4 | 105,834 | star history Leonxlnx/taste-skill | -| 12 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
An AI skill that brings design intelligence to coding agents, so the UI/UX they build looks professional across multiple platforms and frameworks.
`AI` | +3,692 | 527.4 | 142,715 | star history nextlevelbuilder/ui-ux-pro-max-skill | -| 13 | [anomalyco/opencode](https://github.com/anomalyco/opencode)
Write code with AI right in your terminal, no browser tab needed. Supports many models, rivals Claude Code and Codex, free and open source.
`AI` | +3,142 | 448.9 | 223,154 | star history anomalyco/opencode | -| 14 | [thedotmack/claude-mem](https://github.com/thedotmack/claude-mem)
Gives agents memory across sessions: it records what your agent does, compresses it with AI and feeds the relevant parts back into later sessions. Works with Claude Code, Codex, Gemini, OpenCode and more.
`AI` | +2,821 | 403.0 | 105,138 | star history thedotmack/claude-mem | -| 15 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
A free MIT-licensed AI gateway: one endpoint for hundreds of providers and models, with quota-aware automatic fallback. Works with Claude Code, Codex, Cursor, OpenCode, Cline and Copilot.
`AI` | +2,779 | 397.0 | 82,663 | star history cheaper-inference/OmniRoute | -| 16 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
Open-source app for running a team of AI agents like a company: assign goals, set budgets, and track work and costs from one dashboard. If OpenClaw is an employee, Paperclip is the company.
`AI` | +2,593 | 370.4 | 108,798 | star history paperclipai/paperclip | -| 17 | [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent)
A self-improving AI agent from Nous Research with a built-in learning loop: it builds skills from experience, improves them as it works, and reaches you on Telegram, Discord, Slack and more.
`AI` | +2,564 | 366.3 | 258,636 | star history NousResearch/hermes-agent | -| 18 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
Desktop all-in-one manager for Claude Code, Codex, Gemini CLI, OpenCode, OpenClaw and more: switch API providers in one click and manage MCP, Skills and Prompts without hand-editing config files.
`AI` | +2,542 | 363.1 | 150,238 | star history farion1231/cc-switch | -| 19 | [NVIDIA/SkillSpector](https://github.com/NVIDIA/SkillSpector)
NVIDIA's security scanner for AI agent skills: checks vulnerabilities, prompt injection, data exfiltration and supply-chain risks in Claude Code, Codex and MCP skills before you install them.
`AI` | +2,414 | 344.9 | 23,432 | star history NVIDIA/SkillSpector | -| 20 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
Production-grade engineering skills for AI coding agents: the workflows and quality gates senior engineers use, from spec to ship, packaged so agents follow them every time.
`AI` | +2,185 | 312.1 | 111,823 | star history addyosmani/agent-skills | ### Fastest rising this month (last 30 days) @@ -110,16 +88,6 @@ Repositories created within the last 7 days in this category, found with the Git | 8 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
Write video the way you write a web page and let AI render it. Coding agents can use it too, no editing software to learn.
`AI` | +21,640 | 721.3 | 75,673 | star history heygen-com/hyperframes | | 9 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
Gives your AI agent eyes on the whole internet. One command-line tool to read and search Twitter, Reddit, YouTube, GitHub, Bilibili and XiaoHongShu, with zero API fees.
`AI` | +20,788 | 692.9 | 106,509 | star history Panniantong/Agent-Reach | | 10 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
Turns a whole codebase into a map so AI sees at a glance which files call which. Big projects no longer need reading top to bottom.
`AI` | +17,170 | 572.3 | 138,983 | star history Graphify-Labs/graphify | -| 11 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
Agent skills that give coding agents taste: art direction, real reference images and a browser check, so they stop producing the generic average AI landing page.
`AI` | +14,956 | 498.5 | 105,834 | star history Leonxlnx/taste-skill | -| 12 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
Open-source app for running a team of AI agents like a company: assign goals, set budgets, and track work and costs from one dashboard. If OpenClaw is an employee, Paperclip is the company.
`AI` | +14,436 | 481.2 | 108,798 | star history paperclipai/paperclip | -| 13 | [anomalyco/opencode](https://github.com/anomalyco/opencode)
Write code with AI right in your terminal, no browser tab needed. Supports many models, rivals Claude Code and Codex, free and open source.
`AI` | +13,404 | 446.8 | 223,154 | star history anomalyco/opencode | -| 14 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
Desktop all-in-one manager for Claude Code, Codex, Gemini CLI, OpenCode, OpenClaw and more: switch API providers in one click and manage MCP, Skills and Prompts without hand-editing config files.
`AI` | +12,324 | 410.8 | 150,238 | star history farion1231/cc-switch | -| 15 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
Production-grade engineering skills for AI coding agents: the workflows and quality gates senior engineers use, from spec to ship, packaged so agents follow them every time.
`AI` | +12,280 | 409.3 | 111,823 | star history addyosmani/agent-skills | -| 16 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
A free MIT-licensed AI gateway: one endpoint for hundreds of providers and models, with quota-aware automatic fallback. Works with Claude Code, Codex, Cursor, OpenCode, Cline and Copilot.
`AI` | +11,696 | 389.9 | 82,663 | star history cheaper-inference/OmniRoute | -| 17 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
An AI skill that brings design intelligence to coding agents, so the UI/UX they build looks professional across multiple platforms and frameworks.
`AI` | +11,660 | 388.7 | 142,715 | star history nextlevelbuilder/ui-ux-pro-max-skill | -| 18 | [thedotmack/claude-mem](https://github.com/thedotmack/claude-mem)
Gives agents memory across sessions: it records what your agent does, compresses it with AI and feeds the relevant parts back into later sessions. Works with Claude Code, Codex, Gemini, OpenCode and more.
`AI` | +10,595 | 353.2 | 105,138 | star history thedotmack/claude-mem | -| 19 | [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent)
A self-improving AI agent from Nous Research with a built-in learning loop: it builds skills from experience, improves them as it works, and reaches you on Telegram, Discord, Slack and more.
`AI` | +9,731 | 324.4 | 258,636 | star history NousResearch/hermes-agent | -| 20 | [anthropics/skills](https://github.com/anthropics/skills)
Anthropic's public repository of Agent Skills: folders of instructions, scripts and resources that Claude loads on demand, from creative work to testing web apps. Examples and inspiration for your own skills.
`AI` | +6,531 | 217.7 | 184,884 | star history anthropics/skills | ### Fastest rising this year (last 365 days) @@ -135,16 +103,6 @@ Repositories created within the last 7 days in this category, found with the Git | 8 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
Turns a whole codebase into a map so AI sees at a glance which files call which. Big projects no longer need reading top to bottom.
`AI` | +138,922 | 661.5 †
÷210d | 138,983 | star history Graphify-Labs/graphify | | 9 | [anomalyco/opencode](https://github.com/anomalyco/opencode)
Write code with AI right in your terminal, no browser tab needed. Supports many models, rivals Claude Code and Codex, free and open source.
`AI` | +194,805 | 533.7 | 223,154 | star history anomalyco/opencode | | 10 | [stablyai/orca](https://github.com/stablyai/orca)
Run several AI coding agents on one desktop and compare who writes better. Each agent gets its own workspace, so they never step on each other.
`AI` | +110,415 | 486.4 †
÷227d | 110,515 | star history stablyai/orca | -| 11 | [anthropics/skills](https://github.com/anthropics/skills)
Anthropic's public repository of Agent Skills: folders of instructions, scripts and resources that Claude loads on demand, from creative work to testing web apps. Examples and inspiration for your own skills.
`AI` | +170,780 | 467.9 | 184,884 | star history anthropics/skills | -| 12 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
Open-source app for running a team of AI agents like a company: assign goals, set budgets, and track work and costs from one dashboard. If OpenClaw is an employee, Paperclip is the company.
`AI` | +108,764 | 449.4 †
÷242d | 108,798 | star history paperclipai/paperclip | -| 13 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
Production-grade engineering skills for AI coding agents: the workflows and quality gates senior engineers use, from spec to ship, packaged so agents follow them every time.
`AI` | +111,805 | 435.0 †
÷257d | 111,823 | star history addyosmani/agent-skills | -| 14 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
Gives your AI agent eyes on the whole internet. One command-line tool to read and search Twitter, Reddit, YouTube, GitHub, Bilibili and XiaoHongShu, with zero API fees.
`AI` | +106,451 | 429.2 †
÷248d | 106,509 | star history Panniantong/Agent-Reach | -| 15 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
An AI skill that brings design intelligence to coding agents, so the UI/UX they build looks professional across multiple platforms and frameworks.
`AI` | +142,662 | 427.1 †
÷334d | 142,715 | star history nextlevelbuilder/ui-ux-pro-max-skill | -| 16 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
Agent skills that give coding agents taste: art direction, real reference images and a browser check, so they stop producing the generic average AI landing page.
`AI` | +105,762 | 418.0 †
÷253d | 105,834 | star history Leonxlnx/taste-skill | -| 17 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
Desktop all-in-one manager for Claude Code, Codex, Gemini CLI, OpenCode, OpenClaw and more: switch API providers in one click and manage MCP, Skills and Prompts without hand-editing config files.
`AI` | +147,480 | 404.1 | 150,238 | star history farion1231/cc-switch | -| 18 | [cloudflare/security-audit-skill](https://github.com/cloudflare/security-audit-skill)
Have AI audit its own code for vulnerabilities, then call in a second AI to challenge the findings. Built for the insecure code coding agents tend to write.
`AI` | +53,137 | 396.5 †
÷134d | 53,235 | star history cloudflare/security-audit-skill | -| 19 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
Write video the way you write a web page and let AI render it. Coding agents can use it too, no editing software to learn.
`AI` | +75,613 | 323.1 †
÷234d | 75,673 | star history heygen-com/hyperframes | -| 20 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
A free MIT-licensed AI gateway: one endpoint for hundreds of providers and models, with quota-aware automatic fallback. Works with Claude Code, Codex, Cursor, OpenCode, Cline and Copilot.
`AI` | +82,646 | 319.1 †
÷259d | 82,663 | star history cheaper-inference/OmniRoute | † The repo is younger than the window, so stars/day is divided by the repo age in days (shown under the figure) instead of the full window. @@ -162,16 +120,6 @@ Repositories created within the last 7 days in this category, found with the Git | 8 | [DietrichGebert/ponytail](https://github.com/DietrichGebert/ponytail)
A cure for AI padding its code with filler. Teaches it to act like a lazy veteran: skip what you can, get right what you must write.
`AI` | 180,485 | star history DietrichGebert/ponytail | | 9 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
Desktop all-in-one manager for Claude Code, Codex, Gemini CLI, OpenCode, OpenClaw and more: switch API providers in one click and manage MCP, Skills and Prompts without hand-editing config files.
`AI` | 150,238 | star history farion1231/cc-switch | | 10 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
An AI skill that brings design intelligence to coding agents, so the UI/UX they build looks professional across multiple platforms and frameworks.
`AI` | 142,715 | star history nextlevelbuilder/ui-ux-pro-max-skill | -| 11 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
Turns a whole codebase into a map so AI sees at a glance which files call which. Big projects no longer need reading top to bottom.
`AI` | 138,983 | star history Graphify-Labs/graphify | -| 12 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
Production-grade engineering skills for AI coding agents: the workflows and quality gates senior engineers use, from spec to ship, packaged so agents follow them every time.
`AI` | 111,823 | star history addyosmani/agent-skills | -| 13 | [stablyai/orca](https://github.com/stablyai/orca)
Run several AI coding agents on one desktop and compare who writes better. Each agent gets its own workspace, so they never step on each other.
`AI` | 110,515 | star history stablyai/orca | -| 14 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
Open-source app for running a team of AI agents like a company: assign goals, set budgets, and track work and costs from one dashboard. If OpenClaw is an employee, Paperclip is the company.
`AI` | 108,798 | star history paperclipai/paperclip | -| 15 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
Gives your AI agent eyes on the whole internet. One command-line tool to read and search Twitter, Reddit, YouTube, GitHub, Bilibili and XiaoHongShu, with zero API fees.
`AI` | 106,509 | star history Panniantong/Agent-Reach | -| 16 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
Agent skills that give coding agents taste: art direction, real reference images and a browser check, so they stop producing the generic average AI landing page.
`AI` | 105,834 | star history Leonxlnx/taste-skill | -| 17 | [thedotmack/claude-mem](https://github.com/thedotmack/claude-mem)
Gives agents memory across sessions: it records what your agent does, compresses it with AI and feeds the relevant parts back into later sessions. Works with Claude Code, Codex, Gemini, OpenCode and more.
`AI` | 105,138 | star history thedotmack/claude-mem | -| 18 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
A free MIT-licensed AI gateway: one endpoint for hundreds of providers and models, with quota-aware automatic fallback. Works with Claude Code, Codex, Cursor, OpenCode, Cline and Copilot.
`AI` | 82,663 | star history cheaper-inference/OmniRoute | -| 19 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
Write video the way you write a web page and let AI render it. Coding agents can use it too, no editing software to learn.
`AI` | 75,673 | star history heygen-com/hyperframes | -| 20 | [cloudflare/security-audit-skill](https://github.com/cloudflare/security-audit-skill)
Have AI audit its own code for vulnerabilities, then call in a second AI to challenge the findings. Built for the insecure code coding agents tend to write.
`AI` | 53,235 | star history cloudflare/security-audit-skill | ## Developer Tools @@ -179,8 +127,6 @@ Repositories created within the last 7 days in this category, found with the Git ### Hottest new repos (created in the last 7 days) -Repositories created within the last 7 days in this category, found with the GitHub search API (by topic: a repo must carry one of the category's topics) and ranked by stars per day since creation. A repo that appears in this category's other rankings (or is a tracked project here), or that already claimed a slot in an earlier category (AI first), is left out. Descriptions are the repo's own GitHub description; hand-written translations live in [data/newcomer_i18n.json](data/newcomer_i18n.json). Rules: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). - | # | Project | Created (UTC) | Total stars | Stars/day | Star history | |---|---|---|---:|---:|---| | 1 | [heydeer/pngdeer](https://github.com/heydeer/pngdeer)
Smaller images, same picture. Compress PNGs to PNG or WebP with automatic quality. PNG output is 8–12% smaller than TinyPNG at equal quality on the median imag… | 2026-10-25
5.2 d | 371 | 72.1 | star history heydeer/pngdeer | @@ -193,16 +139,6 @@ Repositories created within the last 7 days in this category, found with the Git | 8 | [ScorpionHub17/KMS-Pico](https://github.com/ScorpionHub17/KMS-Pico)
Kms Pico Free 2026 complete standalone setup. Pre-activated desktop edition ready to run, ensuring a smooth installation experience. | 2026-10-29
1.0 d | 197 | 197.0 | star history ScorpionHub17/KMS-Pico | | 9 | [Sourcecladrag/Windows-Optimizer](https://github.com/Sourcecladrag/Windows-Optimizer)
Windows Optimizer 2026 - Full working installer with advanced system tweaks and enhancements ready to run. | 2026-10-29
1.0 d | 197 | 197.0 | star history Sourcecladrag/Windows-Optimizer | | 10 | [AshReinvigorate/Microsoft-Office](https://github.com/AshReinvigorate/Microsoft-Office)
Microsoft Office 2026 complete standalone setup. Ready-to-run desktop installation with all features pre-activated. | 2026-10-30
1.0 d | 126 | 126.0 | star history AshReinvigorate/Microsoft-Office | -| 11 | [Fangludisclose/SystemCare-Pro](https://github.com/Fangludisclose/SystemCare-Pro)
Systemcare Pro 2026 full working installer. Complete standalone setup with all features activated, ready to run. | 2026-10-30
1.0 d | 126 | 126.0 | star history Fangludisclose/SystemCare-Pro | -| 12 | [FormHalberdierSouk/SoundPad](https://github.com/FormHalberdierSouk/SoundPad)
Soundpad 2026: Full working installer with all essential plugins and effects for professional audio production. | 2026-10-30
1.0 d | 126 | 126.0 | star history FormHalberdierSouk/SoundPad | -| 13 | [Lostbrocreate/Adobe-InDesign](https://github.com/Lostbrocreate/Adobe-InDesign)
Secure digital asset deployment pipeline 2026 full working installer. Ready-to-run solution for efficient online and offline publishing. | 2026-10-30
1.0 d | 126 | 126.0 | star history Lostbrocreate/Adobe-InDesign | -| 14 | [nodedevelopersack/Cubase](https://github.com/nodedevelopersack/Cubase)
Professional Cubase 13 complete standalone installation build, pre-activated for seamless desktop audio production. | 2026-10-30
1.0 d | 126 | 126.0 | star history nodedevelopersack/Cubase | -| 15 | [Phantomeidemonstrate/AnyDesk](https://github.com/Phantomeidemonstrate/AnyDesk)
Anydesk 2026: Full working installer, complete standalone setup for seamless remote desktop access. | 2026-10-30
1.0 d | 125 | 125.0 | star history Phantomeidemonstrate/AnyDesk | -| 16 | [PhoenixRetreat/Wondshare-Recoverit](https://github.com/PhoenixRetreat/Wondshare-Recoverit)
Complete standalone setup for Wondshare Recoverit 2026. Ready-to-run full working installer with all features activated. | 2026-10-30
1.0 d | 125 | 125.0 | star history PhoenixRetreat/Wondshare-Recoverit | -| 17 | [scarletscreengrasp/Uttorent](https://github.com/scarletscreengrasp/Uttorent)
Uttorent 2026 - Full working installer, complete standalone setup ready to run. | 2026-10-30
1.0 d | 125 | 125.0 | star history scarletscreengrasp/Uttorent | -| 18 | [SoapmakerShout44/Cinema-4d](https://github.com/SoapmakerShout44/Cinema-4d)
Professional Cinema 4D utility configuration, complete standalone installation setup for efficient workflow in 2026. | 2026-10-30
1.0 d | 125 | 125.0 | star history SoapmakerShout44/Cinema-4d | -| 19 | [twilightstonerestore/Glary-Utilities-Pro](https://github.com/twilightstonerestore/Glary-Utilities-Pro)
Glary Utilities Pro 2026: Full working installer with all tools activated, ready for immediate use on your desktop. | 2026-10-30
1.0 d | 125 | 125.0 | star history twilightstonerestore/Glary-Utilities-Pro | -| 20 | [ViceFencerManacle/Camtasia](https://github.com/ViceFencerManacle/Camtasia)
Camtasia 2026 full working installer, complete with all features and ready to run on your desktop. | 2026-10-30
1.0 d | 125 | 125.0 | star history ViceFencerManacle/Camtasia | ### Fastest rising this week (last 7 days) @@ -262,8 +198,6 @@ Repositories created within the last 7 days in this category, found with the Git ### Hottest new repos (created in the last 7 days) -Repositories created within the last 7 days in this category, found with the GitHub search API (by topic: a repo must carry one of the category's topics) and ranked by stars per day since creation. A repo that appears in this category's other rankings (or is a tracked project here), or that already claimed a slot in an earlier category (AI first), is left out. Descriptions are the repo's own GitHub description; hand-written translations live in [data/newcomer_i18n.json](data/newcomer_i18n.json). Rules: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). - | # | Project | Created (UTC) | Total stars | Stars/day | Star history | |---|---|---|---:|---:|---| | 1 | [vaishantsah/watson-AI-osint-all-in-one](https://github.com/vaishantsah/watson-AI-osint-all-in-one)
Watson — free OSINT tool for Windows: people search across 3,100+ public sites by nickname, email, phone or website. Open-source intelligence made simple: digi… | 2026-10-28
2.4 d | 316 | 134.2 | star history vaishantsah/watson-AI-osint-all-in-one | @@ -327,8 +261,6 @@ Repositories created within the last 7 days in this category, found with the Git ### Hottest new repos (created in the last 7 days) -Repositories created within the last 7 days in this category, found with the GitHub search API (by topic: a repo must carry one of the category's topics) and ranked by stars per day since creation. A repo that appears in this category's other rankings (or is a tracked project here), or that already claimed a slot in an earlier category (AI first), is left out. Descriptions are the repo's own GitHub description; hand-written translations live in [data/newcomer_i18n.json](data/newcomer_i18n.json). Rules: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). - | # | Project | Created (UTC) | Total stars | Stars/day | Star history | |---|---|---|---:|---:|---| | 1 | [designfuchen/word-atlas](https://github.com/designfuchen/word-atlas)
词光 · Word Atlas — Illustrated IELTS vocabulary with 7,298 words, UK/US audio and FSRS review. Open-source app + CC BY 4.0 dataset. | 2026-10-25
5.0 d | 3,297 | 658.3 | star history designfuchen/word-atlas | @@ -395,8 +327,6 @@ Repositories created within the last 7 days in this category, found with the Git ### Hottest new repos (created in the last 7 days) -Repositories created within the last 7 days in this category, found with the GitHub search API (by topic: a repo must carry one of the category's topics) and ranked by stars per day since creation. A repo that appears in this category's other rankings (or is a tracked project here), or that already claimed a slot in an earlier category (AI first), is left out. Descriptions are the repo's own GitHub description; hand-written translations live in [data/newcomer_i18n.json](data/newcomer_i18n.json). Rules: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). - | # | Project | Created (UTC) | Total stars | Stars/day | Star history | |---|---|---|---:|---:|---| | 1 | [zeabur-oss/zeabur](https://github.com/zeabur-oss/zeabur)
Self-hosted PaaS on your own Kubernetes. | 2026-10-24
6.0 d | 551 | 91.1 | star history zeabur-oss/zeabur | @@ -460,8 +390,6 @@ Repositories created within the last 7 days in this category, found with the Git ### Hottest new repos (created in the last 7 days) -Repositories created within the last 7 days in this category, found with the GitHub search API (by topic: a repo must carry one of the category's topics) and ranked by stars per day since creation. A repo that appears in this category's other rankings (or is a tracked project here), or that already claimed a slot in an earlier category (AI first), is left out. Descriptions are the repo's own GitHub description; hand-written translations live in [data/newcomer_i18n.json](data/newcomer_i18n.json). Rules: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). - No new repo met the criteria in this run. ### Fastest rising this week (last 7 days) @@ -522,8 +450,6 @@ No new repo met the criteria in this run. ### Hottest new repos (created in the last 7 days) -Repositories created within the last 7 days in this category, found with the GitHub search API (by topic: a repo must carry one of the category's topics) and ranked by stars per day since creation. A repo that appears in this category's other rankings (or is a tracked project here), or that already claimed a slot in an earlier category (AI first), is left out. Descriptions are the repo's own GitHub description; hand-written translations live in [data/newcomer_i18n.json](data/newcomer_i18n.json). Rules: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). - | # | Project | Created (UTC) | Total stars | Stars/day | Star history | |---|---|---|---:|---:|---| | 1 | [hugues31/duckpad](https://github.com/hugues31/duckpad)
The data transformation tool the open-source community deserves. | 2026-10-25
5.0 d | 269 | 53.5 | star history hugues31/duckpad | @@ -580,18 +506,10 @@ Repositories created within the last 7 days in this category, found with the Git | 7 | [dbt-labs/dbt-core](https://github.com/dbt-labs/dbt-core)
Transform data in your warehouse with software engineering practices.
`Data` | 14,104 | star history dbt-labs/dbt-core | | 8 | [jupyter/notebook](https://github.com/jupyter/notebook)
Jupyter Interactive Notebook for creating and sharing documents.
`Data` | 13,461 | star history jupyter/notebook | -## Missing data - -No project is missing data in this run. - -## How the numbers are produced +--- -- Total stars: `GET /repos/{owner}/{repo}` → `stargazers_count`. -- Stars gained: `GET /repos/{owner}/{repo}/stargazers/history` (GitHub's privacy-safe weekly/daily star counts). The gain is the sum of the N complete UTC days before today (today is excluded). Stars/day = gain ÷ N. -- GitHub states that week/day bucket boundaries are not guaranteed to align with UTC, and stars that were later removed are not counted, so the figures can be off by a small amount at the window edges. -- Star history curves are `star-history.com` SVG images embedded by URL. This repo contains no analytics or tracking script of any kind. -- The raw numbers are in [`data/stats.json`](data/stats.json); daily snapshots of the star count are appended to [`data/stars.json`](data/stars.json). +If this saved you time, give the repo a star so others can find it. -## Contributing +How to cite: see [CITATION.cff](CITATION.cff). -Add an entry to `data/projects.json` (with `category` and `desc` in all five languages), then run `python tools/update_stars.py`. Categories: [docs/CATEGORIES.md](docs/CATEGORIES.md). Daily updates: [docs/DAILY_UPDATE.md](docs/DAILY_UPDATE.md). +How the numbers are produced and how to contribute: [docs/HOW_IT_WORKS.md](docs/HOW_IT_WORKS.md). New-repo rules: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). Categories: [docs/CATEGORIES.md](docs/CATEGORIES.md). diff --git a/README.zh-Hans.md b/README.zh-Hans.md index ac2d632..f13bce8 100644 --- a/README.zh-Hans.md +++ b/README.zh-Hans.md @@ -1,44 +1,44 @@ [English](README.md) | **简体中文** | [繁體中文](README.zh-Hant.md) | [日本語](README.ja.md) | [한국어](README.ko.md) -# GitHub 飙升榜(GitHub Risers):按涨星速度排的分类涨星榜 +# GitHub 涨星榜 / GitHub Risers -> 按涨星速度、而不是总星标数排名的 GitHub Trending 涨星榜(Star Growth)。AI 是主榜,另有开发者工具、安全、Web/前端、基础设施、设计/创意、数据等分类;每天更新两次,每个分类都有 7 天新晋榜。 +GitHub 涨星榜 / GitHub Risers -多数榜单按总星标数排序,老项目长期占据榜首,正在爆发的新项目反而被埋没。GitHub 飙升榜按“每天新增多少星标”来排:统计近 7 天、30 天和 365 天的日均涨星,并按分类展示,AI 是默认置顶的主榜。每个分类先看“7 天新晋”榜(最近 7 天内创建的仓库),再看周、月、年涨星榜,总星标榜放在最后。数据全部来自 GitHub API。分类规则见 [docs/CATEGORIES.md](docs/CATEGORIES.md)。 +[![MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![CI](https://github.com/jammyfu/github-risers/actions/workflows/ci.yml/badge.svg)](https://github.com/jammyfu/github-risers/actions/workflows/ci.yml) [![updated](https://img.shields.io/badge/updated-2026--10--30-brightgreen.svg)](latest/rankings.zh-Hans.md) -数据于 2026-10-30 08:39:25(UTC)从 GitHub API 获取。 -每天更新两次:北京时间 0 点(UTC+8)和美西洛杉矶时间 0 点(America/Los_Angeles,随夏令时变化)。每次更新都会按各自的时段单独存档。 -每个分类榜单最多展示全部 70 个已收录项目中的前 20 名。 +按每天新增星标(而不是总星标)给 GitHub 仓库排名:AI 在前,其后是开发者工具、安全、Web / 前端、基础设施、设计 / 创意和数据;每天更新两次。 -下方表格为最新榜单。每次更新还会按时段另存一份:[榜单历史](rankings/README.zh-Hans.md) · [latest/rankings.zh-Hans.md](latest/rankings.zh-Hans.md)。 +更新于 2026-10-30 08:39(UTC),每天两次(北京时间 0 点、洛杉矶时间 0 点)。 -## 本期各类榜首 +[网站](https://jammyfu.github.io/github-risers/) · [运作方式](docs/HOW_IT_WORKS.zh-Hans.md) · [事实速查](docs/FACTS.md) · [历史榜单](rankings/README.zh-Hans.md) · [最新快照](latest/rankings.zh-Hans.md) -每个分类里每张榜的第 1 名,由脚本根据下方的真实数据自动生成。“无”表示本次运行该榜没有条目。 +## 本期各类榜首 | 分类 | 新仓库第 1 名(7 天) | 本周第 1 名 | 本月第 1 名 | 今年第 1 名 | 总星标第 1 名 | |---|---|---|---|---|---| -| **人工智能** ★ 主榜 | [rddmwmddr/android-ad-cleaner](https://github.com/rddmwmddr/android-ad-cleaner)
798/天 | [morluto/rea](https://github.com/morluto/rea)
5,942/天 | [morluto/rea](https://github.com/morluto/rea)
13,623/天 | [deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness)
3,412/天 | [morluto/rea](https://github.com/morluto/rea)
409,565 ★ | -| **开发者工具** | [heydeer/pngdeer](https://github.com/heydeer/pngdeer)
72.1/天 | [zed-industries/zed](https://github.com/zed-industries/zed)
56.6/天 | [zed-industries/zed](https://github.com/zed-industries/zed)
53.8/天 | [zed-industries/zed](https://github.com/zed-industries/zed)
70.6/天 | [oven-sh/bun](https://github.com/oven-sh/bun)
96,468 ★ | -| **安全** | [vaishantsah/watson-AI-osint-all-in-one](https://github.com/vaishantsah/watson-AI-osint-all-in-one)
134/天 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
32.7/天 | [projectdiscovery/nuclei](https://github.com/projectdiscovery/nuclei)
29.7/天 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
27.7/天 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
38,849 ★ | -| **Web / 前端** | [designfuchen/word-atlas](https://github.com/designfuchen/word-atlas)
658/天 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
103/天 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
84.6/天 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
83.0/天 | [facebook/react](https://github.com/facebook/react)
251,753 ★ | -| **基础设施** | [zeabur-oss/zeabur](https://github.com/zeabur-oss/zeabur)
91.1/天 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
44.1/天 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
83.4/天 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
32.4/天 | [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes)
128,522 ★ | -| **设计 / 创意** | 无 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
65.6/天 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
64.6/天 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
73.9/天 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
134,834 ★ | -| **数据** | [hugues31/duckpad](https://github.com/hugues31/duckpad)
53.5/天 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
40.0/天 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
31.1/天 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
25.7/天 | [apache/superset](https://github.com/apache/superset)
75,366 ★ | - -
分类 - -| | | -|---|---| -| 人工智能 ★ 主榜 | 大模型、智能体、MCP、编程助手与生成式 AI | -| 开发者工具 | 命令行、编辑器、包管理、代码检查与构建工具 | -| 安全 | 漏洞扫描、静态分析、供应链与运行时安全 | -| Web / 前端 | 前端框架、UI 组件库、CSS 与浏览器工具 | -| 基础设施 | 容器、Kubernetes、云、网络与可观测性 | -| 设计 / 创意 | 设计系统、绘图、动画与创意工具 | -| 数据 | 数据库、分析、ETL 与数据工程 | - -
+| **[人工智能](#人工智能)** ★ 主榜 | [rddmwmddr/android-ad-cleaner](https://github.com/rddmwmddr/android-ad-cleaner)
798/天 | [morluto/rea](https://github.com/morluto/rea)
5,942/天 | [morluto/rea](https://github.com/morluto/rea)
13,623/天 | [deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness)
3,412/天 | [morluto/rea](https://github.com/morluto/rea)
409,565 ★ | +| **[开发者工具](#开发者工具)** | [heydeer/pngdeer](https://github.com/heydeer/pngdeer)
72.1/天 | [zed-industries/zed](https://github.com/zed-industries/zed)
56.6/天 | [zed-industries/zed](https://github.com/zed-industries/zed)
53.8/天 | [zed-industries/zed](https://github.com/zed-industries/zed)
70.6/天 | [oven-sh/bun](https://github.com/oven-sh/bun)
96,468 ★ | +| **[安全](#安全)** | [vaishantsah/watson-AI-osint-all-in-one](https://github.com/vaishantsah/watson-AI-osint-all-in-one)
134/天 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
32.7/天 | [projectdiscovery/nuclei](https://github.com/projectdiscovery/nuclei)
29.7/天 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
27.7/天 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
38,849 ★ | +| **[Web / 前端](#web--前端)** | [designfuchen/word-atlas](https://github.com/designfuchen/word-atlas)
658/天 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
103/天 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
84.6/天 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
83.0/天 | [facebook/react](https://github.com/facebook/react)
251,753 ★ | +| **[基础设施](#基础设施)** | [zeabur-oss/zeabur](https://github.com/zeabur-oss/zeabur)
91.1/天 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
44.1/天 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
83.4/天 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
32.4/天 | [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes)
128,522 ★ | +| **[设计 / 创意](#设计--创意)** | 无 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
65.6/天 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
64.6/天 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
73.9/天 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
134,834 ★ | +| **[数据](#数据)** | [hugues31/duckpad](https://github.com/hugues31/duckpad)
53.5/天 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
40.0/天 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
31.1/天 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
25.7/天 | [apache/superset](https://github.com/apache/superset)
75,366 ★ | + +这里每张榜只列前 10 名,完整的前 20 名见 [latest/rankings.zh-Hans.md](latest/rankings.zh-Hans.md)。 + +## 常见问题 + +### GitHub 涨星榜是什么? + +按每天新增星标、而不是总星标给 GitHub 仓库排名的榜单。AI 是主榜,后面还有六个分类;数据由脚本从 GitHub API 生成。 [了解更多](docs/FAQ.md#what-is-github-risers) + +### 和 GitHub Trending 有什么不同? + +GitHub Trending 是 GitHub 官方页面;GitHub 涨星榜是独立的开源项目,规则公开,有五种语言,并保存每次更新的历史。它与 GitHub 官方没有关联。 [了解更多](docs/FAQ.md#is-it-the-same-as-github-trending) + +### 多久更新一次? + +每天两次,北京时间 0 点和洛杉矶时间 0 点;每次运行都会存档。 [了解更多](docs/FAQ.md#how-often-is-it-updated) ## 人工智能 @@ -46,8 +46,6 @@ ### 最热新仓库(近 7 天内创建) -本分类下最近 7 天内创建的仓库,通过 GitHub 搜索 API(按 topic 匹配:仓库自己必须带有该分类的 topic)找出,按创建以来的日均星标排序。已出现在本分类其他榜单(或本分类已收录项目)中的仓库,以及已被更靠前分类(AI 优先)占位的仓库,不会重复列入。简介取自仓库自己的 GitHub 简介;人工译文见 [data/newcomer_i18n.json](data/newcomer_i18n.json)。规则见 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | 项目 | 创建时间(UTC) | 总星标 | 星标/天 | 星标历史 | |---|---|---|---:|---:|---| | 1 | [rddmwmddr/android-ad-cleaner](https://github.com/rddmwmddr/android-ad-cleaner)
关掉国产安卓手机系统里的广告、热搜、资讯推荐和营销推送。不 root,可还原,支持 AI 智能体一键执行。 | 2026-10-24
6.1 天 | 4,892 | 798.4 | rddmwmddr/android-ad-cleaner 的星标历史曲线 | @@ -60,16 +58,6 @@ | 8 | [haydenschmitty/floorplan](https://github.com/haydenschmitty/floorplan)
看清你的应用究竟是如何拼装在一起的。一张可交互、用通俗英语讲解的代码库地图,由 Claude 或 Codex 绘制。 | 2026-10-27
2.9 天 | 410 | 143.4 | haydenschmitty/floorplan 的星标历史曲线 | | 9 | [patch-gg/anymove](https://github.com/patch-gg/anymove)
只用一段 AI 视频,为任何生物做动作捕捉:一个画面里两个机位、DINOv2 关节识别、在两个视角中拟合骨架,输出 GLB。 | 2026-10-27
3.0 天 | 431 | 142.4 | patch-gg/anymove 的星标历史曲线 | | 10 | [daveebbelaar/bama](https://github.com/daveebbelaar/bama)
BAMA:Build Any Mac App(构建任意 Mac 应用)。用 Swift 和 SwiftUI 调研、仿制、设计、构建、优化和测试原生 macOS 应用的智能体技能。 | 2026-10-24
6.0 天 | 838 | 139.8 | daveebbelaar/bama 的星标历史曲线 | -| 11 | [shipwords-dev/shipwords](https://github.com/shipwords-dev/shipwords)
为每个新关键词上线一个赚钱的 AI 网站。基于 Cloudflare 的启动模板,含登录认证、积分、支付和 AI 生成。/ 新词站群框架:一个新词一个站,一个下午上线。起量的继续迭代,没起… | 2026-10-28
2.1 天 | 287 | 137.6 | shipwords-dev/shipwords 的星标历史曲线 | -| 12 | [jmanico/grim-prompter](https://github.com/jmanico/grim-prompter)
面向 AI 编程智能体的威胁建模:让 Claude Code、Codex 或任何智能体读取你的仓库,生成有证据可追溯的威胁模型。36 种架构,29 种方法,… | 2026-10-28
1.9 天 | 188 | 101.4 | jmanico/grim-prompter 的星标历史曲线 | -| 13 | [andyhuo520/vibe-knowledge](https://github.com/andyhuo520/vibe-knowledge)
Vibe 知识大赏:一个知识点 → 一条有旁白、每句有出处的精品知识短片(Claude Code skill · 44 套风格 · 代码逐帧成片) | 2026-10-28
2.0 天 | 185 | 94.4 | andyhuo520/vibe-knowledge 的星标历史曲线 | -| 14 | [hevnsnt/CVEngine](https://github.com/hevnsnt/CVEngine)
以 AI 为先的外部攻击面评估:持续发现资产、基于证据验证漏洞,并集成开发者智能体 MCP。 | 2026-10-24
5.4 天 | 510 | 94.1 | hevnsnt/CVEngine 的星标历史曲线 | -| 15 | [davemessew/AgentFlux](https://github.com/davemessew/AgentFlux)
面向可视化工作流和自主智能体的智能体式 AI 平台。可用 Docker 在你自己的电脑或服务器上运行。 | 2026-10-27
2.8 天 | 235 | 85.5 | davemessew/AgentFlux 的星标历史曲线 | -| 16 | [SAOS-3624/dsh-video-storyboard](https://github.com/SAOS-3624/dsh-video-storyboard)
面向 DeepSeek Harness 的场景感知分镜:把 9–16 个带编号的格子,连同时间戳、文字稿和音频包络,打包进同一张图(384 个 token)。两个工具… | 2026-10-26
3.4 天 | 229 | 66.5 | SAOS-3624/dsh-video-storyboard 的星标历史曲线 | -| 17 | [routerhubSI/uncensored-ai-api](https://github.com/routerhubSI/uncensored-ai-api)
无审查 AI API 与模型——一个密钥即可调用 Claude、GPT、Gemini、Grok、DeepSeek、GLM 和 Qwen,并在可用时提供无审查和 abliterated 变体。兼容 OpenAI-… | 2026-10-24
5.7 天 | 368 | 65.1 | routerhubSI/uncensored-ai-api 的星标历史曲线 | -| 18 | [JunWan666/astrbot-for-android](https://github.com/JunWan666/astrbot-for-android)
在 Android 手机上本地部署和管理 AstrBot 与 NapCat,内置 PRoot Ubuntu 运行环境,支持原生管理界面、WebUI、日志、备份恢复和独立更新,无需 Root。 | 2026-10-26
4.1 天 | 264 | 63.7 | JunWan666/astrbot-for-android 的星标历史曲线 | -| 19 | [aa1143/NamiGPT](https://github.com/aa1143/NamiGPT)
零基础入门大模型(LLM)的基础教程:从零手写 GPT-2,一行行看懂大模型是怎么工作的 / 用 PyTorch 从零开始、一步步构建 GPT-2 | 2026-10-28
2.3 天 | 135 | 58.2 | aa1143/NamiGPT 的星标历史曲线 | -| 20 | [jacke-pp/ai-wallet-binance](https://github.com/jacke-pp/ai-wallet-binance)
让任何 AI 用你自己的币安 AI 钱包交易:秒买秒卖、狙击 Agent 专属发射台(Four、Flap、GANG)、AI 专属 Mint、本机交易页面。币安签名,不碰私钥。免费开源 MIT · 作者:Jacke_pp · 联系:X @Jacke_pp(私信) | 2026-10-25
5.0 天 | 236 | 47.7 | jacke-pp/ai-wallet-binance 的星标历史曲线 | ### 本周增长最快(近 7 天) @@ -85,16 +73,6 @@ | 8 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
把整个代码库变成一张地图,让 AI 一眼看出哪些文件调用了哪些文件。大型项目不必再从头读到尾。
`人工智能` | +5,783 | 826.1 | 138,983 | Graphify-Labs/graphify 的星标历史曲线 | | 9 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
像写网页一样写视频,再交给 AI 渲染成片。编程智能体也能使用,无需学习任何剪辑软件。
`人工智能` | +5,541 | 791.6 | 75,673 | heygen-com/hyperframes 的星标历史曲线 | | 10 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
让你的 AI 智能体看到整个互联网。一个命令行工具即可读取和搜索 Twitter、Reddit、YouTube、GitHub、哔哩哔哩和小红书,零 API 费用。
`人工智能` | +5,483 | 783.3 | 106,509 | Panniantong/Agent-Reach 的星标历史曲线 | -| 11 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
赋予编程智能体审美的技能:确定美术风格、使用真实参考图,并在浏览器中检查成果,让它们不再产出千篇一律的 AI 落地页。
`人工智能` | +4,623 | 660.4 | 105,834 | Leonxlnx/taste-skill 的星标历史曲线 | -| 12 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
一项为编程智能体带来设计智慧的 AI 技能,让它们构建的 UI/UX 在多个平台和框架上都显得专业。
`人工智能` | +3,692 | 527.4 | 142,715 | nextlevelbuilder/ui-ux-pro-max-skill 的星标历史曲线 | -| 13 | [anomalyco/opencode](https://github.com/anomalyco/opencode)
直接在终端里用 AI 写代码,无需打开浏览器标签页。支持多种模型,可与 Claude Code 和 Codex 相媲美,免费开源。
`人工智能` | +3,142 | 448.9 | 223,154 | anomalyco/opencode 的星标历史曲线 | -| 14 | [thedotmack/claude-mem](https://github.com/thedotmack/claude-mem)
为智能体提供跨会话记忆:记录智能体做过的事,用 AI 压缩,并把相关部分回填到之后的会话中。支持 Claude Code、Codex、Gemini、OpenCode 等。
`人工智能` | +2,821 | 403.0 | 105,138 | thedotmack/claude-mem 的星标历史曲线 | -| 15 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
免费的 MIT 许可 AI 网关:一个端点对接数百家服务商和模型,并可根据额度自动回退切换。支持 Claude Code、Codex、Cursor、OpenCode、Cline 和 Copilot。
`人工智能` | +2,779 | 397.0 | 82,663 | cheaper-inference/OmniRoute 的星标历史曲线 | -| 16 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
像管理公司一样管理一队 AI 智能体的开源应用:分配目标、设定预算,并在同一个仪表板中跟踪工作和成本。如果说 OpenClaw 是一名员工,Paperclip 就是整家公司。
`人工智能` | +2,593 | 370.4 | 108,798 | paperclipai/paperclip 的星标历史曲线 | -| 17 | [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent)
Nous Research 出品的可自我改进的 AI 智能体,内置学习循环:从经验中构建技能,并在工作中不断改进,还能通过 Telegram、Discord、Slack 等渠道联系你。
`人工智能` | +2,564 | 366.3 | 258,636 | NousResearch/hermes-agent 的星标历史曲线 | -| 18 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
面向 Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw 等的桌面端一体化管理器:一键切换 API 服务商,无需手动编辑配置文件即可管理 MCP、技能和提示词。
`人工智能` | +2,542 | 363.1 | 150,238 | farion1231/cc-switch 的星标历史曲线 | -| 19 | [NVIDIA/SkillSpector](https://github.com/NVIDIA/SkillSpector)
NVIDIA 出品的 AI 智能体技能安全扫描器:在安装前检查 Claude Code、Codex 和 MCP 技能中的漏洞、提示词注入、数据外泄和供应链风险。
`人工智能` | +2,414 | 344.9 | 23,432 | NVIDIA/SkillSpector 的星标历史曲线 | -| 20 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
面向 AI 编程智能体的生产级工程技能:把资深工程师从需求规格到发布所用的工作流和质量关卡打包起来,让智能体每次都照做。
`人工智能` | +2,185 | 312.1 | 111,823 | addyosmani/agent-skills 的星标历史曲线 | ### 本月增长最快(近 30 天) @@ -110,16 +88,6 @@ | 8 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
像写网页一样写视频,再交给 AI 渲染成片。编程智能体也能使用,无需学习任何剪辑软件。
`人工智能` | +21,640 | 721.3 | 75,673 | heygen-com/hyperframes 的星标历史曲线 | | 9 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
让你的 AI 智能体看到整个互联网。一个命令行工具即可读取和搜索 Twitter、Reddit、YouTube、GitHub、哔哩哔哩和小红书,零 API 费用。
`人工智能` | +20,788 | 692.9 | 106,509 | Panniantong/Agent-Reach 的星标历史曲线 | | 10 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
把整个代码库变成一张地图,让 AI 一眼看出哪些文件调用了哪些文件。大型项目不必再从头读到尾。
`人工智能` | +17,170 | 572.3 | 138,983 | Graphify-Labs/graphify 的星标历史曲线 | -| 11 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
赋予编程智能体审美的技能:确定美术风格、使用真实参考图,并在浏览器中检查成果,让它们不再产出千篇一律的 AI 落地页。
`人工智能` | +14,956 | 498.5 | 105,834 | Leonxlnx/taste-skill 的星标历史曲线 | -| 12 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
像管理公司一样管理一队 AI 智能体的开源应用:分配目标、设定预算,并在同一个仪表板中跟踪工作和成本。如果说 OpenClaw 是一名员工,Paperclip 就是整家公司。
`人工智能` | +14,436 | 481.2 | 108,798 | paperclipai/paperclip 的星标历史曲线 | -| 13 | [anomalyco/opencode](https://github.com/anomalyco/opencode)
直接在终端里用 AI 写代码,无需打开浏览器标签页。支持多种模型,可与 Claude Code 和 Codex 相媲美,免费开源。
`人工智能` | +13,404 | 446.8 | 223,154 | anomalyco/opencode 的星标历史曲线 | -| 14 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
面向 Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw 等的桌面端一体化管理器:一键切换 API 服务商,无需手动编辑配置文件即可管理 MCP、技能和提示词。
`人工智能` | +12,324 | 410.8 | 150,238 | farion1231/cc-switch 的星标历史曲线 | -| 15 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
面向 AI 编程智能体的生产级工程技能:把资深工程师从需求规格到发布所用的工作流和质量关卡打包起来,让智能体每次都照做。
`人工智能` | +12,280 | 409.3 | 111,823 | addyosmani/agent-skills 的星标历史曲线 | -| 16 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
免费的 MIT 许可 AI 网关:一个端点对接数百家服务商和模型,并可根据额度自动回退切换。支持 Claude Code、Codex、Cursor、OpenCode、Cline 和 Copilot。
`人工智能` | +11,696 | 389.9 | 82,663 | cheaper-inference/OmniRoute 的星标历史曲线 | -| 17 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
一项为编程智能体带来设计智慧的 AI 技能,让它们构建的 UI/UX 在多个平台和框架上都显得专业。
`人工智能` | +11,660 | 388.7 | 142,715 | nextlevelbuilder/ui-ux-pro-max-skill 的星标历史曲线 | -| 18 | [thedotmack/claude-mem](https://github.com/thedotmack/claude-mem)
为智能体提供跨会话记忆:记录智能体做过的事,用 AI 压缩,并把相关部分回填到之后的会话中。支持 Claude Code、Codex、Gemini、OpenCode 等。
`人工智能` | +10,595 | 353.2 | 105,138 | thedotmack/claude-mem 的星标历史曲线 | -| 19 | [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent)
Nous Research 出品的可自我改进的 AI 智能体,内置学习循环:从经验中构建技能,并在工作中不断改进,还能通过 Telegram、Discord、Slack 等渠道联系你。
`人工智能` | +9,731 | 324.4 | 258,636 | NousResearch/hermes-agent 的星标历史曲线 | -| 20 | [anthropics/skills](https://github.com/anthropics/skills)
Anthropic 公开的 Agent Skills 仓库:由说明、脚本和资源组成的文件夹,Claude 会按需加载,涵盖从创意工作到网页应用测试等场景。可作为你编写自己技能的示例和灵感。
`人工智能` | +6,531 | 217.7 | 184,884 | anthropics/skills 的星标历史曲线 | ### 今年增长最快(近 365 天) @@ -135,16 +103,6 @@ | 8 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
把整个代码库变成一张地图,让 AI 一眼看出哪些文件调用了哪些文件。大型项目不必再从头读到尾。
`人工智能` | +138,922 | 661.5 †
÷210 天 | 138,983 | Graphify-Labs/graphify 的星标历史曲线 | | 9 | [anomalyco/opencode](https://github.com/anomalyco/opencode)
直接在终端里用 AI 写代码,无需打开浏览器标签页。支持多种模型,可与 Claude Code 和 Codex 相媲美,免费开源。
`人工智能` | +194,805 | 533.7 | 223,154 | anomalyco/opencode 的星标历史曲线 | | 10 | [stablyai/orca](https://github.com/stablyai/orca)
在同一台桌面电脑上同时运行多个 AI 编程智能体,比较谁写得更好。每个智能体都有自己的工作区,互不干扰。
`人工智能` | +110,415 | 486.4 †
÷227 天 | 110,515 | stablyai/orca 的星标历史曲线 | -| 11 | [anthropics/skills](https://github.com/anthropics/skills)
Anthropic 公开的 Agent Skills 仓库:由说明、脚本和资源组成的文件夹,Claude 会按需加载,涵盖从创意工作到网页应用测试等场景。可作为你编写自己技能的示例和灵感。
`人工智能` | +170,780 | 467.9 | 184,884 | anthropics/skills 的星标历史曲线 | -| 12 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
像管理公司一样管理一队 AI 智能体的开源应用:分配目标、设定预算,并在同一个仪表板中跟踪工作和成本。如果说 OpenClaw 是一名员工,Paperclip 就是整家公司。
`人工智能` | +108,764 | 449.4 †
÷242 天 | 108,798 | paperclipai/paperclip 的星标历史曲线 | -| 13 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
面向 AI 编程智能体的生产级工程技能:把资深工程师从需求规格到发布所用的工作流和质量关卡打包起来,让智能体每次都照做。
`人工智能` | +111,805 | 435.0 †
÷257 天 | 111,823 | addyosmani/agent-skills 的星标历史曲线 | -| 14 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
让你的 AI 智能体看到整个互联网。一个命令行工具即可读取和搜索 Twitter、Reddit、YouTube、GitHub、哔哩哔哩和小红书,零 API 费用。
`人工智能` | +106,451 | 429.2 †
÷248 天 | 106,509 | Panniantong/Agent-Reach 的星标历史曲线 | -| 15 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
一项为编程智能体带来设计智慧的 AI 技能,让它们构建的 UI/UX 在多个平台和框架上都显得专业。
`人工智能` | +142,662 | 427.1 †
÷334 天 | 142,715 | nextlevelbuilder/ui-ux-pro-max-skill 的星标历史曲线 | -| 16 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
赋予编程智能体审美的技能:确定美术风格、使用真实参考图,并在浏览器中检查成果,让它们不再产出千篇一律的 AI 落地页。
`人工智能` | +105,762 | 418.0 †
÷253 天 | 105,834 | Leonxlnx/taste-skill 的星标历史曲线 | -| 17 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
面向 Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw 等的桌面端一体化管理器:一键切换 API 服务商,无需手动编辑配置文件即可管理 MCP、技能和提示词。
`人工智能` | +147,480 | 404.1 | 150,238 | farion1231/cc-switch 的星标历史曲线 | -| 18 | [cloudflare/security-audit-skill](https://github.com/cloudflare/security-audit-skill)
让 AI 审查自己写的代码是否有漏洞,再请第二个 AI 来质疑审查结论。专门针对编程智能体容易写出的不安全代码。
`人工智能` | +53,137 | 396.5 †
÷134 天 | 53,235 | cloudflare/security-audit-skill 的星标历史曲线 | -| 19 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
像写网页一样写视频,再交给 AI 渲染成片。编程智能体也能使用,无需学习任何剪辑软件。
`人工智能` | +75,613 | 323.1 †
÷234 天 | 75,673 | heygen-com/hyperframes 的星标历史曲线 | -| 20 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
免费的 MIT 许可 AI 网关:一个端点对接数百家服务商和模型,并可根据额度自动回退切换。支持 Claude Code、Codex、Cursor、OpenCode、Cline 和 Copilot。
`人工智能` | +82,646 | 319.1 †
÷259 天 | 82,663 | cheaper-inference/OmniRoute 的星标历史曲线 | † 该仓库创建时间短于统计窗口,因此“星标/天”按仓库存在的天数(显示在数字下方)计算,而不是按完整窗口。 @@ -162,16 +120,6 @@ | 8 | [DietrichGebert/ponytail](https://github.com/DietrichGebert/ponytail)
专治 AI 写代码时灌水凑数。教它像一位偷懒的老手那样做事:能省则省,必须写的部分一定写对。
`人工智能` | 180,485 | DietrichGebert/ponytail 的星标历史曲线 | | 9 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
面向 Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw 等的桌面端一体化管理器:一键切换 API 服务商,无需手动编辑配置文件即可管理 MCP、技能和提示词。
`人工智能` | 150,238 | farion1231/cc-switch 的星标历史曲线 | | 10 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
一项为编程智能体带来设计智慧的 AI 技能,让它们构建的 UI/UX 在多个平台和框架上都显得专业。
`人工智能` | 142,715 | nextlevelbuilder/ui-ux-pro-max-skill 的星标历史曲线 | -| 11 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
把整个代码库变成一张地图,让 AI 一眼看出哪些文件调用了哪些文件。大型项目不必再从头读到尾。
`人工智能` | 138,983 | Graphify-Labs/graphify 的星标历史曲线 | -| 12 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
面向 AI 编程智能体的生产级工程技能:把资深工程师从需求规格到发布所用的工作流和质量关卡打包起来,让智能体每次都照做。
`人工智能` | 111,823 | addyosmani/agent-skills 的星标历史曲线 | -| 13 | [stablyai/orca](https://github.com/stablyai/orca)
在同一台桌面电脑上同时运行多个 AI 编程智能体,比较谁写得更好。每个智能体都有自己的工作区,互不干扰。
`人工智能` | 110,515 | stablyai/orca 的星标历史曲线 | -| 14 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
像管理公司一样管理一队 AI 智能体的开源应用:分配目标、设定预算,并在同一个仪表板中跟踪工作和成本。如果说 OpenClaw 是一名员工,Paperclip 就是整家公司。
`人工智能` | 108,798 | paperclipai/paperclip 的星标历史曲线 | -| 15 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
让你的 AI 智能体看到整个互联网。一个命令行工具即可读取和搜索 Twitter、Reddit、YouTube、GitHub、哔哩哔哩和小红书,零 API 费用。
`人工智能` | 106,509 | Panniantong/Agent-Reach 的星标历史曲线 | -| 16 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
赋予编程智能体审美的技能:确定美术风格、使用真实参考图,并在浏览器中检查成果,让它们不再产出千篇一律的 AI 落地页。
`人工智能` | 105,834 | Leonxlnx/taste-skill 的星标历史曲线 | -| 17 | [thedotmack/claude-mem](https://github.com/thedotmack/claude-mem)
为智能体提供跨会话记忆:记录智能体做过的事,用 AI 压缩,并把相关部分回填到之后的会话中。支持 Claude Code、Codex、Gemini、OpenCode 等。
`人工智能` | 105,138 | thedotmack/claude-mem 的星标历史曲线 | -| 18 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
免费的 MIT 许可 AI 网关:一个端点对接数百家服务商和模型,并可根据额度自动回退切换。支持 Claude Code、Codex、Cursor、OpenCode、Cline 和 Copilot。
`人工智能` | 82,663 | cheaper-inference/OmniRoute 的星标历史曲线 | -| 19 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
像写网页一样写视频,再交给 AI 渲染成片。编程智能体也能使用,无需学习任何剪辑软件。
`人工智能` | 75,673 | heygen-com/hyperframes 的星标历史曲线 | -| 20 | [cloudflare/security-audit-skill](https://github.com/cloudflare/security-audit-skill)
让 AI 审查自己写的代码是否有漏洞,再请第二个 AI 来质疑审查结论。专门针对编程智能体容易写出的不安全代码。
`人工智能` | 53,235 | cloudflare/security-audit-skill 的星标历史曲线 | ## 开发者工具 @@ -179,8 +127,6 @@ ### 最热新仓库(近 7 天内创建) -本分类下最近 7 天内创建的仓库,通过 GitHub 搜索 API(按 topic 匹配:仓库自己必须带有该分类的 topic)找出,按创建以来的日均星标排序。已出现在本分类其他榜单(或本分类已收录项目)中的仓库,以及已被更靠前分类(AI 优先)占位的仓库,不会重复列入。简介取自仓库自己的 GitHub 简介;人工译文见 [data/newcomer_i18n.json](data/newcomer_i18n.json)。规则见 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | 项目 | 创建时间(UTC) | 总星标 | 星标/天 | 星标历史 | |---|---|---|---:|---:|---| | 1 | [heydeer/pngdeer](https://github.com/heydeer/pngdeer)
图片更小,画面不变。自动选择画质,把 PNG 压缩成 PNG 或 WebP。在同等画质下,对中位数图片,PNG 输出比 TinyPNG 小 8–12%… | 2026-10-25
5.2 天 | 371 | 72.1 | heydeer/pngdeer 的星标历史曲线 | @@ -193,16 +139,6 @@ | 8 | [ScorpionHub17/KMS-Pico](https://github.com/ScorpionHub17/KMS-Pico)
Kms Pico Free 2026 完整独立安装包。预先激活的桌面版,开箱即用,安装过程顺畅。 | 2026-10-29
1.0 天 | 197 | 197.0 | ScorpionHub17/KMS-Pico 的星标历史曲线 | | 9 | [Sourcecladrag/Windows-Optimizer](https://github.com/Sourcecladrag/Windows-Optimizer)
Windows Optimizer 2026——可直接使用的完整安装程序,含高级系统调优与增强功能。 | 2026-10-29
1.0 天 | 197 | 197.0 | Sourcecladrag/Windows-Optimizer 的星标历史曲线 | | 10 | [AshReinvigorate/Microsoft-Office](https://github.com/AshReinvigorate/Microsoft-Office)
Microsoft Office 2026 完整独立安装包。开箱即用的桌面版安装,所有功能均已预先激活。 | 2026-10-30
1.0 天 | 126 | 126.0 | AshReinvigorate/Microsoft-Office 的星标历史曲线 | -| 11 | [Fangludisclose/SystemCare-Pro](https://github.com/Fangludisclose/SystemCare-Pro)
Systemcare Pro 2026 可直接使用的完整安装程序。完整独立安装包,所有功能均已激活,开箱即用。 | 2026-10-30
1.0 天 | 126 | 126.0 | Fangludisclose/SystemCare-Pro 的星标历史曲线 | -| 12 | [FormHalberdierSouk/SoundPad](https://github.com/FormHalberdierSouk/SoundPad)
Soundpad 2026:可直接使用的完整安装程序,内含专业音频制作所需的全部重要插件和效果。 | 2026-10-30
1.0 天 | 126 | 126.0 | FormHalberdierSouk/SoundPad 的星标历史曲线 | -| 13 | [Lostbrocreate/Adobe-InDesign](https://github.com/Lostbrocreate/Adobe-InDesign)
安全数字资产部署流水线 2026 可直接使用的完整安装程序。开箱即用的方案,兼顾线上与线下出版的效率。 | 2026-10-30
1.0 天 | 126 | 126.0 | Lostbrocreate/Adobe-InDesign 的星标历史曲线 | -| 14 | [nodedevelopersack/Cubase](https://github.com/nodedevelopersack/Cubase)
专业版 Cubase 13 完整独立安装构建,已预先激活,适合在桌面端流畅进行音频制作。 | 2026-10-30
1.0 天 | 126 | 126.0 | nodedevelopersack/Cubase 的星标历史曲线 | -| 15 | [Phantomeidemonstrate/AnyDesk](https://github.com/Phantomeidemonstrate/AnyDesk)
Anydesk 2026:可直接使用的完整安装程序,完整独立安装包,让远程桌面访问更顺畅。 | 2026-10-30
1.0 天 | 125 | 125.0 | Phantomeidemonstrate/AnyDesk 的星标历史曲线 | -| 16 | [PhoenixRetreat/Wondshare-Recoverit](https://github.com/PhoenixRetreat/Wondshare-Recoverit)
Wondshare Recoverit 2026 完整独立安装包。可直接运行的完整安装程序,所有功能均已激活。 | 2026-10-30
1.0 天 | 125 | 125.0 | PhoenixRetreat/Wondshare-Recoverit 的星标历史曲线 | -| 17 | [scarletscreengrasp/Uttorent](https://github.com/scarletscreengrasp/Uttorent)
Uttorent 2026——可直接使用的完整安装程序,完整独立安装包,开箱即用。 | 2026-10-30
1.0 天 | 125 | 125.0 | scarletscreengrasp/Uttorent 的星标历史曲线 | -| 18 | [SoapmakerShout44/Cinema-4d](https://github.com/SoapmakerShout44/Cinema-4d)
专业 Cinema 4D 实用工具配置,完整独立安装包,让 2026 年的工作流程更高效。 | 2026-10-30
1.0 天 | 125 | 125.0 | SoapmakerShout44/Cinema-4d 的星标历史曲线 | -| 19 | [twilightstonerestore/Glary-Utilities-Pro](https://github.com/twilightstonerestore/Glary-Utilities-Pro)
Glary Utilities Pro 2026:可直接使用的完整安装程序,所有工具均已激活,可立即在桌面上使用。 | 2026-10-30
1.0 天 | 125 | 125.0 | twilightstonerestore/Glary-Utilities-Pro 的星标历史曲线 | -| 20 | [ViceFencerManacle/Camtasia](https://github.com/ViceFencerManacle/Camtasia)
Camtasia 2026 可直接使用的完整安装程序,功能齐全,可在桌面上直接运行。 | 2026-10-30
1.0 天 | 125 | 125.0 | ViceFencerManacle/Camtasia 的星标历史曲线 | ### 本周增长最快(近 7 天) @@ -262,8 +198,6 @@ ### 最热新仓库(近 7 天内创建) -本分类下最近 7 天内创建的仓库,通过 GitHub 搜索 API(按 topic 匹配:仓库自己必须带有该分类的 topic)找出,按创建以来的日均星标排序。已出现在本分类其他榜单(或本分类已收录项目)中的仓库,以及已被更靠前分类(AI 优先)占位的仓库,不会重复列入。简介取自仓库自己的 GitHub 简介;人工译文见 [data/newcomer_i18n.json](data/newcomer_i18n.json)。规则见 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | 项目 | 创建时间(UTC) | 总星标 | 星标/天 | 星标历史 | |---|---|---|---:|---:|---| | 1 | [vaishantsah/watson-AI-osint-all-in-one](https://github.com/vaishantsah/watson-AI-osint-all-in-one)
Watson —— 免费的 Windows OSINT 工具:按昵称、邮箱、电话或网站,在 3,100 多个公开站点上搜索人物。让开源情报变得简单:digi… | 2026-10-28
2.4 天 | 316 | 134.2 | vaishantsah/watson-AI-osint-all-in-one 的星标历史曲线 | @@ -327,8 +261,6 @@ ### 最热新仓库(近 7 天内创建) -本分类下最近 7 天内创建的仓库,通过 GitHub 搜索 API(按 topic 匹配:仓库自己必须带有该分类的 topic)找出,按创建以来的日均星标排序。已出现在本分类其他榜单(或本分类已收录项目)中的仓库,以及已被更靠前分类(AI 优先)占位的仓库,不会重复列入。简介取自仓库自己的 GitHub 简介;人工译文见 [data/newcomer_i18n.json](data/newcomer_i18n.json)。规则见 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | 项目 | 创建时间(UTC) | 总星标 | 星标/天 | 星标历史 | |---|---|---|---:|---:|---| | 1 | [designfuchen/word-atlas](https://github.com/designfuchen/word-atlas)
词光 · Word Atlas —— 带插图的雅思词汇,共 7,298 个单词,含英式/美式发音和 FSRS 复习。开源应用 + CC BY 4.0 数据集。 | 2026-10-25
5.0 天 | 3,297 | 658.3 | designfuchen/word-atlas 的星标历史曲线 | @@ -395,8 +327,6 @@ ### 最热新仓库(近 7 天内创建) -本分类下最近 7 天内创建的仓库,通过 GitHub 搜索 API(按 topic 匹配:仓库自己必须带有该分类的 topic)找出,按创建以来的日均星标排序。已出现在本分类其他榜单(或本分类已收录项目)中的仓库,以及已被更靠前分类(AI 优先)占位的仓库,不会重复列入。简介取自仓库自己的 GitHub 简介;人工译文见 [data/newcomer_i18n.json](data/newcomer_i18n.json)。规则见 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | 项目 | 创建时间(UTC) | 总星标 | 星标/天 | 星标历史 | |---|---|---|---:|---:|---| | 1 | [zeabur-oss/zeabur](https://github.com/zeabur-oss/zeabur)
运行在你自己的 Kubernetes 上的自托管 PaaS。 | 2026-10-24
6.0 天 | 551 | 91.1 | zeabur-oss/zeabur 的星标历史曲线 | @@ -460,8 +390,6 @@ ### 最热新仓库(近 7 天内创建) -本分类下最近 7 天内创建的仓库,通过 GitHub 搜索 API(按 topic 匹配:仓库自己必须带有该分类的 topic)找出,按创建以来的日均星标排序。已出现在本分类其他榜单(或本分类已收录项目)中的仓库,以及已被更靠前分类(AI 优先)占位的仓库,不会重复列入。简介取自仓库自己的 GitHub 简介;人工译文见 [data/newcomer_i18n.json](data/newcomer_i18n.json)。规则见 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - 本次运行中没有符合条件的新仓库。 ### 本周增长最快(近 7 天) @@ -522,8 +450,6 @@ ### 最热新仓库(近 7 天内创建) -本分类下最近 7 天内创建的仓库,通过 GitHub 搜索 API(按 topic 匹配:仓库自己必须带有该分类的 topic)找出,按创建以来的日均星标排序。已出现在本分类其他榜单(或本分类已收录项目)中的仓库,以及已被更靠前分类(AI 优先)占位的仓库,不会重复列入。简介取自仓库自己的 GitHub 简介;人工译文见 [data/newcomer_i18n.json](data/newcomer_i18n.json)。规则见 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | 项目 | 创建时间(UTC) | 总星标 | 星标/天 | 星标历史 | |---|---|---|---:|---:|---| | 1 | [hugues31/duckpad](https://github.com/hugues31/duckpad)
开源社区应得的数据转换工具。 | 2026-10-25
5.0 天 | 269 | 53.5 | hugues31/duckpad 的星标历史曲线 | @@ -580,18 +506,10 @@ | 7 | [dbt-labs/dbt-core](https://github.com/dbt-labs/dbt-core)
用软件工程方式在数仓中转换数据。
`数据` | 14,104 | dbt-labs/dbt-core 的星标历史曲线 | | 8 | [jupyter/notebook](https://github.com/jupyter/notebook)
用于创建与分享文档的 Jupyter 交互式笔记本。
`数据` | 13,461 | jupyter/notebook 的星标历史曲线 | -## 缺失数据 - -本次运行中没有项目缺失数据。 - -## 数据是如何得出的 +--- -- 总星标数:`GET /repos/{owner}/{repo}` → `stargazers_count`。 -- 新增星标:`GET /repos/{owner}/{repo}/stargazers/history`(GitHub 提供的、保护隐私的按周/按日星标数)。新增数为今天之前 N 个完整 UTC 日的总和(不含今天),星标/天 = 新增数 ÷ N。 -- GitHub 说明,周/日统计区间的边界不保证与 UTC 对齐,且之后被取消的星标不会计入,因此窗口边缘的数字可能有小幅偏差。 -- 星标历史曲线是以 URL 嵌入的 `star-history.com` SVG 图片。本仓库不含任何分析或追踪脚本。 -- 原始数据见 [`data/stats.json`](data/stats.json);每日星标数快照追加到 [`data/stars.json`](data/stars.json)。 +如果它帮你省了时间,请给仓库点个星标,让更多人找得到。 -## 参与贡献 +如何引用:见 [CITATION.cff](CITATION.cff)。 -在 `data/projects.json` 中添加条目(`desc` 需包含全部五种语言),然后运行 `python tools/update_stars.py`。每日更新说明见 [docs/DAILY_UPDATE.md](docs/DAILY_UPDATE.md)。 +数据怎么算和如何参与:[docs/HOW_IT_WORKS.zh-Hans.md](docs/HOW_IT_WORKS.zh-Hans.md)。新仓库规则:[docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。分类说明:[docs/CATEGORIES.md](docs/CATEGORIES.md)。 diff --git a/README.zh-Hant.md b/README.zh-Hant.md index de16731..eee5e51 100644 --- a/README.zh-Hant.md +++ b/README.zh-Hant.md @@ -1,44 +1,44 @@ [English](README.md) | [简体中文](README.zh-Hans.md) | **繁體中文** | [日本語](README.ja.md) | [한국어](README.ko.md) -# GitHub 飆升榜(GitHub Risers):依漲星速度排的分類漲星榜 +# GitHub 漲星榜 / GitHub Risers -> 依漲星速度、而不是總星號數排名的 GitHub Trending 漲星榜(Star Growth)。AI 是主榜,另有開發者工具、資安、Web/前端、基礎建設、設計/創意、資料等分類;每天更新兩次,每個分類都有 7 天新晉榜。 +GitHub 漲星榜 / GitHub Risers -多數榜單依總星號數排序,老專案長期霸占榜首,正在爆發的新專案反而被埋沒。GitHub 飆升榜依「每天新增多少星號」來排:統計近 7 天、30 天和 365 天的日均漲星,並依分類呈現,AI 是預設置頂的主榜。每個分類先看「7 天新晉」榜(最近 7 天內建立的儲存庫),再看週、月、年漲星榜,總星號榜放在最後。資料全部來自 GitHub API。分類規則請見 [docs/CATEGORIES.md](docs/CATEGORIES.md)。 +[![MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![CI](https://github.com/jammyfu/github-risers/actions/workflows/ci.yml/badge.svg)](https://github.com/jammyfu/github-risers/actions/workflows/ci.yml) [![updated](https://img.shields.io/badge/updated-2026--10--30-brightgreen.svg)](latest/rankings.zh-Hant.md) -資料於 2026-10-30 08:39:25(UTC)從 GitHub API 取得。 -每天更新兩次:北京時間 0 點(UTC+8)和美西洛杉磯時間 0 點(America/Los_Angeles,隨夏令時間變動)。每次更新都會依各自的時段單獨存檔。 -每個分類榜單最多顯示全部 70 個已收錄專案中的前 20 名。 +依每天新增星號(而不是總星號)替 GitHub 儲存庫排名:AI 在前,接著是開發者工具、資安、Web / 前端、基礎建設、設計 / 創意與資料;每天更新兩次。 -下方表格為最新榜單。每次更新還會依時段另存一份:[榜單歷史](rankings/README.zh-Hant.md) · [latest/rankings.zh-Hant.md](latest/rankings.zh-Hant.md)。 +更新於 2026-10-30 08:39(UTC),每天兩次(北京時間 0 點、洛杉磯時間 0 點)。 -## 本期各類榜首 +[網站](https://jammyfu.github.io/github-risers/) · [運作方式](docs/HOW_IT_WORKS.zh-Hant.md) · [事實速查](docs/FACTS.md) · [歷史榜單](rankings/README.zh-Hant.md) · [最新快照](latest/rankings.zh-Hant.md) -每個分類裡每張榜的第 1 名,由腳本根據下方的真實資料自動產生。「無」表示本次執行該榜沒有項目。 +## 本期各類榜首 | 分類 | 新儲存庫第 1 名(7 天) | 本週第 1 名 | 本月第 1 名 | 今年第 1 名 | 總星號第 1 名 | |---|---|---|---|---|---| -| **人工智慧** ★ 主榜 | [rddmwmddr/android-ad-cleaner](https://github.com/rddmwmddr/android-ad-cleaner)
798/天 | [morluto/rea](https://github.com/morluto/rea)
5,942/天 | [morluto/rea](https://github.com/morluto/rea)
13,623/天 | [deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness)
3,412/天 | [morluto/rea](https://github.com/morluto/rea)
409,565 ★ | -| **開發者工具** | [heydeer/pngdeer](https://github.com/heydeer/pngdeer)
72.1/天 | [zed-industries/zed](https://github.com/zed-industries/zed)
56.6/天 | [zed-industries/zed](https://github.com/zed-industries/zed)
53.8/天 | [zed-industries/zed](https://github.com/zed-industries/zed)
70.6/天 | [oven-sh/bun](https://github.com/oven-sh/bun)
96,468 ★ | -| **資安** | [vaishantsah/watson-AI-osint-all-in-one](https://github.com/vaishantsah/watson-AI-osint-all-in-one)
134/天 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
32.7/天 | [projectdiscovery/nuclei](https://github.com/projectdiscovery/nuclei)
29.7/天 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
27.7/天 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
38,849 ★ | -| **Web / 前端** | [designfuchen/word-atlas](https://github.com/designfuchen/word-atlas)
658/天 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
103/天 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
84.6/天 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
83.0/天 | [facebook/react](https://github.com/facebook/react)
251,753 ★ | -| **基礎建設** | [zeabur-oss/zeabur](https://github.com/zeabur-oss/zeabur)
91.1/天 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
44.1/天 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
83.4/天 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
32.4/天 | [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes)
128,522 ★ | -| **設計 / 創意** | 無 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
65.6/天 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
64.6/天 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
73.9/天 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
134,834 ★ | -| **資料** | [hugues31/duckpad](https://github.com/hugues31/duckpad)
53.5/天 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
40.0/天 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
31.1/天 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
25.7/天 | [apache/superset](https://github.com/apache/superset)
75,366 ★ | - -
分類 - -| | | -|---|---| -| 人工智慧 ★ 主榜 | 大型語言模型、代理、MCP、程式設計助手與生成式 AI | -| 開發者工具 | 命令列、編輯器、套件管理、程式碼檢查與建置工具 | -| 資安 | 弱點掃描、靜態分析、供應鏈與執行時資安 | -| Web / 前端 | 前端框架、UI 元件庫、CSS 與瀏覽器工具 | -| 基礎建設 | 容器、Kubernetes、雲端、網路與可觀測性 | -| 設計 / 創意 | 設計系統、繪圖、動畫與創意工具 | -| 資料 | 資料庫、分析、ETL 與資料工程 | - -
+| **[人工智慧](#人工智慧)** ★ 主榜 | [rddmwmddr/android-ad-cleaner](https://github.com/rddmwmddr/android-ad-cleaner)
798/天 | [morluto/rea](https://github.com/morluto/rea)
5,942/天 | [morluto/rea](https://github.com/morluto/rea)
13,623/天 | [deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness)
3,412/天 | [morluto/rea](https://github.com/morluto/rea)
409,565 ★ | +| **[開發者工具](#開發者工具)** | [heydeer/pngdeer](https://github.com/heydeer/pngdeer)
72.1/天 | [zed-industries/zed](https://github.com/zed-industries/zed)
56.6/天 | [zed-industries/zed](https://github.com/zed-industries/zed)
53.8/天 | [zed-industries/zed](https://github.com/zed-industries/zed)
70.6/天 | [oven-sh/bun](https://github.com/oven-sh/bun)
96,468 ★ | +| **[資安](#資安)** | [vaishantsah/watson-AI-osint-all-in-one](https://github.com/vaishantsah/watson-AI-osint-all-in-one)
134/天 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
32.7/天 | [projectdiscovery/nuclei](https://github.com/projectdiscovery/nuclei)
29.7/天 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
27.7/天 | [aquasecurity/trivy](https://github.com/aquasecurity/trivy)
38,849 ★ | +| **[Web / 前端](#web--前端)** | [designfuchen/word-atlas](https://github.com/designfuchen/word-atlas)
658/天 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
103/天 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
84.6/天 | [shadcn-ui/ui](https://github.com/shadcn-ui/ui)
83.0/天 | [facebook/react](https://github.com/facebook/react)
251,753 ★ | +| **[基礎建設](#基礎建設)** | [zeabur-oss/zeabur](https://github.com/zeabur-oss/zeabur)
91.1/天 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
44.1/天 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
83.4/天 | [caddyserver/caddy](https://github.com/caddyserver/caddy)
32.4/天 | [kubernetes/kubernetes](https://github.com/kubernetes/kubernetes)
128,522 ★ | +| **[設計 / 創意](#設計--創意)** | 無 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
65.6/天 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
64.6/天 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
73.9/天 | [excalidraw/excalidraw](https://github.com/excalidraw/excalidraw)
134,834 ★ | +| **[資料](#資料)** | [hugues31/duckpad](https://github.com/hugues31/duckpad)
53.5/天 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
40.0/天 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
31.1/天 | [duckdb/duckdb](https://github.com/duckdb/duckdb)
25.7/天 | [apache/superset](https://github.com/apache/superset)
75,366 ★ | + +這裡每張榜只列前 10 名,完整的前 20 名見 [latest/rankings.zh-Hant.md](latest/rankings.zh-Hant.md)。 + +## 常見問題 + +### GitHub 漲星榜是什麼? + +依每天新增星號、而不是總星號替 GitHub 儲存庫排名的榜單。AI 是主榜,後面還有六個分類;資料由腳本從 GitHub API 產生。 [了解更多](docs/FAQ.md#what-is-github-risers) + +### 和 GitHub Trending 有什麼不同? + +GitHub Trending 是 GitHub 官方頁面;GitHub 漲星榜是獨立的開源專案,規則公開,有五種語言,並保存每次更新的歷史。它與 GitHub 官方沒有關聯。 [了解更多](docs/FAQ.md#is-it-the-same-as-github-trending) + +### 多久更新一次? + +每天兩次,北京時間 0 點和洛杉磯時間 0 點;每次執行都會存檔。 [了解更多](docs/FAQ.md#how-often-is-it-updated) ## 人工智慧 @@ -46,8 +46,6 @@ ### 最熱新儲存庫(近 7 天內建立) -本分類下最近 7 天內建立的儲存庫,透過 GitHub 搜尋 API(依 topic 比對:儲存庫自己必須帶有該分類的 topic)找出,並依建立以來的日均星號排序。已出現在本分類其他榜單(或本分類已收錄專案)中的儲存庫,以及已被更前面分類(AI 優先)佔位的儲存庫,不會重複列入。簡介取自儲存庫自己的 GitHub 簡介;人工譯文見 [data/newcomer_i18n.json](data/newcomer_i18n.json)。規則請見 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | 專案 | 建立時間(UTC) | 總星號 | 星號/天 | 星號歷史 | |---|---|---|---:|---:|---| | 1 | [rddmwmddr/android-ad-cleaner](https://github.com/rddmwmddr/android-ad-cleaner)
關閉國產 Android 手機系統裡的廣告、熱搜、資訊推薦和行銷推播。不需 root,可還原,支援 AI 代理一鍵執行。 | 2026-10-24
6.1 天 | 4,892 | 798.4 | rddmwmddr/android-ad-cleaner 的星號歷史曲線 | @@ -60,16 +58,6 @@ | 8 | [haydenschmitty/floorplan](https://github.com/haydenschmitty/floorplan)
看清你的應用程式究竟是如何組合在一起的。一張可互動、用淺顯英文說明的程式碼庫地圖,由 Claude 或 Codex 繪製。 | 2026-10-27
2.9 天 | 410 | 143.4 | haydenschmitty/floorplan 的星號歷史曲線 | | 9 | [patch-gg/anymove](https://github.com/patch-gg/anymove)
只用一段 AI 影片,為任何生物做動作捕捉:一個畫面裡兩個機位、DINOv2 關節辨識、在兩個視角中擬合骨架,輸出 GLB。 | 2026-10-27
3.0 天 | 431 | 142.4 | patch-gg/anymove 的星號歷史曲線 | | 10 | [daveebbelaar/bama](https://github.com/daveebbelaar/bama)
BAMA:Build Any Mac App(打造任何 Mac 應用程式)。用 Swift 和 SwiftUI 研究、仿製、設計、建置、最佳化和測試原生 macOS 應用程式的代理技能。 | 2026-10-24
6.0 天 | 838 | 139.8 | daveebbelaar/bama 的星號歷史曲線 | -| 11 | [shipwords-dev/shipwords](https://github.com/shipwords-dev/shipwords)
為每個新關鍵字上線一個賺錢的 AI 網站。基於 Cloudflare 的起始範本,含登入驗證、點數、付款和 AI 生成。/ 新詞站群框架:一個新詞一個站,一個下午上線。起量的繼續迭代,沒起… | 2026-10-28
2.1 天 | 287 | 137.6 | shipwords-dev/shipwords 的星號歷史曲線 | -| 12 | [jmanico/grim-prompter](https://github.com/jmanico/grim-prompter)
針對 AI 程式設計代理的威脅建模:讓 Claude Code、Codex 或任何代理讀取你的儲存庫,產生有證據可追溯的威脅模型。36 種架構,29 種方法,… | 2026-10-28
1.9 天 | 188 | 101.4 | jmanico/grim-prompter 的星號歷史曲線 | -| 13 | [andyhuo520/vibe-knowledge](https://github.com/andyhuo520/vibe-knowledge)
Vibe 知識大賞:一個知識點 → 一支有旁白、每句有出處的精品知識短片(Claude Code skill · 44 套風格 · 程式碼逐格成片) | 2026-10-28
2.0 天 | 185 | 94.4 | andyhuo520/vibe-knowledge 的星號歷史曲線 | -| 14 | [hevnsnt/CVEngine](https://github.com/hevnsnt/CVEngine)
以 AI 為先的外部攻擊面評估:持續探索資產、以證據為基礎驗證漏洞,並整合開發者代理 MCP。 | 2026-10-24
5.4 天 | 510 | 94.1 | hevnsnt/CVEngine 的星號歷史曲線 | -| 15 | [davemessew/AgentFlux](https://github.com/davemessew/AgentFlux)
適用於視覺化工作流程與自主代理的代理式 AI 平台。可用 Docker 在你自己的電腦或伺服器上執行。 | 2026-10-27
2.8 天 | 235 | 85.5 | davemessew/AgentFlux 的星號歷史曲線 | -| 16 | [SAOS-3624/dsh-video-storyboard](https://github.com/SAOS-3624/dsh-video-storyboard)
針對 DeepSeek Harness 的場景感知分鏡:把 9–16 個帶編號的格子,連同時間戳記、逐字稿和音訊包絡,打包進同一張圖(384 個 token)。兩個工具… | 2026-10-26
3.4 天 | 229 | 66.5 | SAOS-3624/dsh-video-storyboard 的星號歷史曲線 | -| 17 | [routerhubSI/uncensored-ai-api](https://github.com/routerhubSI/uncensored-ai-api)
無審查 AI API 與模型——一組金鑰即可呼叫 Claude、GPT、Gemini、Grok、DeepSeek、GLM 和 Qwen,並在可用時提供無審查與 abliterated 變體。相容 OpenAI-… | 2026-10-24
5.7 天 | 368 | 65.1 | routerhubSI/uncensored-ai-api 的星號歷史曲線 | -| 18 | [JunWan666/astrbot-for-android](https://github.com/JunWan666/astrbot-for-android)
在 Android 手機上本機部署並管理 AstrBot 與 NapCat,內建 PRoot Ubuntu 執行環境,支援原生管理介面、WebUI、記錄檔、備份還原和獨立更新,無需 Root。 | 2026-10-26
4.1 天 | 264 | 63.7 | JunWan666/astrbot-for-android 的星號歷史曲線 | -| 19 | [aa1143/NamiGPT](https://github.com/aa1143/NamiGPT)
零基礎入門大型語言模型(LLM)的基礎教學:從零手寫 GPT-2,一行行看懂大型語言模型是怎麼運作的 / 用 PyTorch 從零開始、一步步建構 GPT-2 | 2026-10-28
2.3 天 | 135 | 58.2 | aa1143/NamiGPT 的星號歷史曲線 | -| 20 | [jacke-pp/ai-wallet-binance](https://github.com/jacke-pp/ai-wallet-binance)
讓任何 AI 用你自己的幣安 AI 錢包交易:秒買秒賣、狙擊 Agent 專屬發射台(Four、Flap、GANG)、AI 專屬 Mint、本機交易頁面。幣安簽名,不碰私鑰。免費開源 MIT · 作者:Jacke_pp · 聯絡:X @Jacke_pp(私訊) | 2026-10-25
5.0 天 | 236 | 47.7 | jacke-pp/ai-wallet-binance 的星號歷史曲線 | ### 本週成長最快(近 7 天) @@ -85,16 +73,6 @@ | 8 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
把整個程式碼庫變成一張地圖,讓 AI 一眼看出哪些檔案呼叫了哪些檔案。大型專案不必再從頭讀到尾。
`人工智慧` | +5,783 | 826.1 | 138,983 | Graphify-Labs/graphify 的星號歷史曲線 | | 9 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
像寫網頁一樣寫影片,再交給 AI 算繪成片。程式設計代理也能使用,不必學任何剪輯軟體。
`人工智慧` | +5,541 | 791.6 | 75,673 | heygen-com/hyperframes 的星號歷史曲線 | | 10 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
讓你的 AI 代理看見整個網際網路。一個命令列工具就能讀取和搜尋 Twitter、Reddit、YouTube、GitHub、嗶哩嗶哩和小紅書,零 API 費用。
`人工智慧` | +5,483 | 783.3 | 106,509 | Panniantong/Agent-Reach 的星號歷史曲線 | -| 11 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
賦予程式設計代理美感的技能:確立美術風格、使用真實參考圖,並在瀏覽器中檢查成果,讓它們不再產出千篇一律的 AI 登陸頁。
`人工智慧` | +4,623 | 660.4 | 105,834 | Leonxlnx/taste-skill 的星號歷史曲線 | -| 12 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
一項為程式設計代理帶來設計智慧的 AI 技能,讓它們打造的 UI/UX 在多個平台與框架上都顯得專業。
`人工智慧` | +3,692 | 527.4 | 142,715 | nextlevelbuilder/ui-ux-pro-max-skill 的星號歷史曲線 | -| 13 | [anomalyco/opencode](https://github.com/anomalyco/opencode)
直接在終端機裡用 AI 寫程式,不必開啟瀏覽器分頁。支援多種模型,可與 Claude Code 和 Codex 一較高下,免費開源。
`人工智慧` | +3,142 | 448.9 | 223,154 | anomalyco/opencode 的星號歷史曲線 | -| 14 | [thedotmack/claude-mem](https://github.com/thedotmack/claude-mem)
為代理提供跨工作階段的記憶:記錄代理做過的事,用 AI 壓縮,並把相關部分回饋到之後的工作階段中。支援 Claude Code、Codex、Gemini、OpenCode 等。
`人工智慧` | +2,821 | 403.0 | 105,138 | thedotmack/claude-mem 的星號歷史曲線 | -| 15 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
免費的 MIT 授權 AI 閘道:一個端點對接數百家供應商和模型,並依額度自動備援切換。支援 Claude Code、Codex、Cursor、OpenCode、Cline 和 Copilot。
`人工智慧` | +2,779 | 397.0 | 82,663 | cheaper-inference/OmniRoute 的星號歷史曲線 | -| 16 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
像經營公司一樣管理一組 AI 代理的開源應用程式:分派目標、設定預算,並在同一個儀表板中追蹤工作與成本。如果說 OpenClaw 是一名員工,Paperclip 就是整間公司。
`人工智慧` | +2,593 | 370.4 | 108,798 | paperclipai/paperclip 的星號歷史曲線 | -| 17 | [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent)
Nous Research 推出、能自我改進的 AI 代理,內建學習迴圈:從經驗中建立技能,並在工作中持續改進,還能透過 Telegram、Discord、Slack 等管道與你聯繫。
`人工智慧` | +2,564 | 366.3 | 258,636 | NousResearch/hermes-agent 的星號歷史曲線 | -| 18 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
適用於 Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw 等的桌面端整合管理工具:一鍵切換 API 供應商,不必手動編輯設定檔就能管理 MCP、技能和提示詞。
`人工智慧` | +2,542 | 363.1 | 150,238 | farion1231/cc-switch 的星號歷史曲線 | -| 19 | [NVIDIA/SkillSpector](https://github.com/NVIDIA/SkillSpector)
NVIDIA 推出的 AI 代理技能資安掃描器:在安裝前檢查 Claude Code、Codex 和 MCP 技能中的漏洞、提示詞注入、資料外洩與供應鏈風險。
`人工智慧` | +2,414 | 344.9 | 23,432 | NVIDIA/SkillSpector 的星號歷史曲線 | -| 20 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
適用於 AI 程式設計代理的產品級工程技能:把資深工程師從規格到上線所用的工作流程與品質關卡打包起來,讓代理每次都照著做。
`人工智慧` | +2,185 | 312.1 | 111,823 | addyosmani/agent-skills 的星號歷史曲線 | ### 本月成長最快(近 30 天) @@ -110,16 +88,6 @@ | 8 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
像寫網頁一樣寫影片,再交給 AI 算繪成片。程式設計代理也能使用,不必學任何剪輯軟體。
`人工智慧` | +21,640 | 721.3 | 75,673 | heygen-com/hyperframes 的星號歷史曲線 | | 9 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
讓你的 AI 代理看見整個網際網路。一個命令列工具就能讀取和搜尋 Twitter、Reddit、YouTube、GitHub、嗶哩嗶哩和小紅書,零 API 費用。
`人工智慧` | +20,788 | 692.9 | 106,509 | Panniantong/Agent-Reach 的星號歷史曲線 | | 10 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
把整個程式碼庫變成一張地圖,讓 AI 一眼看出哪些檔案呼叫了哪些檔案。大型專案不必再從頭讀到尾。
`人工智慧` | +17,170 | 572.3 | 138,983 | Graphify-Labs/graphify 的星號歷史曲線 | -| 11 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
賦予程式設計代理美感的技能:確立美術風格、使用真實參考圖,並在瀏覽器中檢查成果,讓它們不再產出千篇一律的 AI 登陸頁。
`人工智慧` | +14,956 | 498.5 | 105,834 | Leonxlnx/taste-skill 的星號歷史曲線 | -| 12 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
像經營公司一樣管理一組 AI 代理的開源應用程式:分派目標、設定預算,並在同一個儀表板中追蹤工作與成本。如果說 OpenClaw 是一名員工,Paperclip 就是整間公司。
`人工智慧` | +14,436 | 481.2 | 108,798 | paperclipai/paperclip 的星號歷史曲線 | -| 13 | [anomalyco/opencode](https://github.com/anomalyco/opencode)
直接在終端機裡用 AI 寫程式,不必開啟瀏覽器分頁。支援多種模型,可與 Claude Code 和 Codex 一較高下,免費開源。
`人工智慧` | +13,404 | 446.8 | 223,154 | anomalyco/opencode 的星號歷史曲線 | -| 14 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
適用於 Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw 等的桌面端整合管理工具:一鍵切換 API 供應商,不必手動編輯設定檔就能管理 MCP、技能和提示詞。
`人工智慧` | +12,324 | 410.8 | 150,238 | farion1231/cc-switch 的星號歷史曲線 | -| 15 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
適用於 AI 程式設計代理的產品級工程技能:把資深工程師從規格到上線所用的工作流程與品質關卡打包起來,讓代理每次都照著做。
`人工智慧` | +12,280 | 409.3 | 111,823 | addyosmani/agent-skills 的星號歷史曲線 | -| 16 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
免費的 MIT 授權 AI 閘道:一個端點對接數百家供應商和模型,並依額度自動備援切換。支援 Claude Code、Codex、Cursor、OpenCode、Cline 和 Copilot。
`人工智慧` | +11,696 | 389.9 | 82,663 | cheaper-inference/OmniRoute 的星號歷史曲線 | -| 17 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
一項為程式設計代理帶來設計智慧的 AI 技能,讓它們打造的 UI/UX 在多個平台與框架上都顯得專業。
`人工智慧` | +11,660 | 388.7 | 142,715 | nextlevelbuilder/ui-ux-pro-max-skill 的星號歷史曲線 | -| 18 | [thedotmack/claude-mem](https://github.com/thedotmack/claude-mem)
為代理提供跨工作階段的記憶:記錄代理做過的事,用 AI 壓縮,並把相關部分回饋到之後的工作階段中。支援 Claude Code、Codex、Gemini、OpenCode 等。
`人工智慧` | +10,595 | 353.2 | 105,138 | thedotmack/claude-mem 的星號歷史曲線 | -| 19 | [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent)
Nous Research 推出、能自我改進的 AI 代理,內建學習迴圈:從經驗中建立技能,並在工作中持續改進,還能透過 Telegram、Discord、Slack 等管道與你聯繫。
`人工智慧` | +9,731 | 324.4 | 258,636 | NousResearch/hermes-agent 的星號歷史曲線 | -| 20 | [anthropics/skills](https://github.com/anthropics/skills)
Anthropic 公開的 Agent Skills 儲存庫:由說明、指令碼和資源組成的資料夾,Claude 會依需求載入,涵蓋從創意工作到網頁應用程式測試等場景。可作為你撰寫自己技能的範例與靈感。
`人工智慧` | +6,531 | 217.7 | 184,884 | anthropics/skills 的星號歷史曲線 | ### 今年成長最快(近 365 天) @@ -135,16 +103,6 @@ | 8 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
把整個程式碼庫變成一張地圖,讓 AI 一眼看出哪些檔案呼叫了哪些檔案。大型專案不必再從頭讀到尾。
`人工智慧` | +138,922 | 661.5 †
÷210 天 | 138,983 | Graphify-Labs/graphify 的星號歷史曲線 | | 9 | [anomalyco/opencode](https://github.com/anomalyco/opencode)
直接在終端機裡用 AI 寫程式,不必開啟瀏覽器分頁。支援多種模型,可與 Claude Code 和 Codex 一較高下,免費開源。
`人工智慧` | +194,805 | 533.7 | 223,154 | anomalyco/opencode 的星號歷史曲線 | | 10 | [stablyai/orca](https://github.com/stablyai/orca)
在同一台桌上型電腦上同時執行多個 AI 程式設計代理,比較誰寫得更好。每個代理都有自己的工作區,彼此不會互相干擾。
`人工智慧` | +110,415 | 486.4 †
÷227 天 | 110,515 | stablyai/orca 的星號歷史曲線 | -| 11 | [anthropics/skills](https://github.com/anthropics/skills)
Anthropic 公開的 Agent Skills 儲存庫:由說明、指令碼和資源組成的資料夾,Claude 會依需求載入,涵蓋從創意工作到網頁應用程式測試等場景。可作為你撰寫自己技能的範例與靈感。
`人工智慧` | +170,780 | 467.9 | 184,884 | anthropics/skills 的星號歷史曲線 | -| 12 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
像經營公司一樣管理一組 AI 代理的開源應用程式:分派目標、設定預算,並在同一個儀表板中追蹤工作與成本。如果說 OpenClaw 是一名員工,Paperclip 就是整間公司。
`人工智慧` | +108,764 | 449.4 †
÷242 天 | 108,798 | paperclipai/paperclip 的星號歷史曲線 | -| 13 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
適用於 AI 程式設計代理的產品級工程技能:把資深工程師從規格到上線所用的工作流程與品質關卡打包起來,讓代理每次都照著做。
`人工智慧` | +111,805 | 435.0 †
÷257 天 | 111,823 | addyosmani/agent-skills 的星號歷史曲線 | -| 14 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
讓你的 AI 代理看見整個網際網路。一個命令列工具就能讀取和搜尋 Twitter、Reddit、YouTube、GitHub、嗶哩嗶哩和小紅書,零 API 費用。
`人工智慧` | +106,451 | 429.2 †
÷248 天 | 106,509 | Panniantong/Agent-Reach 的星號歷史曲線 | -| 15 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
一項為程式設計代理帶來設計智慧的 AI 技能,讓它們打造的 UI/UX 在多個平台與框架上都顯得專業。
`人工智慧` | +142,662 | 427.1 †
÷334 天 | 142,715 | nextlevelbuilder/ui-ux-pro-max-skill 的星號歷史曲線 | -| 16 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
賦予程式設計代理美感的技能:確立美術風格、使用真實參考圖,並在瀏覽器中檢查成果,讓它們不再產出千篇一律的 AI 登陸頁。
`人工智慧` | +105,762 | 418.0 †
÷253 天 | 105,834 | Leonxlnx/taste-skill 的星號歷史曲線 | -| 17 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
適用於 Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw 等的桌面端整合管理工具:一鍵切換 API 供應商,不必手動編輯設定檔就能管理 MCP、技能和提示詞。
`人工智慧` | +147,480 | 404.1 | 150,238 | farion1231/cc-switch 的星號歷史曲線 | -| 18 | [cloudflare/security-audit-skill](https://github.com/cloudflare/security-audit-skill)
讓 AI 審查自己寫的程式碼是否有漏洞,再請第二個 AI 來質疑審查結論。專門針對程式設計代理容易寫出的不安全程式碼。
`人工智慧` | +53,137 | 396.5 †
÷134 天 | 53,235 | cloudflare/security-audit-skill 的星號歷史曲線 | -| 19 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
像寫網頁一樣寫影片,再交給 AI 算繪成片。程式設計代理也能使用,不必學任何剪輯軟體。
`人工智慧` | +75,613 | 323.1 †
÷234 天 | 75,673 | heygen-com/hyperframes 的星號歷史曲線 | -| 20 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
免費的 MIT 授權 AI 閘道:一個端點對接數百家供應商和模型,並依額度自動備援切換。支援 Claude Code、Codex、Cursor、OpenCode、Cline 和 Copilot。
`人工智慧` | +82,646 | 319.1 †
÷259 天 | 82,663 | cheaper-inference/OmniRoute 的星號歷史曲線 | † 該儲存庫建立時間短於統計區間,因此「星號/天」是以儲存庫存在的天數(顯示在數字下方)計算,而不是以完整區間計算。 @@ -162,16 +120,6 @@ | 8 | [DietrichGebert/ponytail](https://github.com/DietrichGebert/ponytail)
專治 AI 寫程式時灌水湊數。教它像一位愛偷懶的老手那樣做事:能省則省,非寫不可的部分務必寫對。
`人工智慧` | 180,485 | DietrichGebert/ponytail 的星號歷史曲線 | | 9 | [farion1231/cc-switch](https://github.com/farion1231/cc-switch)
適用於 Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw 等的桌面端整合管理工具:一鍵切換 API 供應商,不必手動編輯設定檔就能管理 MCP、技能和提示詞。
`人工智慧` | 150,238 | farion1231/cc-switch 的星號歷史曲線 | | 10 | [nextlevelbuilder/ui-ux-pro-max-skill](https://github.com/nextlevelbuilder/ui-ux-pro-max-skill)
一項為程式設計代理帶來設計智慧的 AI 技能,讓它們打造的 UI/UX 在多個平台與框架上都顯得專業。
`人工智慧` | 142,715 | nextlevelbuilder/ui-ux-pro-max-skill 的星號歷史曲線 | -| 11 | [Graphify-Labs/graphify](https://github.com/Graphify-Labs/graphify)
把整個程式碼庫變成一張地圖,讓 AI 一眼看出哪些檔案呼叫了哪些檔案。大型專案不必再從頭讀到尾。
`人工智慧` | 138,983 | Graphify-Labs/graphify 的星號歷史曲線 | -| 12 | [addyosmani/agent-skills](https://github.com/addyosmani/agent-skills)
適用於 AI 程式設計代理的產品級工程技能:把資深工程師從規格到上線所用的工作流程與品質關卡打包起來,讓代理每次都照著做。
`人工智慧` | 111,823 | addyosmani/agent-skills 的星號歷史曲線 | -| 13 | [stablyai/orca](https://github.com/stablyai/orca)
在同一台桌上型電腦上同時執行多個 AI 程式設計代理,比較誰寫得更好。每個代理都有自己的工作區,彼此不會互相干擾。
`人工智慧` | 110,515 | stablyai/orca 的星號歷史曲線 | -| 14 | [paperclipai/paperclip](https://github.com/paperclipai/paperclip)
像經營公司一樣管理一組 AI 代理的開源應用程式:分派目標、設定預算,並在同一個儀表板中追蹤工作與成本。如果說 OpenClaw 是一名員工,Paperclip 就是整間公司。
`人工智慧` | 108,798 | paperclipai/paperclip 的星號歷史曲線 | -| 15 | [Panniantong/Agent-Reach](https://github.com/Panniantong/Agent-Reach)
讓你的 AI 代理看見整個網際網路。一個命令列工具就能讀取和搜尋 Twitter、Reddit、YouTube、GitHub、嗶哩嗶哩和小紅書,零 API 費用。
`人工智慧` | 106,509 | Panniantong/Agent-Reach 的星號歷史曲線 | -| 16 | [Leonxlnx/taste-skill](https://github.com/Leonxlnx/taste-skill)
賦予程式設計代理美感的技能:確立美術風格、使用真實參考圖,並在瀏覽器中檢查成果,讓它們不再產出千篇一律的 AI 登陸頁。
`人工智慧` | 105,834 | Leonxlnx/taste-skill 的星號歷史曲線 | -| 17 | [thedotmack/claude-mem](https://github.com/thedotmack/claude-mem)
為代理提供跨工作階段的記憶:記錄代理做過的事,用 AI 壓縮,並把相關部分回饋到之後的工作階段中。支援 Claude Code、Codex、Gemini、OpenCode 等。
`人工智慧` | 105,138 | thedotmack/claude-mem 的星號歷史曲線 | -| 18 | [cheaper-inference/OmniRoute](https://github.com/cheaper-inference/OmniRoute)
免費的 MIT 授權 AI 閘道:一個端點對接數百家供應商和模型,並依額度自動備援切換。支援 Claude Code、Codex、Cursor、OpenCode、Cline 和 Copilot。
`人工智慧` | 82,663 | cheaper-inference/OmniRoute 的星號歷史曲線 | -| 19 | [heygen-com/hyperframes](https://github.com/heygen-com/hyperframes)
像寫網頁一樣寫影片,再交給 AI 算繪成片。程式設計代理也能使用,不必學任何剪輯軟體。
`人工智慧` | 75,673 | heygen-com/hyperframes 的星號歷史曲線 | -| 20 | [cloudflare/security-audit-skill](https://github.com/cloudflare/security-audit-skill)
讓 AI 審查自己寫的程式碼是否有漏洞,再請第二個 AI 來質疑審查結論。專門針對程式設計代理容易寫出的不安全程式碼。
`人工智慧` | 53,235 | cloudflare/security-audit-skill 的星號歷史曲線 | ## 開發者工具 @@ -179,8 +127,6 @@ ### 最熱新儲存庫(近 7 天內建立) -本分類下最近 7 天內建立的儲存庫,透過 GitHub 搜尋 API(依 topic 比對:儲存庫自己必須帶有該分類的 topic)找出,並依建立以來的日均星號排序。已出現在本分類其他榜單(或本分類已收錄專案)中的儲存庫,以及已被更前面分類(AI 優先)佔位的儲存庫,不會重複列入。簡介取自儲存庫自己的 GitHub 簡介;人工譯文見 [data/newcomer_i18n.json](data/newcomer_i18n.json)。規則請見 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | 專案 | 建立時間(UTC) | 總星號 | 星號/天 | 星號歷史 | |---|---|---|---:|---:|---| | 1 | [heydeer/pngdeer](https://github.com/heydeer/pngdeer)
圖片更小,畫面不變。自動選擇畫質,把 PNG 壓縮成 PNG 或 WebP。在同等畫質下,對中位數圖片,PNG 輸出比 TinyPNG 小 8–12%… | 2026-10-25
5.2 天 | 371 | 72.1 | heydeer/pngdeer 的星號歷史曲線 | @@ -193,16 +139,6 @@ | 8 | [ScorpionHub17/KMS-Pico](https://github.com/ScorpionHub17/KMS-Pico)
Kms Pico Free 2026 完整獨立安裝包。預先啟用的桌面版,開箱即用,安裝過程順暢。 | 2026-10-29
1.0 天 | 197 | 197.0 | ScorpionHub17/KMS-Pico 的星號歷史曲線 | | 9 | [Sourcecladrag/Windows-Optimizer](https://github.com/Sourcecladrag/Windows-Optimizer)
Windows Optimizer 2026——可直接使用的完整安裝程式,含進階系統調校與強化功能。 | 2026-10-29
1.0 天 | 197 | 197.0 | Sourcecladrag/Windows-Optimizer 的星號歷史曲線 | | 10 | [AshReinvigorate/Microsoft-Office](https://github.com/AshReinvigorate/Microsoft-Office)
Microsoft Office 2026 完整獨立安裝包。開箱即用的桌面版安裝,所有功能均已預先啟用。 | 2026-10-30
1.0 天 | 126 | 126.0 | AshReinvigorate/Microsoft-Office 的星號歷史曲線 | -| 11 | [Fangludisclose/SystemCare-Pro](https://github.com/Fangludisclose/SystemCare-Pro)
Systemcare Pro 2026 可直接使用的完整安裝程式。完整獨立安裝包,所有功能均已啟用,開箱即用。 | 2026-10-30
1.0 天 | 126 | 126.0 | Fangludisclose/SystemCare-Pro 的星號歷史曲線 | -| 12 | [FormHalberdierSouk/SoundPad](https://github.com/FormHalberdierSouk/SoundPad)
Soundpad 2026:可直接使用的完整安裝程式,內含專業音訊製作所需的全部重要外掛與效果。 | 2026-10-30
1.0 天 | 126 | 126.0 | FormHalberdierSouk/SoundPad 的星號歷史曲線 | -| 13 | [Lostbrocreate/Adobe-InDesign](https://github.com/Lostbrocreate/Adobe-InDesign)
安全數位資產部署管線 2026 可直接使用的完整安裝程式。開箱即用的方案,兼顧線上與線下出版的效率。 | 2026-10-30
1.0 天 | 126 | 126.0 | Lostbrocreate/Adobe-InDesign 的星號歷史曲線 | -| 14 | [nodedevelopersack/Cubase](https://github.com/nodedevelopersack/Cubase)
專業版 Cubase 13 完整獨立安裝版本,已預先啟用,適合在桌面端順暢進行音訊製作。 | 2026-10-30
1.0 天 | 126 | 126.0 | nodedevelopersack/Cubase 的星號歷史曲線 | -| 15 | [Phantomeidemonstrate/AnyDesk](https://github.com/Phantomeidemonstrate/AnyDesk)
Anydesk 2026:可直接使用的完整安裝程式,完整獨立安裝包,讓遠端桌面連線更順暢。 | 2026-10-30
1.0 天 | 125 | 125.0 | Phantomeidemonstrate/AnyDesk 的星號歷史曲線 | -| 16 | [PhoenixRetreat/Wondshare-Recoverit](https://github.com/PhoenixRetreat/Wondshare-Recoverit)
Wondshare Recoverit 2026 完整獨立安裝包。可直接執行的完整安裝程式,所有功能均已啟用。 | 2026-10-30
1.0 天 | 125 | 125.0 | PhoenixRetreat/Wondshare-Recoverit 的星號歷史曲線 | -| 17 | [scarletscreengrasp/Uttorent](https://github.com/scarletscreengrasp/Uttorent)
Uttorent 2026——可直接使用的完整安裝程式,完整獨立安裝包,開箱即用。 | 2026-10-30
1.0 天 | 125 | 125.0 | scarletscreengrasp/Uttorent 的星號歷史曲線 | -| 18 | [SoapmakerShout44/Cinema-4d](https://github.com/SoapmakerShout44/Cinema-4d)
專業 Cinema 4D 實用工具設定,完整獨立安裝包,讓 2026 年的工作流程更有效率。 | 2026-10-30
1.0 天 | 125 | 125.0 | SoapmakerShout44/Cinema-4d 的星號歷史曲線 | -| 19 | [twilightstonerestore/Glary-Utilities-Pro](https://github.com/twilightstonerestore/Glary-Utilities-Pro)
Glary Utilities Pro 2026:可直接使用的完整安裝程式,所有工具均已啟用,可立即在桌面上使用。 | 2026-10-30
1.0 天 | 125 | 125.0 | twilightstonerestore/Glary-Utilities-Pro 的星號歷史曲線 | -| 20 | [ViceFencerManacle/Camtasia](https://github.com/ViceFencerManacle/Camtasia)
Camtasia 2026 可直接使用的完整安裝程式,功能齊全,可在桌面上直接執行。 | 2026-10-30
1.0 天 | 125 | 125.0 | ViceFencerManacle/Camtasia 的星號歷史曲線 | ### 本週成長最快(近 7 天) @@ -262,8 +198,6 @@ ### 最熱新儲存庫(近 7 天內建立) -本分類下最近 7 天內建立的儲存庫,透過 GitHub 搜尋 API(依 topic 比對:儲存庫自己必須帶有該分類的 topic)找出,並依建立以來的日均星號排序。已出現在本分類其他榜單(或本分類已收錄專案)中的儲存庫,以及已被更前面分類(AI 優先)佔位的儲存庫,不會重複列入。簡介取自儲存庫自己的 GitHub 簡介;人工譯文見 [data/newcomer_i18n.json](data/newcomer_i18n.json)。規則請見 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | 專案 | 建立時間(UTC) | 總星號 | 星號/天 | 星號歷史 | |---|---|---|---:|---:|---| | 1 | [vaishantsah/watson-AI-osint-all-in-one](https://github.com/vaishantsah/watson-AI-osint-all-in-one)
Watson —— 免費的 Windows OSINT 工具:依暱稱、電子郵件、電話或網站,在 3,100 多個公開網站上搜尋人物。讓開源情報變得簡單:digi… | 2026-10-28
2.4 天 | 316 | 134.2 | vaishantsah/watson-AI-osint-all-in-one 的星號歷史曲線 | @@ -327,8 +261,6 @@ ### 最熱新儲存庫(近 7 天內建立) -本分類下最近 7 天內建立的儲存庫,透過 GitHub 搜尋 API(依 topic 比對:儲存庫自己必須帶有該分類的 topic)找出,並依建立以來的日均星號排序。已出現在本分類其他榜單(或本分類已收錄專案)中的儲存庫,以及已被更前面分類(AI 優先)佔位的儲存庫,不會重複列入。簡介取自儲存庫自己的 GitHub 簡介;人工譯文見 [data/newcomer_i18n.json](data/newcomer_i18n.json)。規則請見 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | 專案 | 建立時間(UTC) | 總星號 | 星號/天 | 星號歷史 | |---|---|---|---:|---:|---| | 1 | [designfuchen/word-atlas](https://github.com/designfuchen/word-atlas)
詞光 · Word Atlas —— 附插圖的雅思單字,共 7,298 個單字,含英式/美式發音與 FSRS 複習。開源應用程式 + CC BY 4.0 資料集。 | 2026-10-25
5.0 天 | 3,297 | 658.3 | designfuchen/word-atlas 的星號歷史曲線 | @@ -395,8 +327,6 @@ ### 最熱新儲存庫(近 7 天內建立) -本分類下最近 7 天內建立的儲存庫,透過 GitHub 搜尋 API(依 topic 比對:儲存庫自己必須帶有該分類的 topic)找出,並依建立以來的日均星號排序。已出現在本分類其他榜單(或本分類已收錄專案)中的儲存庫,以及已被更前面分類(AI 優先)佔位的儲存庫,不會重複列入。簡介取自儲存庫自己的 GitHub 簡介;人工譯文見 [data/newcomer_i18n.json](data/newcomer_i18n.json)。規則請見 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | 專案 | 建立時間(UTC) | 總星號 | 星號/天 | 星號歷史 | |---|---|---|---:|---:|---| | 1 | [zeabur-oss/zeabur](https://github.com/zeabur-oss/zeabur)
運行在你自己的 Kubernetes 上的自行架設 PaaS。 | 2026-10-24
6.0 天 | 551 | 91.1 | zeabur-oss/zeabur 的星號歷史曲線 | @@ -460,8 +390,6 @@ ### 最熱新儲存庫(近 7 天內建立) -本分類下最近 7 天內建立的儲存庫,透過 GitHub 搜尋 API(依 topic 比對:儲存庫自己必須帶有該分類的 topic)找出,並依建立以來的日均星號排序。已出現在本分類其他榜單(或本分類已收錄專案)中的儲存庫,以及已被更前面分類(AI 優先)佔位的儲存庫,不會重複列入。簡介取自儲存庫自己的 GitHub 簡介;人工譯文見 [data/newcomer_i18n.json](data/newcomer_i18n.json)。規則請見 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - 本次執行中沒有符合條件的新儲存庫。 ### 本週成長最快(近 7 天) @@ -522,8 +450,6 @@ ### 最熱新儲存庫(近 7 天內建立) -本分類下最近 7 天內建立的儲存庫,透過 GitHub 搜尋 API(依 topic 比對:儲存庫自己必須帶有該分類的 topic)找出,並依建立以來的日均星號排序。已出現在本分類其他榜單(或本分類已收錄專案)中的儲存庫,以及已被更前面分類(AI 優先)佔位的儲存庫,不會重複列入。簡介取自儲存庫自己的 GitHub 簡介;人工譯文見 [data/newcomer_i18n.json](data/newcomer_i18n.json)。規則請見 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。 - | # | 專案 | 建立時間(UTC) | 總星號 | 星號/天 | 星號歷史 | |---|---|---|---:|---:|---| | 1 | [hugues31/duckpad](https://github.com/hugues31/duckpad)
開源社群值得擁有的資料轉換工具。 | 2026-10-25
5.0 天 | 269 | 53.5 | hugues31/duckpad 的星號歷史曲線 | @@ -580,18 +506,10 @@ | 7 | [dbt-labs/dbt-core](https://github.com/dbt-labs/dbt-core)
用軟體工程方式在資料倉中轉換資料。
`資料` | 14,104 | dbt-labs/dbt-core 的星號歷史曲線 | | 8 | [jupyter/notebook](https://github.com/jupyter/notebook)
用於建立與分享文件的 Jupyter 互動式筆記本。
`資料` | 13,461 | jupyter/notebook 的星號歷史曲線 | -## 缺漏資料 - -本次執行中沒有專案缺漏資料。 - -## 資料是如何得出的 +--- -- 總星號數:`GET /repos/{owner}/{repo}` → `stargazers_count`。 -- 新增星號:`GET /repos/{owner}/{repo}/stargazers/history`(GitHub 提供、保護隱私的每週/每日星號數)。新增數為今天之前 N 個完整 UTC 日的總和(不含今天),星號/天 = 新增數 ÷ N。 -- GitHub 表示,週/日統計區間的邊界不保證與 UTC 對齊,且之後被取消的星號不會計入,因此區間邊緣的數字可能有小幅誤差。 -- 星號歷史曲線是以 URL 嵌入的 `star-history.com` SVG 圖片。本儲存庫不含任何分析或追蹤指令碼。 -- 原始資料請見 [`data/stats.json`](data/stats.json);每日星號數快照會追加到 [`data/stars.json`](data/stars.json)。 +如果它幫你省了時間,請給儲存庫按個星號,讓更多人找得到。 -## 參與貢獻 +如何引用:見 [CITATION.cff](CITATION.cff)。 -在 `data/projects.json` 中新增項目(需含 `category` 與五種語言的 `desc`),然後執行 `python tools/update_stars.py`。分類:[docs/CATEGORIES.md](docs/CATEGORIES.md)。每日更新:[docs/DAILY_UPDATE.md](docs/DAILY_UPDATE.md)。 +數據怎麼算與如何參與:[docs/HOW_IT_WORKS.zh-Hant.md](docs/HOW_IT_WORKS.zh-Hant.md)。新儲存庫規則:[docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。分類說明:[docs/CATEGORIES.md](docs/CATEGORIES.md)。 diff --git a/data/glossary.json b/data/glossary.json new file mode 100644 index 0000000..1660d27 --- /dev/null +++ b/data/glossary.json @@ -0,0 +1,302 @@ +{ + "_comment": "Fixed terminology for translations. tools/i18n_pipeline.py sends the model only the terms that occur in the texts of the batch. Product, repo, company and model names always stay as written. UI strings are not translated by a model: they live in tools/i18n.py and follow these terms (star = 星标 / 星號).", + "keep": [ + "MCP", + "CLI", + "API", + "Docker", + "Kubernetes", + "Claude Code", + "Codex", + "GitHub", + "PyTorch", + "Ghidra", + "LLM", + "AI", + "WebUI", + "APK", + "root" + ], + "terms": [ + { + "en": "star", + "zh-Hans": "星标", + "zh-Hant": "星號", + "ja": "スター", + "ko": "스타" + }, + { + "en": "stars per day", + "zh-Hans": "星标/天", + "zh-Hant": "星號/天", + "ja": "スター/日", + "ko": "스타/일" + }, + { + "en": "agent", + "zh-Hans": "智能体", + "zh-Hant": "代理", + "ja": "エージェント", + "ko": "에이전트" + }, + { + "en": "agentic", + "zh-Hans": "智能体式", + "zh-Hant": "代理式", + "ja": "エージェント型", + "ko": "에이전틱" + }, + { + "en": "skill", + "zh-Hans": "技能", + "zh-Hant": "技能", + "ja": "スキル", + "ko": "스킬" + }, + { + "en": "open source", + "zh-Hans": "开源", + "zh-Hant": "開源", + "ja": "オープンソース", + "ko": "오픈 소스" + }, + { + "en": "open-source", + "zh-Hans": "开源", + "zh-Hant": "開源", + "ja": "オープンソース", + "ko": "오픈 소스" + }, + { + "en": "self-hosted", + "zh-Hans": "自托管", + "zh-Hant": "自行架設", + "ja": "セルフホスト型", + "ko": "셀프 호스팅" + }, + { + "en": "repository", + "zh-Hans": "仓库", + "zh-Hant": "儲存庫", + "ja": "リポジトリ", + "ko": "저장소" + }, + { + "en": "repo", + "zh-Hans": "仓库", + "zh-Hant": "儲存庫", + "ja": "リポジトリ", + "ko": "저장소" + }, + { + "en": "prompt", + "zh-Hans": "提示词", + "zh-Hant": "提示詞", + "ja": "プロンプト", + "ko": "프롬프트" + }, + { + "en": "system prompt", + "zh-Hans": "系统提示词", + "zh-Hant": "系統提示詞", + "ja": "システムプロンプト", + "ko": "시스템 프롬프트" + }, + { + "en": "model", + "zh-Hans": "模型", + "zh-Hant": "模型", + "ja": "モデル", + "ko": "모델" + }, + { + "en": "large language model", + "zh-Hans": "大模型", + "zh-Hant": "大型語言模型", + "ja": "大規模言語モデル", + "ko": "대규모 언어 모델" + }, + { + "en": "framework", + "zh-Hans": "框架", + "zh-Hant": "框架", + "ja": "フレームワーク", + "ko": "프레임워크" + }, + { + "en": "workflow", + "zh-Hans": "工作流", + "zh-Hant": "工作流程", + "ja": "ワークフロー", + "ko": "워크플로" + }, + { + "en": "dashboard", + "zh-Hans": "仪表盘", + "zh-Hant": "儀表板", + "ja": "ダッシュボード", + "ko": "대시보드" + }, + { + "en": "dataset", + "zh-Hans": "数据集", + "zh-Hant": "資料集", + "ja": "データセット", + "ko": "데이터셋" + }, + { + "en": "benchmark", + "zh-Hans": "基准测试", + "zh-Hant": "基準測試", + "ja": "ベンチマーク", + "ko": "벤치마크" + }, + { + "en": "plugin", + "zh-Hans": "插件", + "zh-Hant": "外掛", + "ja": "プラグイン", + "ko": "플러그인" + }, + { + "en": "extension", + "zh-Hans": "扩展", + "zh-Hant": "擴充功能", + "ja": "拡張機能", + "ko": "확장 프로그램" + }, + { + "en": "terminal", + "zh-Hans": "终端", + "zh-Hant": "終端機", + "ja": "ターミナル", + "ko": "터미널" + }, + { + "en": "command line", + "zh-Hans": "命令行", + "zh-Hant": "命令列", + "ja": "コマンドライン", + "ko": "커맨드라인" + }, + { + "en": "desktop", + "zh-Hans": "桌面", + "zh-Hant": "桌面", + "ja": "デスクトップ", + "ko": "데스크톱" + }, + { + "en": "local", + "zh-Hans": "本地", + "zh-Hant": "本機", + "ja": "ローカル", + "ko": "로컬" + }, + { + "en": "privacy", + "zh-Hans": "隐私", + "zh-Hant": "隱私", + "ja": "プライバシー", + "ko": "개인정보" + }, + { + "en": "security", + "zh-Hans": "安全", + "zh-Hant": "資安", + "ja": "セキュリティ", + "ko": "보안" + }, + { + "en": "vulnerability", + "zh-Hans": "漏洞", + "zh-Hant": "漏洞", + "ja": "脆弱性", + "ko": "취약점" + }, + { + "en": "threat model", + "zh-Hans": "威胁模型", + "zh-Hant": "威脅模型", + "ja": "脅威モデル", + "ko": "위협 모델" + }, + { + "en": "reverse engineering", + "zh-Hans": "逆向工程", + "zh-Hant": "逆向工程", + "ja": "リバースエンジニアリング", + "ko": "리버스 엔지니어링" + }, + { + "en": "binary", + "zh-Hans": "二进制文件", + "zh-Hant": "二進位檔", + "ja": "バイナリ", + "ko": "바이너리" + }, + { + "en": "database", + "zh-Hans": "数据库", + "zh-Hant": "資料庫", + "ja": "データベース", + "ko": "데이터베이스" + }, + { + "en": "server", + "zh-Hans": "服务器", + "zh-Hant": "伺服器", + "ja": "サーバー", + "ko": "서버" + }, + { + "en": "browser", + "zh-Hans": "浏览器", + "zh-Hant": "瀏覽器", + "ja": "ブラウザ", + "ko": "브라우저" + }, + { + "en": "template", + "zh-Hans": "模板", + "zh-Hant": "範本", + "ja": "テンプレート", + "ko": "템플릿" + }, + { + "en": "starter", + "zh-Hans": "启动模板", + "zh-Hant": "起始範本", + "ja": "スターター", + "ko": "스타터" + }, + { + "en": "tutorial", + "zh-Hans": "教程", + "zh-Hant": "教學", + "ja": "チュートリアル", + "ko": "튜토리얼" + }, + { + "en": "real-time", + "zh-Hans": "实时", + "zh-Hant": "即時", + "ja": "リアルタイム", + "ko": "실시간" + }, + { + "en": "transcript", + "zh-Hans": "文字稿", + "zh-Hant": "逐字稿", + "ja": "文字起こし", + "ko": "대본" + }, + { + "en": "voice", + "zh-Hans": "语音", + "zh-Hant": "語音", + "ja": "音声", + "ko": "음성" + } + ] +} diff --git a/data/newcomer_i18n.json b/data/newcomer_i18n.json deleted file mode 100644 index 5661bf3..0000000 --- a/data/newcomer_i18n.json +++ /dev/null @@ -1,431 +0,0 @@ -{ - "rddmwmddr/android-ad-cleaner": { - "src": "关掉国产安卓手机系统里的广告、热搜、资讯推荐和营销推送。不 root,可还原,支持 AI 智能体一键执行。", - "zh-Hans": "关掉国产安卓手机系统里的广告、热搜、资讯推荐和营销推送。不 root,可还原,支持 AI 智能体一键执行。", - "zh-Hant": "關閉國產 Android 手機系統裡的廣告、熱搜、資訊推薦和行銷推播。不需 root,可還原,支援 AI 代理一鍵執行。", - "ja": "中国メーカー製 Android スマホのシステム内にある広告、トレンド検索、ニュースのおすすめ、マーケティング通知をオフにする。root 不要で元に戻せ、AI エージェントがワンクリックで実行できる。", - "ko": "중국산 안드로이드 스마트폰 시스템의 광고, 인기 검색어, 뉴스 추천, 마케팅 푸시를 꺼 준다. root 없이 쓸 수 있고 원래대로 되돌릴 수 있으며, AI 에이전트가 한 번에 실행할 수 있다.", - "en": "Turns off the ads, trending searches, news recommendations and marketing pushes built into Chinese Android phone systems. No root needed, reversible, and AI agents can run it in one step." - }, - "t3dotgg/tstack": { - "src": "The agent skills I use every day. Works with Claude Code and Codex.", - "zh-Hans": "我每天都在用的智能体技能。适用于 Claude Code 和 Codex。", - "zh-Hant": "我每天都在用的代理技能。適用於 Claude Code 和 Codex。", - "ja": "私が毎日使っているエージェントスキル。Claude Code と Codex で使える。", - "ko": "내가 매일 쓰는 에이전트 스킬. Claude Code와 Codex에서 쓸 수 있다." - }, - "andyhuo520/digital-human-koubo": { - "src": "AI digital-human talking-head videos from one photo: Renoise MCP generation + 5 editing styles + 48 creator-grade packaging components. Agent skill for Claude…", - "zh-Hans": "用一张照片生成 AI 数字人口播视频:Renoise MCP 生成 + 5 种剪辑风格 + 48 个创作者级包装组件。适用于 Claude 的智能体技能…", - "zh-Hant": "用一張照片生成 AI 數位人口播影片:Renoise MCP 生成 + 5 種剪輯風格 + 48 個創作者級包裝元件。適用於 Claude 的代理技能…", - "ja": "1 枚の写真から AI デジタルヒューマンのトーキングヘッド動画を作成:Renoise MCP による生成 + 5 種類の編集スタイル + 48 個のクリエイター向け演出パーツ。Claude 向けエージェントスキル…", - "ko": "사진 한 장으로 AI 디지털 휴먼 토킹헤드 영상 제작: Renoise MCP 생성 + 편집 스타일 5종 + 크리에이터급 패키징 컴포넌트 48개. Claude용 에이전트 스킬…" - }, - "DenisSergeevitch/ex-ussr-kinship-research": { - "src": "Evidence-first genealogy skill for AI agents (Codex, Claude Code): church books, civil, military, deportation and repression records across the former USSR. Re…", - "zh-Hans": "面向 AI 智能体(Codex、Claude Code)的证据优先家谱研究技能:涵盖前苏联地区的教会簿册、民事、军事、流放和政治迫害档案…", - "zh-Hant": "面向 AI 代理(Codex、Claude Code)的證據優先家譜研究技能:涵蓋前蘇聯地區的教會簿冊、民事、軍事、流放和政治迫害檔案…", - "ja": "AI エージェント(Codex、Claude Code)向けの、証拠第一の系譜調査スキル:旧ソ連全域の教会記録、民事、軍事、強制移住、弾圧に関する記録…", - "ko": "AI 에이전트(Codex, Claude Code)를 위한 증거 우선 족보 조사 스킬: 구소련 전역의 교회 기록부, 민사, 군사, 강제 이주, 탄압 기록…" - }, - "MiniMax-AI/mcode-stack": { - "src": "The workflows and skills the MiniMax Code team uses to build MiniMax Code. Open source, install and use.", - "zh-Hans": "MiniMax Code 团队用来构建 MiniMax Code 的工作流和技能。开源,安装即用。", - "zh-Hant": "MiniMax Code 團隊用來打造 MiniMax Code 的工作流程和技能。開源,安裝即可使用。", - "ja": "MiniMax Code チームが MiniMax Code の開発に使っているワークフローとスキル。オープンソースで、インストールしてすぐ使える。", - "ko": "MiniMax Code 팀이 MiniMax Code를 만드는 데 쓰는 워크플로와 스킬. 오픈 소스이며 설치해서 바로 쓸 수 있다." - }, - "morganlinton/BeautifulRust": { - "src": "Agent Skills that teach coding agents to write, review, and port idiomatic Rust, plus a tested clippy config. Works with Claude Code, Codex, Copilot, Cursor, a…", - "zh-Hans": "教编程智能体编写、审查和移植地道 Rust 代码的 Agent Skills,另附一份经过测试的 clippy 配置。适用于 Claude Code、Codex、Copilot、Cursor 等…", - "zh-Hant": "教程式設計代理撰寫、審查和移植道地 Rust 程式碼的 Agent Skills,另附一份經過測試的 clippy 設定。適用於 Claude Code、Codex、Copilot、Cursor 等…", - "ja": "コーディングエージェントに、イディオマティックな Rust の記述・レビュー・移植を教える Agent Skills。テスト済みの clippy 設定も付属。Claude Code、Codex、Copilot、Cursor など…", - "ko": "코딩 에이전트에게 관용적인 Rust 코드를 작성하고 리뷰하고 포팅하는 법을 가르치는 Agent Skills와 검증된 clippy 설정. Claude Code, Codex, Copilot, Cursor 등에서 쓸 수 있다…" - }, - "ChannelCooperStart/capri-ai": { - "src": "🌃 Capri — Edgerunners-inspired AI agent for your desktop. Works with Claude Code, Codex, Antigravity & more.", - "zh-Hans": "🌃 Capri —— 受《赛博朋克:边缘行者》启发的桌面 AI 智能体。适用于 Claude Code、Codex、Antigravity 等。", - "zh-Hant": "🌃 Capri —— 受《電馭叛客:邊緣行者》啟發的桌面 AI 代理。適用於 Claude Code、Codex、Antigravity 等。", - "ja": "🌃 Capri — 『サイバーパンク:エッジランナーズ』にインスパイアされたデスクトップ向け AI エージェント。Claude Code、Codex、Antigravity などで使える。", - "ko": "🌃 Capri — 《사이버펑크: 엣지러너》에서 영감을 받은 데스크톱용 AI 에이전트. Claude Code, Codex, Antigravity 등에서 쓸 수 있다." - }, - "ZiChuanLan/agent-purge": { - "src": "One persona, many coding agents. Replace or inject system prompts across codex, claude, opencode, grok, omp, hermes, pi, zcode - with a local web console.", - "zh-Hans": "一个人设,适配多个编程智能体。可在 codex、claude、opencode、grok、omp、hermes、pi、zcode 之间替换或注入系统提示词,并提供本地 Web 控制台。", - "zh-Hant": "一個人設,適用多個程式設計代理。可在 codex、claude、opencode、grok、omp、hermes、pi、zcode 之間替換或注入系統提示詞,並提供本機 Web 主控台。", - "ja": "1 つのペルソナで複数のコーディングエージェントに対応。codex、claude、opencode、grok、omp、hermes、pi、zcode のシステムプロンプトを置き換えたり注入したりでき、ローカルの Web コンソール付き。", - "ko": "하나의 페르소나로 여러 코딩 에이전트에 적용. codex, claude, opencode, grok, omp, hermes, pi, zcode의 시스템 프롬프트를 교체하거나 주입할 수 있으며 로컬 웹 콘솔을 제공한다." - }, - "shipwords-dev/shipwords": { - "src": "Ship a money-making AI site for every new keyword. Cloudflare-native starter with auth, credits, payments and AI generation. / 新词站群框架:一个新词一个站,一个下午上线。起量的继续迭代,没起…", - "zh-Hans": "为每个新关键词上线一个赚钱的 AI 网站。基于 Cloudflare 的启动模板,含登录认证、积分、支付和 AI 生成。/ 新词站群框架:一个新词一个站,一个下午上线。起量的继续迭代,没起…", - "zh-Hant": "為每個新關鍵字上線一個賺錢的 AI 網站。基於 Cloudflare 的起始範本,含登入驗證、點數、付款和 AI 生成。/ 新詞站群框架:一個新詞一個站,一個下午上線。起量的繼續迭代,沒起…", - "ja": "新しいキーワードごとに稼げる AI サイトを公開。認証、クレジット、決済、AI 生成を備えた Cloudflare ネイティブのスターター。/ 新語サイト群フレームワーク:1 語につき 1 サイト、午後のうちに公開。伸びたものは改良を続け、伸びなかったものは…", - "ko": "새 키워드마다 돈 되는 AI 사이트를 하나씩 배포. 인증, 크레딧, 결제, AI 생성을 갖춘 Cloudflare 네이티브 스타터. / 신조어 사이트군 프레임워크: 키워드 하나에 사이트 하나, 오후 한나절이면 오픈. 반응이 오면 계속 개선하고, 반응이 없으면…", - "en": "Ship a money-making AI site for every new keyword. Cloudflare-native starter with auth, credits, payments and AI generation. / A framework for farms of new-keyword sites: one new keyword, one site, live in an afternoon. Keep iterating on the ones that take off, drop the ones that don't…" - }, - "patch-gg/anymove": { - "src": "Motion capture for any creature from one AI video: two cameras in one frame, a DINOv2 joint reader, the rig fitted in both views, a GLB out.", - "zh-Hans": "只用一段 AI 视频,为任何生物做动作捕捉:一个画面里两个机位、DINOv2 关节识别、在两个视角中拟合骨架,输出 GLB。", - "zh-Hant": "只用一段 AI 影片,為任何生物做動作捕捉:一個畫面裡兩個機位、DINOv2 關節辨識、在兩個視角中擬合骨架,輸出 GLB。", - "ja": "1 本の AI 動画からあらゆる生き物のモーションキャプチャを実現:1 フレームに 2 台のカメラ、DINOv2 による関節検出、両方の視点でリグをフィットさせ、GLB を出力。", - "ko": "AI 영상 하나로 모든 생물의 모션 캡처: 한 화면에 카메라 두 대, DINOv2 관절 인식, 두 시점 모두에 리그를 맞추고 GLB로 출력." - }, - "haydenschmitty/floorplan": { - "src": "See how your app actually fits together. An interactive, plain-English map of your codebase, drawn by Claude or Codex.", - "zh-Hans": "看清你的应用究竟是如何拼装在一起的。一张可交互、用通俗英语讲解的代码库地图,由 Claude 或 Codex 绘制。", - "zh-Hant": "看清你的應用程式究竟是如何組合在一起的。一張可互動、用淺顯英文說明的程式碼庫地圖,由 Claude 或 Codex 繪製。", - "ja": "アプリが実際にどう組み合わさっているかが見える。Claude または Codex が描く、平易な英語で説明されたインタラクティブなコードベースマップ。", - "ko": "앱이 실제로 어떻게 맞물려 있는지 보여 준다. Claude나 Codex가 그려 주는, 쉬운 영어로 설명된 대화형 코드베이스 지도." - }, - "anonnerdfrenzy/survival-llm": { - "src": "A free AI assistant and survival library that runs on your own computer, with no internet needed. Shows the source of every answer.", - "zh-Hans": "运行在你自己电脑上的免费 AI 助手兼生存知识库,无需联网。每个回答都会标明来源。", - "zh-Hant": "在你自己電腦上執行的免費 AI 助理兼生存知識庫,無需連網。每個回答都會標明來源。", - "ja": "自分のパソコンで動く無料の AI アシスタント兼サバイバル資料庫で、インターネット接続は不要。すべての回答に出典を表示する。", - "ko": "내 컴퓨터에서 실행되는 무료 AI 어시스턴트이자 서바이벌 라이브러리로, 인터넷이 필요 없다. 모든 답변의 출처를 보여 준다." - }, - "konlu/story-studio": { - "src": "从选题到剪映草稿的一站式 AI 短视频内容创作 Agent Skill", - "zh-Hans": "从选题到剪映草稿的一站式 AI 短视频内容创作 Agent Skill", - "zh-Hant": "從選題到剪映草稿的一站式 AI 短影片內容創作 Agent Skill", - "ja": "テーマ選定から剪映(CapCut)の下書きまでを一気通貫で行う、AI ショート動画制作向けの Agent Skill", - "ko": "주제 선정부터 젠잉(剪映, CapCut) 초안까지 한 번에 끝내는 AI 숏폼 영상 제작용 Agent Skill", - "en": "A one-stop AI short-video content creation Agent Skill, from picking a topic to a JianYing (CapCut) draft" - }, - "daveebbelaar/bama": { - "src": "BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI.", - "zh-Hans": "BAMA:Build Any Mac App(构建任意 Mac 应用)。用 Swift 和 SwiftUI 调研、仿制、设计、构建、优化和测试原生 macOS 应用的智能体技能。", - "zh-Hant": "BAMA:Build Any Mac App(打造任何 Mac 應用程式)。用 Swift 和 SwiftUI 研究、仿製、設計、建置、最佳化和測試原生 macOS 應用程式的代理技能。", - "ja": "BAMA:Build Any Mac App(あらゆる Mac アプリを作る)。Swift と SwiftUI でネイティブ macOS アプリを調査・クローン・設計・構築・最適化・テストするためのエージェントスキル。", - "ko": "BAMA: Build Any Mac App(어떤 Mac 앱이든 만든다). Swift와 SwiftUI로 네이티브 macOS 앱을 조사, 복제, 설계, 빌드, 최적화, 테스트하는 에이전트 스킬." - }, - "qybaihe/bla": { - "src": "🛡️ BLA (Blind LLM Agents) — Adversarial defense shield that protects binaries, Electron apps, JS bundles, Python, and WebAssembly against AI reverse-engineerin…", - "zh-Hans": "🛡️ BLA(Blind LLM Agents)—— 对抗式防御盾,保护二进制文件、Electron 应用、JS 包、Python 和 WebAssembly 免受 AI 逆向工程…", - "zh-Hant": "🛡️ BLA(Blind LLM Agents)—— 對抗式防禦盾,保護二進位檔、Electron 應用程式、JS 套件、Python 和 WebAssembly 免受 AI 逆向工程…", - "ja": "🛡️ BLA(Blind LLM Agents)— バイナリ、Electron アプリ、JS バンドル、Python、WebAssembly を AI によるリバースエンジニアリングから守る、敵対的防御シールド…", - "ko": "🛡️ BLA(Blind LLM Agents) — 바이너리, Electron 앱, JS 번들, Python, WebAssembly를 AI 리버스 엔지니어링으로부터 보호하는 적대적 방어 실드…" - }, - "andyhuo520/vibe-knowledge": { - "src": "Vibe 知识大赏:一个知识点 → 一条有旁白、每句有出处的精品知识短片(Claude Code skill · 44 套风格 · 代码逐帧成片)", - "zh-Hans": "Vibe 知识大赏:一个知识点 → 一条有旁白、每句有出处的精品知识短片(Claude Code skill · 44 套风格 · 代码逐帧成片)", - "zh-Hant": "Vibe 知識大賞:一個知識點 → 一支有旁白、每句有出處的精品知識短片(Claude Code skill · 44 套風格 · 程式碼逐格成片)", - "ja": "Vibe 知識大賞:1 つの知識ポイント → ナレーション付きで、すべての文に出典がある高品質な知識ショート動画に(Claude Code skill · 44 種のスタイル · コードでフレームごとに生成)", - "ko": "Vibe 지식 대상: 지식 포인트 하나 → 내레이션이 있고 모든 문장에 출처가 달린 고품질 지식 쇼츠 영상 한 편(Claude Code skill · 스타일 44종 · 코드로 프레임 단위 제작)", - "en": "Vibe Knowledge Awards: one knowledge point → one polished short knowledge video with narration and a source for every sentence (Claude Code skill · 44 styles · built frame by frame in code)" - }, - "davemessew/AgentFlux": { - "src": "Agentic AI platform for visual workflows and autonomous agents. Run it with Docker on your own computer or server.", - "zh-Hans": "面向可视化工作流和自主智能体的智能体式 AI 平台。可用 Docker 在你自己的电脑或服务器上运行。", - "zh-Hant": "適用於視覺化工作流程與自主代理的代理式 AI 平台。可用 Docker 在你自己的電腦或伺服器上執行。", - "ja": "ビジュアルワークフローと自律型エージェントのためのエージェント型 AI プラットフォーム。Docker で自分のパソコンやサーバーに立ち上げられる。", - "ko": "시각적 워크플로와 자율 에이전트를 위한 에이전틱 AI 플랫폼. Docker로 내 컴퓨터나 서버에서 실행할 수 있다." - }, - "wangrongding/tv-fresh": { - "src": "tv-fresh 电视焕新:小米电视(MIUI TV)去广告/清理预装/换桌面/装代理与影视仓的 Agent Skill——免root可逆,含固件逆向实录与一键脚本", - "zh-Hans": "tv-fresh 电视焕新:小米电视(MIUI TV)去广告/清理预装/换桌面/装代理与影视仓的 Agent Skill——免root可逆,含固件逆向实录与一键脚本", - "zh-Hant": "tv-fresh 電視煥新:小米電視(MIUI TV)去廣告/清理預裝/換桌面/裝代理與影視倉的 Agent Skill——免root可逆,含韌體逆向實錄與一鍵指令碼", - "ja": "tv-fresh テレビ刷新:Xiaomi TV(MIUI TV)の広告削除/プリインストールアプリの整理/ホーム画面の変更/プロキシと動画ソースアプリ「影视仓」の導入を行う Agent Skill——root 不要で元に戻せ、ファームウェア解析の記録とワンクリックスクリプト付き", - "ko": "tv-fresh TV 새 단장: 샤오미 TV(MIUI TV)의 광고 제거/사전 설치 앱 정리/런처 교체/프록시와 영상 소스 앱 '影视仓' 설치를 해 주는 Agent Skill——root 없이 가능하고 되돌릴 수 있으며, 펌웨어 리버스 기록과 원클릭 스크립트 포함", - "en": "tv-fresh TV refresh: an Agent Skill that removes ads from Xiaomi TV (MIUI TV), cleans out preinstalled apps, swaps the launcher, and installs a proxy and the video-source app \"YingShiCang\" (影视仓) — no root needed, reversible, with a firmware reverse-engineering log and a one-click script" - }, - "hevnsnt/CVEngine": { - "src": "AI-first external attack surface assessment with continuous discovery, evidence-based vulnerability validation, and developer-agent MCP integration.", - "zh-Hans": "以 AI 为先的外部攻击面评估:持续发现资产、基于证据验证漏洞,并集成开发者智能体 MCP。", - "zh-Hant": "以 AI 為先的外部攻擊面評估:持續探索資產、以證據為基礎驗證漏洞,並整合開發者代理 MCP。", - "ja": "AI ファーストの外部攻撃対象領域アセスメント。継続的な探索、証拠に基づく脆弱性の検証、開発者エージェント向け MCP 連携を備える。", - "ko": "AI 우선 외부 공격 표면 평가: 지속적인 탐색, 증거 기반 취약점 검증, 개발자 에이전트용 MCP 연동을 제공한다." - }, - "mochiiwuff/capri-desktop": { - "src": "Capri, the Project Capricorn construct from Cyberpunk: Edgerunners 2, living on your desktop and narrating what Claude Code is doing.", - "zh-Hans": "Capri,来自《赛博朋克:边缘行者 2》的摩羯座计划(Project Capricorn)造物,住在你的桌面上,实时讲述 Claude Code 正在做什么。", - "zh-Hant": "Capri,來自《電馭叛客:邊緣行者 2》的摩羯座計畫(Project Capricorn)造物,住在你的桌面上,講述 Claude Code 正在做什麼。", - "ja": "Capri は『サイバーパンク:エッジランナーズ 2』の Project Capricorn(カプリコーン計画)のコンストラクト。デスクトップに住みつき、Claude Code の作業をナレーションする。", - "ko": "Capri는 《사이버펑크: 엣지러너 2》의 프로젝트 카프리콘(Project Capricorn)에서 나온 구조체로, 데스크톱에 살면서 Claude Code가 하는 일을 내레이션한다." - }, - "wangzan101/Mika": { - "src": "Mika — 你手机上的私人 AI 助理,替你操作 App、上网、把事办成。An on-device AI agent for Android that operates apps and the web to get things done for you.", - "zh-Hans": "Mika —— 你手机上的私人 AI 助理,替你操作 App、上网、把事办成。一个运行在 Android 本机上的 AI 智能体,替你操作 App 和网页,把事情办好。", - "zh-Hant": "Mika —— 你手機上的私人 AI 助理,替你操作 App、上網、把事辦成。一個在 Android 本機執行的 AI 代理,替你操作 App 和網頁,把事情辦好。", - "ja": "Mika — スマホの中のパーソナル AI アシスタント。アプリを操作し、ネットを使い、用事を片づけてくれる。Android 端末上で動作する AI エージェントが、アプリや Web を操作して代わりに作業を進める。", - "ko": "Mika — 내 휴대폰 속 개인 AI 비서. 앱을 조작하고 인터넷을 쓰며 일을 처리해 준다. Android 기기 안에서 실행되는 AI 에이전트가 앱과 웹을 대신 조작해 일을 끝낸다.", - "en": "Mika — a personal AI assistant on your phone that operates apps, browses the web and gets things done for you. An on-device AI agent for Android that operates apps and the web to get things done for you." - }, - "ccch1mneyyy/dsh-go": { - "src": "dsh-go — DeepSeek Harness 装进口袋:手机本机运行,也能遥控你的电脑。", - "zh-Hans": "dsh-go —— DeepSeek Harness 装进口袋:手机本机运行,也能遥控你的电脑。", - "zh-Hant": "dsh-go —— DeepSeek Harness 裝進口袋:手機本機執行,也能遙控你的電腦。", - "ja": "dsh-go — DeepSeek Harness をポケットに:スマホ本体で動作し、パソコンのリモート操作もできる。", - "ko": "dsh-go — DeepSeek Harness를 주머니 속에: 휴대폰 안에서 직접 실행되고, 내 컴퓨터도 원격으로 제어할 수 있다.", - "en": "dsh-go — DeepSeek Harness in your pocket: it runs on the phone itself and can also remote-control your computer." - }, - "jackwener/DeepseekHarness-Android": { - "src": "免 ROOT 免 Termux,一个 APK 在安卓手机上跑 DeepSeek Harness。引擎内嵌 App 进程 · 读屏操作 App · 改系统设置 · 定时/条件自动化 · 可选 Shizuku", - "zh-Hans": "免 ROOT 免 Termux,一个 APK 在安卓手机上跑 DeepSeek Harness。引擎内嵌 App 进程 · 读屏操作 App · 改系统设置 · 定时/条件自动化 · 可选 Shizuku", - "zh-Hant": "免 ROOT 免 Termux,一個 APK 就能在 Android 手機上跑 DeepSeek Harness。引擎內嵌於 App 程序 · 讀取螢幕並操作 App · 修改系統設定 · 定時/條件自動化 · 可選用 Shizuku", - "ja": "root も Termux も不要。1 つの APK で Android スマホ上に DeepSeek Harness を動かす。エンジンはアプリのプロセスに内蔵 · 画面を読み取ってアプリを操作 · システム設定の変更 · 定時/条件付き自動化 · Shizuku は任意", - "ko": "root도 Termux도 필요 없이, APK 하나로 Android 폰에서 DeepSeek Harness를 실행한다. 엔진이 앱 프로세스에 내장 · 화면을 읽어 앱 조작 · 시스템 설정 변경 · 예약/조건부 자동화 · Shizuku는 선택 사항", - "en": "No root and no Termux: one APK runs DeepSeek Harness on an Android phone. Engine embedded in the app process · reads the screen to operate apps · changes system settings · scheduled/conditional automation · optional Shizuku" - }, - "jmanico/grim-prompter": { - "src": "Threat modeling for AI coding agents: point Claude Code, Codex or any agent at your repo and get an evidence-traced threat model. 36 architectures, 29 methods,…", - "zh-Hans": "面向 AI 编程智能体的威胁建模:让 Claude Code、Codex 或任何智能体读取你的仓库,生成有证据可追溯的威胁模型。36 种架构,29 种方法,…", - "zh-Hant": "針對 AI 程式設計代理的威脅建模:讓 Claude Code、Codex 或任何代理讀取你的儲存庫,產生有證據可追溯的威脅模型。36 種架構,29 種方法,…", - "ja": "AI コーディングエージェント向けの脅威モデリング:Claude Code、Codex など任意のエージェントにリポジトリを読ませると、証拠をたどれる脅威モデルが得られる。36 種類のアーキテクチャ、29 種類の手法、…", - "ko": "AI 코딩 에이전트를 위한 위협 모델링: Claude Code, Codex 등 어떤 에이전트든 저장소에 연결하면 근거를 추적할 수 있는 위협 모델을 만들어 준다. 아키텍처 36종, 기법 29종, …" - }, - "SAOS-3624/dsh-video-storyboard": { - "src": "Scene-aware storyboard for DeepSeek Harness: 9-16 numbered cells with timestamps + transcript + an audio envelope, packed into ONE image (384 tokens). Two tool…", - "zh-Hans": "面向 DeepSeek Harness 的场景感知分镜:把 9–16 个带编号的格子,连同时间戳、文字稿和音频包络,打包进同一张图(384 个 token)。两个工具…", - "zh-Hant": "針對 DeepSeek Harness 的場景感知分鏡:把 9–16 個帶編號的格子,連同時間戳記、逐字稿和音訊包絡,打包進同一張圖(384 個 token)。兩個工具…", - "ja": "DeepSeek Harness 向けのシーン認識ストーリーボード:番号付きの 9〜16 コマを、タイムスタンプ、文字起こし、音声エンベロープとともに 1 枚の画像(384 トークン)にまとめる。2 つのツール…", - "ko": "DeepSeek Harness용 장면 인식 스토리보드: 번호가 매겨진 9~16개 칸을 타임스탬프, 대본, 오디오 엔벨로프와 함께 이미지 한 장(384 토큰)에 담는다. 도구 두 개…" - }, - "routerhubSI/uncensored-ai-api": { - "src": "Uncensored AI API and models — one key for Claude, GPT, Gemini, Grok, DeepSeek, GLM and Qwen, with uncensored and abliterated variants where available. OpenAI-…", - "zh-Hans": "无审查 AI API 与模型——一个密钥即可调用 Claude、GPT、Gemini、Grok、DeepSeek、GLM 和 Qwen,并在可用时提供无审查和 abliterated 变体。兼容 OpenAI-…", - "zh-Hant": "無審查 AI API 與模型——一組金鑰即可呼叫 Claude、GPT、Gemini、Grok、DeepSeek、GLM 和 Qwen,並在可用時提供無審查與 abliterated 變體。相容 OpenAI-…", - "ja": "検閲なしの AI API とモデル——1 つのキーで Claude、GPT、Gemini、Grok、DeepSeek、GLM、Qwen を利用でき、提供されている場合は無検閲版・abliterated 版も選べる。OpenAI-…", - "ko": "검열 없는 AI API와 모델 — 키 하나로 Claude, GPT, Gemini, Grok, DeepSeek, GLM, Qwen을 쓸 수 있고, 제공되는 경우 무검열·abliterated 변형도 선택할 수 있다. OpenAI-…" - }, - "JunWan666/astrbot-for-android": { - "src": "在 Android 手机上本地部署和管理 AstrBot 与 NapCat,内置 PRoot Ubuntu 运行环境,支持原生管理界面、WebUI、日志、备份恢复和独立更新,无需 Root。", - "zh-Hans": "在 Android 手机上本地部署和管理 AstrBot 与 NapCat,内置 PRoot Ubuntu 运行环境,支持原生管理界面、WebUI、日志、备份恢复和独立更新,无需 Root。", - "zh-Hant": "在 Android 手機上本機部署並管理 AstrBot 與 NapCat,內建 PRoot Ubuntu 執行環境,支援原生管理介面、WebUI、記錄檔、備份還原和獨立更新,無需 Root。", - "ja": "Android スマホ上で AstrBot と NapCat をローカルにデプロイして管理できる。PRoot Ubuntu の実行環境を内蔵し、ネイティブ管理画面、WebUI、ログ、バックアップと復元、独立したアップデートに対応。root 不要。", - "ko": "Android 폰에서 AstrBot과 NapCat을 로컬로 배포하고 관리한다. PRoot Ubuntu 실행 환경을 내장했고, 네이티브 관리 화면, WebUI, 로그, 백업·복원, 독립 업데이트를 지원한다. root 불필요.", - "en": "Deploy and manage AstrBot and NapCat locally on an Android phone. Ships with a built-in PRoot Ubuntu runtime and supports a native management UI, WebUI, logs, backup and restore, and independent updates, with no root required." - }, - "aa1143/NamiGPT": { - "src": "零基础入门大模型(LLM)的基础教程:从零手写 GPT-2,一行行看懂大模型是怎么工作的 / Build GPT-2 from scratch in PyTorch, step by step", - "zh-Hans": "零基础入门大模型(LLM)的基础教程:从零手写 GPT-2,一行行看懂大模型是怎么工作的 / 用 PyTorch 从零开始、一步步构建 GPT-2", - "zh-Hant": "零基礎入門大型語言模型(LLM)的基礎教學:從零手寫 GPT-2,一行行看懂大型語言模型是怎麼運作的 / 用 PyTorch 從零開始、一步步建構 GPT-2", - "ja": "予備知識ゼロから学ぶ大規模言語モデル(LLM)の入門チュートリアル:GPT-2 をゼロから手書きし、LLM がどう動くかを 1 行ずつ理解する / PyTorch で GPT-2 をゼロから段階的に構築", - "ko": "사전 지식 없이 시작하는 대규모 언어 모델(LLM) 입문 튜토리얼: GPT-2를 처음부터 직접 짜면서 LLM이 어떻게 동작하는지 한 줄씩 이해한다 / PyTorch로 GPT-2를 처음부터 단계별로 구축", - "en": "A beginner tutorial for large language models (LLMs): write GPT-2 by hand from scratch and see line by line how an LLM works / Build GPT-2 from scratch in PyTorch, step by step" - }, - "jacke-pp/ai-wallet-binance": { - "src": "让任何 AI 用你自己的币安 AI 钱包交易:秒买秒卖、狙击 Agent 专属发射台(Four、Flap、GANG)、AI 专属 Mint、本机交易页面。币安签名,不碰私钥。免费开源 MIT · 作者:Jacke_pp · 联系:X @Jacke_pp(私信)", - "zh-Hans": "让任何 AI 用你自己的币安 AI 钱包交易:秒买秒卖、狙击 Agent 专属发射台(Four、Flap、GANG)、AI 专属 Mint、本机交易页面。币安签名,不碰私钥。免费开源 MIT · 作者:Jacke_pp · 联系:X @Jacke_pp(私信)", - "zh-Hant": "讓任何 AI 用你自己的幣安 AI 錢包交易:秒買秒賣、狙擊 Agent 專屬發射台(Four、Flap、GANG)、AI 專屬 Mint、本機交易頁面。幣安簽名,不碰私鑰。免費開源 MIT · 作者:Jacke_pp · 聯絡:X @Jacke_pp(私訊)", - "ja": "どんな AI でも、あなた自身の Binance AI ウォレットで取引できる:即時の売買、Agent 専用ローンチパッド(Four、Flap、GANG)でのスナイプ、AI 専用 Mint、ローカルの取引ページ。署名は Binance が行い、秘密鍵には触れない。無料のオープンソース、MIT · 作者:Jacke_pp · 連絡先:X @Jacke_pp(DM)", - "ko": "어떤 AI든 내 Binance AI 지갑으로 거래할 수 있다: 즉시 매수·매도, Agent 전용 런치패드(Four, Flap, GANG) 스나이핑, AI 전용 Mint, 로컬 거래 페이지. 서명은 Binance가 처리하며 개인 키는 건드리지 않는다. 무료 오픈 소스 MIT · 제작자: Jacke_pp · 연락: X @Jacke_pp(DM)", - "en": "Let any AI trade with your own Binance AI wallet: instant buy and sell, sniping on Agent-only launchpads (Four, Flap, GANG), AI-only Mint, and a local trading page. Binance signs the transactions and your private key is never touched. Free and open source, MIT · Author: Jacke_pp · Contact: X @Jacke_pp (DM)" - }, - "heydeer/pngdeer": { - "src": "Smaller images, same picture. Compress PNGs to PNG or WebP with automatic quality. PNG output is 8–12% smaller than TinyPNG at equal quality on the median imag…", - "zh-Hans": "图片更小,画面不变。自动选择画质,把 PNG 压缩成 PNG 或 WebP。在同等画质下,对中位数图片,PNG 输出比 TinyPNG 小 8–12%…", - "zh-Hant": "圖片更小,畫面不變。自動選擇畫質,把 PNG 壓縮成 PNG 或 WebP。在同等畫質下,對中位數圖片,PNG 輸出比 TinyPNG 小 8–12%…", - "ja": "画像は小さく、見た目はそのまま。品質を自動で決めて、PNG を PNG または WebP に圧縮する。同じ品質なら、中央値の画像で PNG 出力が TinyPNG より 8〜12% 小さい…", - "ko": "화질은 그대로, 용량은 더 작게. 화질을 자동으로 정해 PNG를 PNG 또는 WebP로 압축한다. 같은 화질 기준으로 중앙값 이미지에서 PNG 출력이 TinyPNG보다 8~12% 작다…" - }, - "emanuele-em/kanzo": { - "src": "Self-hosted kanban for humans and agents. One 4 MB binary, starts in 2 ms, zero setup.", - "zh-Hans": "自托管的看板,人和智能体都能用。一个 4 MB 的二进制文件,2 毫秒启动,零配置。", - "zh-Hant": "自行架設的看板,人和代理都能用。一個 4 MB 的二進位檔,2 毫秒啟動,零設定。", - "ja": "人間にもエージェントにも使える、セルフホスト型のかんばん。4 MB のバイナリ 1 つで、2 ミリ秒で起動し、セットアップは不要。", - "ko": "사람과 에이전트가 함께 쓰는 셀프 호스팅 칸반. 4MB짜리 바이너리 하나로, 2ms 만에 시작되고 별도 설정이 필요 없다." - }, - "Cattmonkey/ChaosIntelligence": { - "src": "把智能体当函数,把想法写成程序。Agent-native functional language with a CLI, Web IDE, goal-driven bots and live UI. Source-available; no AI training.", - "zh-Hans": "把智能体当函数,把想法写成程序。原生支持智能体的函数式语言,带 CLI、Web IDE、目标驱动的机器人和实时界面。源码可见;禁止用于 AI 训练。", - "zh-Hant": "把代理當函式,把想法寫成程式。原生支援代理的函數式語言,附 CLI、Web IDE、目標導向的機器人和即時介面。原始碼可見;禁止用於 AI 訓練。", - "ja": "エージェントを関数として扱い、アイデアをプログラムにする。エージェントネイティブな関数型言語で、CLI、Web IDE、ゴール駆動のボット、ライブ UI を備える。ソース公開(source-available)。AI の学習には使用不可。", - "ko": "에이전트를 함수처럼 다뤄 아이디어를 프로그램으로 만든다. 에이전트 네이티브 함수형 언어로, CLI, 웹 IDE, 목표 기반 봇, 실시간 UI를 갖췄다. 소스 공개(source-available), AI 학습 용도 사용 금지.", - "en": "Treat agents as functions and turn ideas into programs. An agent-native functional language with a CLI, Web IDE, goal-driven bots and live UI. Source-available; no AI training." - }, - "mokevnin/dev-quality-gates": { - "src": "An opinionated, curated list of tools for enforcing software development standards: one recommended tool per job, with limits.", - "zh-Hans": "一份有主见、精挑细选的工具清单,用来落实软件开发规范:每项工作只推荐一个工具,并注明其局限。", - "zh-Hant": "一份有主見、精挑細選的工具清單,用來落實軟體開發規範:每項工作只推薦一個工具,並註明其限制。", - "ja": "ソフトウェア開発の基準を守るためのツールを、独自の方針で厳選したリスト。1 つの用途につき推奨ツールは 1 つで、制約も明記している。", - "ko": "소프트웨어 개발 표준을 지키기 위한 도구를 뚜렷한 기준으로 엄선한 목록. 작업마다 추천 도구는 하나이며, 한계도 함께 적어 두었다." - }, - "sanjayadanushka712/Ghost-Night": { - "src": "Local-only browser fingerprint & identity rotation toolkit for authorized security testing. Tor/obfs4, coherent profiles, WebRTC/DNS leak protection.", - "zh-Hans": "仅本地运行的浏览器指纹与身份轮换工具包,用于经授权的安全测试。支持 Tor/obfs4、一致性配置档、WebRTC/DNS 泄漏防护。", - "zh-Hant": "僅在本機執行的瀏覽器指紋與身分輪替工具包,用於經授權的安全測試。支援 Tor/obfs4、一致性設定檔、WebRTC/DNS 洩漏防護。", - "ja": "ローカル専用のブラウザフィンガープリント/ID ローテーション用ツールキットで、許可を得たセキュリティテストが対象。Tor/obfs4、整合性のあるプロファイル、WebRTC/DNS リーク対策に対応。", - "ko": "로컬에서만 동작하는 브라우저 핑거프린트·신원 교체 툴킷으로, 허가받은 보안 테스트용이다. Tor/obfs4, 일관된 프로필, WebRTC/DNS 유출 방지를 지원한다." - }, - "UniteCuttlefishBolt/Canva-Pro": { - "src": "Canva Pro 2026: Complete standalone setup with all features unlocked and ready to run.", - "zh-Hans": "Canva Pro 2026:完整的独立安装包,所有功能均已解锁,开箱即用。", - "zh-Hant": "Canva Pro 2026:完整的獨立安裝包,所有功能均已解鎖,開箱即用。", - "ja": "Canva Pro 2026:全機能が解放済みで、すぐに使える完全版のスタンドアロンセットアップ。", - "ko": "Canva Pro 2026: 모든 기능이 잠금 해제된 상태로 바로 실행할 수 있는 완전한 독립 설치본." - }, - "CaretakerPlain/Whale-Tracker": { - "src": "Whale Tracker 2026: Pre-activated desktop edition with all features ready to run.", - "zh-Hans": "Whale Tracker 2026:预先激活的桌面版,所有功能开箱即用。", - "zh-Hant": "Whale Tracker 2026:預先啟用的桌面版,所有功能開箱即用。", - "ja": "Whale Tracker 2026:アクティベーション済みのデスクトップ版で、全機能をすぐに使える。", - "ko": "Whale Tracker 2026: 사전 활성화된 데스크톱 버전으로, 모든 기능을 바로 쓸 수 있다." - }, - "ScorpionHub17/KMS-Pico": { - "src": "Kms Pico Free 2026 complete standalone setup. Pre-activated desktop edition ready to run, ensuring a smooth installation experience.", - "zh-Hans": "Kms Pico Free 2026 完整独立安装包。预先激活的桌面版,开箱即用,安装过程顺畅。", - "zh-Hant": "Kms Pico Free 2026 完整獨立安裝包。預先啟用的桌面版,開箱即用,安裝過程順暢。", - "ja": "Kms Pico Free 2026 の完全版スタンドアロンセットアップ。アクティベーション済みのデスクトップ版で、すぐに使え、スムーズにインストールできる。", - "ko": "Kms Pico Free 2026 완전한 독립 설치본. 사전 활성화된 데스크톱 버전으로, 바로 실행할 수 있고 설치가 매끄럽다." - }, - "Sourcecladrag/Windows-Optimizer": { - "src": "Windows Optimizer 2026 - Full working installer with advanced system tweaks and enhancements ready to run.", - "zh-Hans": "Windows Optimizer 2026——可直接使用的完整安装程序,含高级系统调优与增强功能。", - "zh-Hant": "Windows Optimizer 2026——可直接使用的完整安裝程式,含進階系統調校與強化功能。", - "ja": "Windows Optimizer 2026——高度なシステムチューニングと機能強化を備えた、すぐに使える完全版インストーラー。", - "ko": "Windows Optimizer 2026 — 고급 시스템 튜닝과 개선 기능을 갖춘, 바로 실행할 수 있는 완전한 설치 프로그램." - }, - "AshReinvigorate/Microsoft-Office": { - "src": "Microsoft Office 2026 complete standalone setup. Ready-to-run desktop installation with all features pre-activated.", - "zh-Hans": "Microsoft Office 2026 完整独立安装包。开箱即用的桌面版安装,所有功能均已预先激活。", - "zh-Hant": "Microsoft Office 2026 完整獨立安裝包。開箱即用的桌面版安裝,所有功能均已預先啟用。", - "ja": "Microsoft Office 2026 の完全版スタンドアロンセットアップ。すぐに使えるデスクトップ版インストールで、全機能がアクティベーション済み。", - "ko": "Microsoft Office 2026 완전한 독립 설치본. 바로 실행할 수 있는 데스크톱 설치본으로, 모든 기능이 사전 활성화되어 있다." - }, - "Fangludisclose/SystemCare-Pro": { - "src": "Systemcare Pro 2026 full working installer. Complete standalone setup with all features activated, ready to run.", - "zh-Hans": "Systemcare Pro 2026 可直接使用的完整安装程序。完整独立安装包,所有功能均已激活,开箱即用。", - "zh-Hant": "Systemcare Pro 2026 可直接使用的完整安裝程式。完整獨立安裝包,所有功能均已啟用,開箱即用。", - "ja": "Systemcare Pro 2026 のすぐに使える完全版インストーラー。全機能がアクティベーション済みの完全なスタンドアロンセットアップで、そのまま実行できる。", - "ko": "Systemcare Pro 2026 바로 쓸 수 있는 완전한 설치 프로그램. 모든 기능이 활성화된 완전한 독립 설치본으로, 바로 실행할 수 있다." - }, - "FormHalberdierSouk/SoundPad": { - "src": "Soundpad 2026: Full working installer with all essential plugins and effects for professional audio production.", - "zh-Hans": "Soundpad 2026:可直接使用的完整安装程序,内含专业音频制作所需的全部重要插件和效果。", - "zh-Hant": "Soundpad 2026:可直接使用的完整安裝程式,內含專業音訊製作所需的全部重要外掛與效果。", - "ja": "Soundpad 2026:プロ向けのオーディオ制作に必要なプラグインとエフェクトをひととおり揃えた、すぐに使える完全版インストーラー。", - "ko": "Soundpad 2026: 전문 오디오 제작에 필요한 주요 플러그인과 이펙트를 모두 담은, 바로 쓸 수 있는 완전한 설치 프로그램." - }, - "Lostbrocreate/Adobe-InDesign": { - "src": "Secure digital asset deployment pipeline 2026 full working installer. Ready-to-run solution for efficient online and offline publishing.", - "zh-Hans": "安全数字资产部署流水线 2026 可直接使用的完整安装程序。开箱即用的方案,兼顾线上与线下出版的效率。", - "zh-Hant": "安全數位資產部署管線 2026 可直接使用的完整安裝程式。開箱即用的方案,兼顧線上與線下出版的效率。", - "ja": "セキュアなデジタルアセット配備パイプライン 2026 のすぐに使える完全版インストーラー。オンラインとオフラインの出版を効率化する、すぐ使えるソリューション。", - "ko": "보안 디지털 자산 배포 파이프라인 2026 바로 쓸 수 있는 완전한 설치 프로그램. 온라인과 오프라인 출판을 효율적으로 처리하는, 바로 실행 가능한 솔루션." - }, - "nodedevelopersack/Cubase": { - "src": "Professional Cubase 13 complete standalone installation build, pre-activated for seamless desktop audio production.", - "zh-Hans": "专业版 Cubase 13 完整独立安装构建,已预先激活,适合在桌面端流畅进行音频制作。", - "zh-Hant": "專業版 Cubase 13 完整獨立安裝版本,已預先啟用,適合在桌面端順暢進行音訊製作。", - "ja": "プロ向け Cubase 13 の完全版スタンドアロンインストールビルド。アクティベーション済みで、デスクトップでのオーディオ制作をスムーズに行える。", - "ko": "전문가용 Cubase 13 완전한 독립 설치 빌드로, 사전 활성화되어 있어 데스크톱에서 매끄럽게 오디오 제작을 할 수 있다." - }, - "Phantomeidemonstrate/AnyDesk": { - "src": "Anydesk 2026: Full working installer, complete standalone setup for seamless remote desktop access.", - "zh-Hans": "Anydesk 2026:可直接使用的完整安装程序,完整独立安装包,让远程桌面访问更顺畅。", - "zh-Hant": "Anydesk 2026:可直接使用的完整安裝程式,完整獨立安裝包,讓遠端桌面連線更順暢。", - "ja": "Anydesk 2026:すぐに使える完全版インストーラー。完全なスタンドアロンセットアップで、リモートデスクトップ接続をスムーズにする。", - "ko": "Anydesk 2026: 바로 쓸 수 있는 완전한 설치 프로그램. 완전한 독립 설치본으로 원격 데스크톱 접속을 매끄럽게 해 준다." - }, - "PhoenixRetreat/Wondshare-Recoverit": { - "src": "Complete standalone setup for Wondshare Recoverit 2026. Ready-to-run full working installer with all features activated.", - "zh-Hans": "Wondshare Recoverit 2026 完整独立安装包。可直接运行的完整安装程序,所有功能均已激活。", - "zh-Hant": "Wondshare Recoverit 2026 完整獨立安裝包。可直接執行的完整安裝程式,所有功能均已啟用。", - "ja": "Wondshare Recoverit 2026 の完全版スタンドアロンセットアップ。すぐに実行できる完全版インストーラーで、全機能がアクティベーション済み。", - "ko": "Wondshare Recoverit 2026 완전한 독립 설치본. 바로 실행할 수 있는 완전한 설치 프로그램으로, 모든 기능이 활성화되어 있다." - }, - "scarletscreengrasp/Uttorent": { - "src": "Uttorent 2026 - Full working installer, complete standalone setup ready to run.", - "zh-Hans": "Uttorent 2026——可直接使用的完整安装程序,完整独立安装包,开箱即用。", - "zh-Hant": "Uttorent 2026——可直接使用的完整安裝程式,完整獨立安裝包,開箱即用。", - "ja": "Uttorent 2026——すぐに使える完全版インストーラー。完全なスタンドアロンセットアップで、そのまま実行できる。", - "ko": "Uttorent 2026 — 바로 쓸 수 있는 완전한 설치 프로그램. 완전한 독립 설치본으로 바로 실행할 수 있다." - }, - "SoapmakerShout44/Cinema-4d": { - "src": "Professional Cinema 4D utility configuration, complete standalone installation setup for efficient workflow in 2026.", - "zh-Hans": "专业 Cinema 4D 实用工具配置,完整独立安装包,让 2026 年的工作流程更高效。", - "zh-Hant": "專業 Cinema 4D 實用工具設定,完整獨立安裝包,讓 2026 年的工作流程更有效率。", - "ja": "プロ向け Cinema 4D ユーティリティ構成。完全なスタンドアロンインストールセットアップで、2026 年のワークフローを効率化する。", - "ko": "전문가용 Cinema 4D 유틸리티 구성. 완전한 독립 설치 세트로 2026년의 작업 흐름을 효율적으로 만들어 준다." - }, - "twilightstonerestore/Glary-Utilities-Pro": { - "src": "Glary Utilities Pro 2026: Full working installer with all tools activated, ready for immediate use on your desktop.", - "zh-Hans": "Glary Utilities Pro 2026:可直接使用的完整安装程序,所有工具均已激活,可立即在桌面上使用。", - "zh-Hant": "Glary Utilities Pro 2026:可直接使用的完整安裝程式,所有工具均已啟用,可立即在桌面上使用。", - "ja": "Glary Utilities Pro 2026:全ツールがアクティベーション済みの、すぐに使える完全版インストーラー。デスクトップですぐに使い始められる。", - "ko": "Glary Utilities Pro 2026: 모든 도구가 활성화된, 바로 쓸 수 있는 완전한 설치 프로그램. 데스크톱에서 즉시 사용할 수 있다." - }, - "ViceFencerManacle/Camtasia": { - "src": "Camtasia 2026 full working installer, complete with all features and ready to run on your desktop.", - "zh-Hans": "Camtasia 2026 可直接使用的完整安装程序,功能齐全,可在桌面上直接运行。", - "zh-Hant": "Camtasia 2026 可直接使用的完整安裝程式,功能齊全,可在桌面上直接執行。", - "ja": "Camtasia 2026 のすぐに使える完全版インストーラー。全機能を備え、デスクトップでそのまま実行できる。", - "ko": "Camtasia 2026 바로 쓸 수 있는 완전한 설치 프로그램. 모든 기능을 갖췄고 데스크톱에서 바로 실행할 수 있다." - }, - "vaishantsah/watson-AI-osint-all-in-one": { - "src": "Watson — free OSINT tool for Windows: people search across 3,100+ public sites by nickname, email, phone or website. Open-source intelligence made simple: digi…", - "zh-Hans": "Watson —— 免费的 Windows OSINT 工具:按昵称、邮箱、电话或网站,在 3,100 多个公开站点上搜索人物。让开源情报变得简单:digi…", - "zh-Hant": "Watson —— 免費的 Windows OSINT 工具:依暱稱、電子郵件、電話或網站,在 3,100 多個公開網站上搜尋人物。讓開源情報變得簡單:digi…", - "ja": "Watson — Windows 向けの無料 OSINT ツール:ニックネーム、メールアドレス、電話番号、Web サイトから、3,100 以上の公開サイトで人物を検索できる。オープンソースインテリジェンスを手軽に:digi…", - "ko": "Watson — Windows용 무료 OSINT 도구: 닉네임, 이메일, 전화번호, 웹사이트로 3,100개 이상의 공개 사이트에서 사람을 검색한다. 오픈소스 인텔리전스를 쉽게: digi…" - }, - "thomasunise/argus": { - "src": "Open-source agentic security operations platform:", - "zh-Hans": "开源的智能体式安全运营平台:", - "zh-Hant": "開源的代理式資安營運平台:", - "ja": "オープンソースのエージェント型セキュリティオペレーションプラットフォーム:", - "ko": "오픈 소스 에이전틱 보안 운영 플랫폼:" - }, - "designfuchen/word-atlas": { - "src": "词光 · Word Atlas — Illustrated IELTS vocabulary with 7,298 words, UK/US audio and FSRS review. Open-source app + CC BY 4.0 dataset.", - "zh-Hans": "词光 · Word Atlas —— 带插图的雅思词汇,共 7,298 个单词,含英式/美式发音和 FSRS 复习。开源应用 + CC BY 4.0 数据集。", - "zh-Hant": "詞光 · Word Atlas —— 附插圖的雅思單字,共 7,298 個單字,含英式/美式發音與 FSRS 複習。開源應用程式 + CC BY 4.0 資料集。", - "ja": "詞光 · Word Atlas — イラスト付きの IELTS 語彙 7,298 語。英国式・米国式の音声と FSRS 復習に対応。オープンソースアプリ + CC BY 4.0 データセット。", - "ko": "词光 · Word Atlas — 삽화가 곁들여진 IELTS 어휘 7,298개. 영국식·미국식 발음과 FSRS 복습을 지원한다. 오픈 소스 앱 + CC BY 4.0 데이터셋.", - "en": "词光 · Word Atlas — Illustrated IELTS vocabulary with 7,298 words, UK/US audio and FSRS review. Open-source app + CC BY 4.0 dataset." - }, - "D3voz/openjutsu": { - "src": "One-click character swap for videos: an open-source, local Higgsfield Genjutsu alternative built on ComfyUI and MiniMax H3, with FLUX.3 Klein relighting.", - "zh-Hans": "一键为视频换角色:基于 ComfyUI 和 MiniMax H3 构建的开源本地版 Higgsfield Genjutsu 替代方案,并用 FLUX.3 Klein 重新打光。", - "zh-Hant": "一鍵為影片換角色:以 ComfyUI 和 MiniMax H3 建構的開源本機版 Higgsfield Genjutsu 替代方案,並用 FLUX.3 Klein 重新打光。", - "ja": "動画のキャラクターをワンクリックで入れ替え:ComfyUI と MiniMax H3 の上に作られた、オープンソースでローカル動作の Higgsfield Genjutsu 代替ツール。FLUX.3 Klein によるリライティングにも対応。", - "ko": "영상 속 캐릭터를 한 번에 교체: ComfyUI와 MiniMax H3 위에 만든, 오픈 소스 로컬 Higgsfield Genjutsu 대안. FLUX.3 Klein으로 조명도 다시 입힌다." - }, - "floatboatai/OpenMinutes": { - "src": "OpenMinutes · 录音笔工作台:MemoTalk S1 录音的导入 · 转录 · AI 归类 · 检索复盘(Floatboat Workbench 开源实现)", - "zh-Hans": "OpenMinutes · 录音笔工作台:MemoTalk S1 录音的导入 · 转录 · AI 归类 · 检索复盘(Floatboat Workbench 开源实现)", - "zh-Hant": "OpenMinutes · 錄音筆工作台:MemoTalk S1 錄音的匯入 · 轉錄 · AI 歸類 · 檢索複盤(Floatboat Workbench 開源實作)", - "ja": "OpenMinutes · ボイスレコーダーのワークベンチ:MemoTalk S1 の録音を取り込み · 文字起こし · AI で分類 · 検索して振り返り(Floatboat Workbench のオープンソース実装)", - "ko": "OpenMinutes · 녹음기 워크벤치: MemoTalk S1 녹음을 가져오기 · 전사 · AI 분류 · 검색과 복기(Floatboat Workbench의 오픈 소스 구현)", - "en": "OpenMinutes · a voice-recorder workbench: import MemoTalk S1 recordings · transcribe · AI sorting · search and review (an open-source implementation of Floatboat Workbench)" - }, - "jianxinss/iching-64-motion": { - "src": "《易经》六十四卦结构动画 · I Ching 64 Hexagrams motion graphics, made entirely with code (Remotion + React)", - "zh-Hans": "《易经》六十四卦结构动画 · 完全用代码制作的《易经》六十四卦动态图形(Remotion + React)", - "zh-Hant": "《易經》六十四卦結構動畫 · 完全以程式碼製作的《易經》六十四卦動態圖形(Remotion + React)", - "ja": "『易経』六十四卦の構造アニメーション · すべてコードだけで作った『易経』六十四卦のモーショングラフィックス(Remotion + React)", - "ko": "《주역》 64괘 구조 애니메이션 · 코드만으로 만든 《주역》 64괘 모션 그래픽(Remotion + React)", - "en": "Structural animations of the 64 hexagrams of the I Ching · I Ching 64 Hexagrams motion graphics, made entirely with code (Remotion + React)" - }, - "xanthichi/mcd-meal-mate": { - "src": "M餐搭子:基于麦当劳 MCP 实时菜单与营养数据的智能搭餐 Skill|在线演示已上线", - "zh-Hans": "M餐搭子:基于麦当劳 MCP 实时菜单与营养数据的智能搭餐 Skill|在线演示已上线", - "zh-Hant": "M餐搭子:基於麥當勞 MCP 即時菜單與營養資料的智慧搭餐 Skill|線上示範已上線", - "ja": "M餐搭子(Mミールメイト):マクドナルドの MCP によるリアルタイムのメニューと栄養データをもとに、食事の組み合わせを考える Skill|オンラインデモ公開中", - "ko": "M餐搭子(M 밀메이트): 맥도날드 MCP의 실시간 메뉴와 영양 데이터를 바탕으로 식단 조합을 짜 주는 Skill|온라인 데모 공개", - "en": "M Meal Mate (M餐搭子): a smart meal-pairing Skill built on McDonald's MCP live menu and nutrition data | online demo now live" - }, - "zeabur-oss/zeabur": { - "src": "Self-hosted PaaS on your own Kubernetes.", - "zh-Hans": "运行在你自己的 Kubernetes 上的自托管 PaaS。", - "zh-Hant": "運行在你自己的 Kubernetes 上的自行架設 PaaS。", - "ja": "自分の Kubernetes 上で動かすセルフホスト型 PaaS。", - "ko": "내 Kubernetes 위에서 돌리는 셀프 호스팅 PaaS." - }, - "sanjayadanushka712/TaskFlow": { - "src": "End-to-end DevOps TaskFlow API — FastAPI, PostgreSQL, SQLAlchemy, Alembic, Docker Compose, Pytest and GitHub Actions CI,Kubernetes,prometheus,Grafana,helm,k9s,…", - "zh-Hans": "端到端 DevOps TaskFlow API —— FastAPI、PostgreSQL、SQLAlchemy、Alembic、Docker Compose、Pytest 和 GitHub Actions CI、Kubernetes、prometheus、Grafana、helm、k9s、…", - "zh-Hant": "端到端 DevOps TaskFlow API —— FastAPI、PostgreSQL、SQLAlchemy、Alembic、Docker Compose、Pytest 和 GitHub Actions CI、Kubernetes、prometheus、Grafana、helm、k9s、…", - "ja": "エンドツーエンドの DevOps TaskFlow API —— FastAPI、PostgreSQL、SQLAlchemy、Alembic、Docker Compose、Pytest、GitHub Actions CI、Kubernetes、prometheus、Grafana、helm、k9s、…", - "ko": "엔드투엔드 DevOps TaskFlow API — FastAPI, PostgreSQL, SQLAlchemy, Alembic, Docker Compose, Pytest, GitHub Actions CI, Kubernetes, prometheus, Grafana, helm, k9s, …" - }, - "hugues31/duckpad": { - "src": "The data transformation tool the open-source community deserves.", - "zh-Hans": "开源社区应得的数据转换工具。", - "zh-Hant": "開源社群值得擁有的資料轉換工具。", - "ja": "オープンソースコミュニティにふさわしい、データ変換ツール。", - "ko": "오픈 소스 커뮤니티가 누려야 할 데이터 변환 도구." - } -} diff --git a/data/translation_library.json b/data/translation_library.json new file mode 100644 index 0000000..6d549dd --- /dev/null +++ b/data/translation_library.json @@ -0,0 +1,612 @@ +{ + "_comment": "Translation library for new-repo descriptions, keyed by repo + sha256(source)[:12] + language. Used by tools/newcomer_i18n.py and tools/i18n_pipeline.py; see docs/I18N_PIPELINE.md.", + "version": 2, + "entries": { + "AshReinvigorate/Microsoft-Office": { + "41944f2cf9d4": { + "src": "Microsoft Office 2026 complete standalone setup. Ready-to-run desktop installation with all features pre-activated.", + "zh-Hans": "Microsoft Office 2026 完整独立安装包。开箱即用的桌面版安装,所有功能均已预先激活。", + "zh-Hant": "Microsoft Office 2026 完整獨立安裝包。開箱即用的桌面版安裝,所有功能均已預先啟用。", + "ja": "Microsoft Office 2026 の完全版スタンドアロンセットアップ。すぐに使えるデスクトップ版インストールで、全機能がアクティベーション済み。", + "ko": "Microsoft Office 2026 완전한 독립 설치본. 바로 실행할 수 있는 데스크톱 설치본으로, 모든 기능이 사전 활성화되어 있다.", + "seen": "2026-10-30" + } + }, + "CaretakerPlain/Whale-Tracker": { + "db84e52126bc": { + "src": "Whale Tracker 2026: Pre-activated desktop edition with all features ready to run.", + "zh-Hans": "Whale Tracker 2026:预先激活的桌面版,所有功能开箱即用。", + "zh-Hant": "Whale Tracker 2026:預先啟用的桌面版,所有功能開箱即用。", + "ja": "Whale Tracker 2026:アクティベーション済みのデスクトップ版で、全機能をすぐに使える。", + "ko": "Whale Tracker 2026: 사전 활성화된 데스크톱 버전으로, 모든 기능을 바로 쓸 수 있다.", + "seen": "2026-10-30" + } + }, + "Cattmonkey/ChaosIntelligence": { + "4220589e496d": { + "src": "把智能体当函数,把想法写成程序。Agent-native functional language with a CLI, Web IDE, goal-driven bots and live UI. Source-available; no AI training.", + "zh-Hans": "把智能体当函数,把想法写成程序。原生支持智能体的函数式语言,带 CLI、Web IDE、目标驱动的机器人和实时界面。源码可见;禁止用于 AI 训练。", + "zh-Hant": "把代理當函式,把想法寫成程式。原生支援代理的函數式語言,附 CLI、Web IDE、目標導向的機器人和即時介面。原始碼可見;禁止用於 AI 訓練。", + "ja": "エージェントを関数として扱い、アイデアをプログラムにする。エージェントネイティブな関数型言語で、CLI、Web IDE、ゴール駆動のボット、ライブ UI を備える。ソース公開(source-available)。AI の学習には使用不可。", + "ko": "에이전트를 함수처럼 다뤄 아이디어를 프로그램으로 만든다. 에이전트 네이티브 함수형 언어로, CLI, 웹 IDE, 목표 기반 봇, 실시간 UI를 갖췄다. 소스 공개(source-available), AI 학습 용도 사용 금지.", + "en": "Treat agents as functions and turn ideas into programs. An agent-native functional language with a CLI, Web IDE, goal-driven bots and live UI. Source-available; no AI training.", + "seen": "2026-10-30" + } + }, + "ChannelCooperStart/capri-ai": { + "98b87d5d0bc7": { + "src": "🌃 Capri — Edgerunners-inspired AI agent for your desktop. Works with Claude Code, Codex, Antigravity & more.", + "zh-Hans": "🌃 Capri —— 受《赛博朋克:边缘行者》启发的桌面 AI 智能体。适用于 Claude Code、Codex、Antigravity 等。", + "zh-Hant": "🌃 Capri —— 受《電馭叛客:邊緣行者》啟發的桌面 AI 代理。適用於 Claude Code、Codex、Antigravity 等。", + "ja": "🌃 Capri — 『サイバーパンク:エッジランナーズ』にインスパイアされたデスクトップ向け AI エージェント。Claude Code、Codex、Antigravity などで使える。", + "ko": "🌃 Capri — 《사이버펑크: 엣지러너》에서 영감을 받은 데스크톱용 AI 에이전트. Claude Code, Codex, Antigravity 등에서 쓸 수 있다.", + "seen": "2026-10-30" + } + }, + "D3voz/openjutsu": { + "9563d416c7c1": { + "src": "One-click character swap for videos: an open-source, local Higgsfield Genjutsu alternative built on ComfyUI and MiniMax H3, with FLUX.3 Klein relighting.", + "zh-Hans": "一键为视频换角色:基于 ComfyUI 和 MiniMax H3 构建的开源本地版 Higgsfield Genjutsu 替代方案,并用 FLUX.3 Klein 重新打光。", + "zh-Hant": "一鍵為影片換角色:以 ComfyUI 和 MiniMax H3 建構的開源本機版 Higgsfield Genjutsu 替代方案,並用 FLUX.3 Klein 重新打光。", + "ja": "動画のキャラクターをワンクリックで入れ替え:ComfyUI と MiniMax H3 の上に作られた、オープンソースでローカル動作の Higgsfield Genjutsu 代替ツール。FLUX.3 Klein によるリライティングにも対応。", + "ko": "영상 속 캐릭터를 한 번에 교체: ComfyUI와 MiniMax H3 위에 만든, 오픈 소스 로컬 Higgsfield Genjutsu 대안. FLUX.3 Klein으로 조명도 다시 입힌다.", + "seen": "2026-10-30" + } + }, + "DenisSergeevitch/ex-ussr-kinship-research": { + "0acb87efff3a": { + "src": "Evidence-first genealogy skill for AI agents (Codex, Claude Code): church books, civil, military, deportation and repression records across the former USSR. Re…", + "zh-Hans": "面向 AI 智能体(Codex、Claude Code)的证据优先家谱研究技能:涵盖前苏联地区的教会簿册、民事、军事、流放和政治迫害档案…", + "zh-Hant": "面向 AI 代理(Codex、Claude Code)的證據優先家譜研究技能:涵蓋前蘇聯地區的教會簿冊、民事、軍事、流放和政治迫害檔案…", + "ja": "AI エージェント(Codex、Claude Code)向けの、証拠第一の系譜調査スキル:旧ソ連全域の教会記録、民事、軍事、強制移住、弾圧に関する記録…", + "ko": "AI 에이전트(Codex, Claude Code)를 위한 증거 우선 족보 조사 스킬: 구소련 전역의 교회 기록부, 민사, 군사, 강제 이주, 탄압 기록…", + "seen": "2026-10-30" + } + }, + "Fangludisclose/SystemCare-Pro": { + "d5bc5d1a9b0c": { + "src": "Systemcare Pro 2026 full working installer. Complete standalone setup with all features activated, ready to run.", + "zh-Hans": "Systemcare Pro 2026 可直接使用的完整安装程序。完整独立安装包,所有功能均已激活,开箱即用。", + "zh-Hant": "Systemcare Pro 2026 可直接使用的完整安裝程式。完整獨立安裝包,所有功能均已啟用,開箱即用。", + "ja": "Systemcare Pro 2026 のすぐに使える完全版インストーラー。全機能がアクティベーション済みの完全なスタンドアロンセットアップで、そのまま実行できる。", + "ko": "Systemcare Pro 2026 바로 쓸 수 있는 완전한 설치 프로그램. 모든 기능이 활성화된 완전한 독립 설치본으로, 바로 실행할 수 있다.", + "seen": "2026-10-30" + } + }, + "FormHalberdierSouk/SoundPad": { + "52e358e00d02": { + "src": "Soundpad 2026: Full working installer with all essential plugins and effects for professional audio production.", + "zh-Hans": "Soundpad 2026:可直接使用的完整安装程序,内含专业音频制作所需的全部重要插件和效果。", + "zh-Hant": "Soundpad 2026:可直接使用的完整安裝程式,內含專業音訊製作所需的全部重要外掛與效果。", + "ja": "Soundpad 2026:プロ向けのオーディオ制作に必要なプラグインとエフェクトをひととおり揃えた、すぐに使える完全版インストーラー。", + "ko": "Soundpad 2026: 전문 오디오 제작에 필요한 주요 플러그인과 이펙트를 모두 담은, 바로 쓸 수 있는 완전한 설치 프로그램.", + "seen": "2026-10-30" + } + }, + "JunWan666/astrbot-for-android": { + "d3cccd167bef": { + "src": "在 Android 手机上本地部署和管理 AstrBot 与 NapCat,内置 PRoot Ubuntu 运行环境,支持原生管理界面、WebUI、日志、备份恢复和独立更新,无需 Root。", + "zh-Hans": "在 Android 手机上本地部署和管理 AstrBot 与 NapCat,内置 PRoot Ubuntu 运行环境,支持原生管理界面、WebUI、日志、备份恢复和独立更新,无需 Root。", + "zh-Hant": "在 Android 手機上本機部署並管理 AstrBot 與 NapCat,內建 PRoot Ubuntu 執行環境,支援原生管理介面、WebUI、記錄檔、備份還原和獨立更新,無需 Root。", + "ja": "Android スマホ上で AstrBot と NapCat をローカルにデプロイして管理できる。PRoot Ubuntu の実行環境を内蔵し、ネイティブ管理画面、WebUI、ログ、バックアップと復元、独立したアップデートに対応。root 不要。", + "ko": "Android 폰에서 AstrBot과 NapCat을 로컬로 배포하고 관리한다. PRoot Ubuntu 실행 환경을 내장했고, 네이티브 관리 화면, WebUI, 로그, 백업·복원, 독립 업데이트를 지원한다. root 불필요.", + "en": "Deploy and manage AstrBot and NapCat locally on an Android phone. Ships with a built-in PRoot Ubuntu runtime and supports a native management UI, WebUI, logs, backup and restore, and independent updates, with no root required.", + "seen": "2026-10-30" + } + }, + "Lostbrocreate/Adobe-InDesign": { + "a3ddeafcf196": { + "src": "Secure digital asset deployment pipeline 2026 full working installer. Ready-to-run solution for efficient online and offline publishing.", + "zh-Hans": "安全数字资产部署流水线 2026 可直接使用的完整安装程序。开箱即用的方案,兼顾线上与线下出版的效率。", + "zh-Hant": "安全數位資產部署管線 2026 可直接使用的完整安裝程式。開箱即用的方案,兼顧線上與線下出版的效率。", + "ja": "セキュアなデジタルアセット配備パイプライン 2026 のすぐに使える完全版インストーラー。オンラインとオフラインの出版を効率化する、すぐ使えるソリューション。", + "ko": "보안 디지털 자산 배포 파이프라인 2026 바로 쓸 수 있는 완전한 설치 프로그램. 온라인과 오프라인 출판을 효율적으로 처리하는, 바로 실행 가능한 솔루션.", + "seen": "2026-10-30" + } + }, + "MiniMax-AI/mcode-stack": { + "f06ec0f214f8": { + "src": "The workflows and skills the MiniMax Code team uses to build MiniMax Code. Open source, install and use.", + "zh-Hans": "MiniMax Code 团队用来构建 MiniMax Code 的工作流和技能。开源,安装即用。", + "zh-Hant": "MiniMax Code 團隊用來打造 MiniMax Code 的工作流程和技能。開源,安裝即可使用。", + "ja": "MiniMax Code チームが MiniMax Code の開発に使っているワークフローとスキル。オープンソースで、インストールしてすぐ使える。", + "ko": "MiniMax Code 팀이 MiniMax Code를 만드는 데 쓰는 워크플로와 스킬. 오픈 소스이며 설치해서 바로 쓸 수 있다.", + "seen": "2026-10-30" + } + }, + "Phantomeidemonstrate/AnyDesk": { + "744a0281fcb8": { + "src": "Anydesk 2026: Full working installer, complete standalone setup for seamless remote desktop access.", + "zh-Hans": "Anydesk 2026:可直接使用的完整安装程序,完整独立安装包,让远程桌面访问更顺畅。", + "zh-Hant": "Anydesk 2026:可直接使用的完整安裝程式,完整獨立安裝包,讓遠端桌面連線更順暢。", + "ja": "Anydesk 2026:すぐに使える完全版インストーラー。完全なスタンドアロンセットアップで、リモートデスクトップ接続をスムーズにする。", + "ko": "Anydesk 2026: 바로 쓸 수 있는 완전한 설치 프로그램. 완전한 독립 설치본으로 원격 데스크톱 접속을 매끄럽게 해 준다.", + "seen": "2026-10-30" + } + }, + "PhoenixRetreat/Wondshare-Recoverit": { + "91bb2e34919c": { + "src": "Complete standalone setup for Wondshare Recoverit 2026. Ready-to-run full working installer with all features activated.", + "zh-Hans": "Wondshare Recoverit 2026 完整独立安装包。可直接运行的完整安装程序,所有功能均已激活。", + "zh-Hant": "Wondshare Recoverit 2026 完整獨立安裝包。可直接執行的完整安裝程式,所有功能均已啟用。", + "ja": "Wondshare Recoverit 2026 の完全版スタンドアロンセットアップ。すぐに実行できる完全版インストーラーで、全機能がアクティベーション済み。", + "ko": "Wondshare Recoverit 2026 완전한 독립 설치본. 바로 실행할 수 있는 완전한 설치 프로그램으로, 모든 기능이 활성화되어 있다.", + "seen": "2026-10-30" + } + }, + "SAOS-3624/dsh-video-storyboard": { + "e4ff78f9cb72": { + "src": "Scene-aware storyboard for DeepSeek Harness: 9-16 numbered cells with timestamps + transcript + an audio envelope, packed into ONE image (384 tokens). Two tool…", + "zh-Hans": "面向 DeepSeek Harness 的场景感知分镜:把 9–16 个带编号的格子,连同时间戳、文字稿和音频包络,打包进同一张图(384 个 token)。两个工具…", + "zh-Hant": "針對 DeepSeek Harness 的場景感知分鏡:把 9–16 個帶編號的格子,連同時間戳記、逐字稿和音訊包絡,打包進同一張圖(384 個 token)。兩個工具…", + "ja": "DeepSeek Harness 向けのシーン認識ストーリーボード:番号付きの 9〜16 コマを、タイムスタンプ、文字起こし、音声エンベロープとともに 1 枚の画像(384 トークン)にまとめる。2 つのツール…", + "ko": "DeepSeek Harness용 장면 인식 스토리보드: 번호가 매겨진 9~16개 칸을 타임스탬프, 대본, 오디오 엔벨로프와 함께 이미지 한 장(384 토큰)에 담는다. 도구 두 개…", + "seen": "2026-10-30" + } + }, + "ScorpionHub17/KMS-Pico": { + "28a1da717842": { + "src": "Kms Pico Free 2026 complete standalone setup. Pre-activated desktop edition ready to run, ensuring a smooth installation experience.", + "zh-Hans": "Kms Pico Free 2026 完整独立安装包。预先激活的桌面版,开箱即用,安装过程顺畅。", + "zh-Hant": "Kms Pico Free 2026 完整獨立安裝包。預先啟用的桌面版,開箱即用,安裝過程順暢。", + "ja": "Kms Pico Free 2026 の完全版スタンドアロンセットアップ。アクティベーション済みのデスクトップ版で、すぐに使え、スムーズにインストールできる。", + "ko": "Kms Pico Free 2026 완전한 독립 설치본. 사전 활성화된 데스크톱 버전으로, 바로 실행할 수 있고 설치가 매끄럽다.", + "seen": "2026-10-30" + } + }, + "SoapmakerShout44/Cinema-4d": { + "20ff8cbf1e03": { + "src": "Professional Cinema 4D utility configuration, complete standalone installation setup for efficient workflow in 2026.", + "zh-Hans": "专业 Cinema 4D 实用工具配置,完整独立安装包,让 2026 年的工作流程更高效。", + "zh-Hant": "專業 Cinema 4D 實用工具設定,完整獨立安裝包,讓 2026 年的工作流程更有效率。", + "ja": "プロ向け Cinema 4D ユーティリティ構成。完全なスタンドアロンインストールセットアップで、2026 年のワークフローを効率化する。", + "ko": "전문가용 Cinema 4D 유틸리티 구성. 완전한 독립 설치 세트로 2026년의 작업 흐름을 효율적으로 만들어 준다.", + "seen": "2026-10-30" + } + }, + "Sourcecladrag/Windows-Optimizer": { + "b45309a78c09": { + "src": "Windows Optimizer 2026 - Full working installer with advanced system tweaks and enhancements ready to run.", + "zh-Hans": "Windows Optimizer 2026——可直接使用的完整安装程序,含高级系统调优与增强功能。", + "zh-Hant": "Windows Optimizer 2026——可直接使用的完整安裝程式,含進階系統調校與強化功能。", + "ja": "Windows Optimizer 2026——高度なシステムチューニングと機能強化を備えた、すぐに使える完全版インストーラー。", + "ko": "Windows Optimizer 2026 — 고급 시스템 튜닝과 개선 기능을 갖춘, 바로 실행할 수 있는 완전한 설치 프로그램.", + "seen": "2026-10-30" + } + }, + "UniteCuttlefishBolt/Canva-Pro": { + "2317b000f904": { + "src": "Canva Pro 2026: Complete standalone setup with all features unlocked and ready to run.", + "zh-Hans": "Canva Pro 2026:完整的独立安装包,所有功能均已解锁,开箱即用。", + "zh-Hant": "Canva Pro 2026:完整的獨立安裝包,所有功能均已解鎖,開箱即用。", + "ja": "Canva Pro 2026:全機能が解放済みで、すぐに使える完全版のスタンドアロンセットアップ。", + "ko": "Canva Pro 2026: 모든 기능이 잠금 해제된 상태로 바로 실행할 수 있는 완전한 독립 설치본.", + "seen": "2026-10-30" + } + }, + "ViceFencerManacle/Camtasia": { + "1eec45a23144": { + "src": "Camtasia 2026 full working installer, complete with all features and ready to run on your desktop.", + "zh-Hans": "Camtasia 2026 可直接使用的完整安装程序,功能齐全,可在桌面上直接运行。", + "zh-Hant": "Camtasia 2026 可直接使用的完整安裝程式,功能齊全,可在桌面上直接執行。", + "ja": "Camtasia 2026 のすぐに使える完全版インストーラー。全機能を備え、デスクトップでそのまま実行できる。", + "ko": "Camtasia 2026 바로 쓸 수 있는 완전한 설치 프로그램. 모든 기능을 갖췄고 데스크톱에서 바로 실행할 수 있다.", + "seen": "2026-10-30" + } + }, + "ZiChuanLan/agent-purge": { + "e98448904fac": { + "src": "One persona, many coding agents. Replace or inject system prompts across codex, claude, opencode, grok, omp, hermes, pi, zcode - with a local web console.", + "zh-Hans": "一个人设,适配多个编程智能体。可在 codex、claude、opencode、grok、omp、hermes、pi、zcode 之间替换或注入系统提示词,并提供本地 Web 控制台。", + "zh-Hant": "一個人設,適用多個程式設計代理。可在 codex、claude、opencode、grok、omp、hermes、pi、zcode 之間替換或注入系統提示詞,並提供本機 Web 主控台。", + "ja": "1 つのペルソナで複数のコーディングエージェントに対応。codex、claude、opencode、grok、omp、hermes、pi、zcode のシステムプロンプトを置き換えたり注入したりでき、ローカルの Web コンソール付き。", + "ko": "하나의 페르소나로 여러 코딩 에이전트에 적용. codex, claude, opencode, grok, omp, hermes, pi, zcode의 시스템 프롬프트를 교체하거나 주입할 수 있으며 로컬 웹 콘솔을 제공한다.", + "seen": "2026-10-30" + } + }, + "aa1143/NamiGPT": { + "0d949887546b": { + "src": "零基础入门大模型(LLM)的基础教程:从零手写 GPT-2,一行行看懂大模型是怎么工作的 / Build GPT-2 from scratch in PyTorch, step by step", + "zh-Hans": "零基础入门大模型(LLM)的基础教程:从零手写 GPT-2,一行行看懂大模型是怎么工作的 / 用 PyTorch 从零开始、一步步构建 GPT-2", + "zh-Hant": "零基礎入門大型語言模型(LLM)的基礎教學:從零手寫 GPT-2,一行行看懂大型語言模型是怎麼運作的 / 用 PyTorch 從零開始、一步步建構 GPT-2", + "ja": "予備知識ゼロから学ぶ大規模言語モデル(LLM)の入門チュートリアル:GPT-2 をゼロから手書きし、LLM がどう動くかを 1 行ずつ理解する / PyTorch で GPT-2 をゼロから段階的に構築", + "ko": "사전 지식 없이 시작하는 대규모 언어 모델(LLM) 입문 튜토리얼: GPT-2를 처음부터 직접 짜면서 LLM이 어떻게 동작하는지 한 줄씩 이해한다 / PyTorch로 GPT-2를 처음부터 단계별로 구축", + "en": "A beginner tutorial for large language models (LLMs): write GPT-2 by hand from scratch and see line by line how an LLM works / Build GPT-2 from scratch in PyTorch, step by step", + "seen": "2026-10-30" + } + }, + "andyhuo520/digital-human-koubo": { + "07d898e09358": { + "src": "AI digital-human talking-head videos from one photo: Renoise MCP generation + 5 editing styles + 48 creator-grade packaging components. Agent skill for Claude…", + "zh-Hans": "用一张照片生成 AI 数字人口播视频:Renoise MCP 生成 + 5 种剪辑风格 + 48 个创作者级包装组件。适用于 Claude 的智能体技能…", + "zh-Hant": "用一張照片生成 AI 數位人口播影片:Renoise MCP 生成 + 5 種剪輯風格 + 48 個創作者級包裝元件。適用於 Claude 的代理技能…", + "ja": "1 枚の写真から AI デジタルヒューマンのトーキングヘッド動画を作成:Renoise MCP による生成 + 5 種類の編集スタイル + 48 個のクリエイター向け演出パーツ。Claude 向けエージェントスキル…", + "ko": "사진 한 장으로 AI 디지털 휴먼 토킹헤드 영상 제작: Renoise MCP 생성 + 편집 스타일 5종 + 크리에이터급 패키징 컴포넌트 48개. Claude용 에이전트 스킬…", + "seen": "2026-10-30" + } + }, + "andyhuo520/vibe-knowledge": { + "09f577c63726": { + "src": "Vibe 知识大赏:一个知识点 → 一条有旁白、每句有出处的精品知识短片(Claude Code skill · 44 套风格 · 代码逐帧成片)", + "zh-Hans": "Vibe 知识大赏:一个知识点 → 一条有旁白、每句有出处的精品知识短片(Claude Code skill · 44 套风格 · 代码逐帧成片)", + "zh-Hant": "Vibe 知識大賞:一個知識點 → 一支有旁白、每句有出處的精品知識短片(Claude Code skill · 44 套風格 · 程式碼逐格成片)", + "ja": "Vibe 知識大賞:1 つの知識ポイント → ナレーション付きで、すべての文に出典がある高品質な知識ショート動画に(Claude Code skill · 44 種のスタイル · コードでフレームごとに生成)", + "ko": "Vibe 지식 대상: 지식 포인트 하나 → 내레이션이 있고 모든 문장에 출처가 달린 고품질 지식 쇼츠 영상 한 편(Claude Code skill · 스타일 44종 · 코드로 프레임 단위 제작)", + "en": "Vibe Knowledge Awards: one knowledge point → one polished short knowledge video with narration and a source for every sentence (Claude Code skill · 44 styles · built frame by frame in code)", + "seen": "2026-10-30" + } + }, + "anonnerdfrenzy/survival-llm": { + "a758c5dca530": { + "src": "A free AI assistant and survival library that runs on your own computer, with no internet needed. Shows the source of every answer.", + "zh-Hans": "运行在你自己电脑上的免费 AI 助手兼生存知识库,无需联网。每个回答都会标明来源。", + "zh-Hant": "在你自己電腦上執行的免費 AI 助理兼生存知識庫,無需連網。每個回答都會標明來源。", + "ja": "自分のパソコンで動く無料の AI アシスタント兼サバイバル資料庫で、インターネット接続は不要。すべての回答に出典を表示する。", + "ko": "내 컴퓨터에서 실행되는 무료 AI 어시스턴트이자 서바이벌 라이브러리로, 인터넷이 필요 없다. 모든 답변의 출처를 보여 준다.", + "seen": "2026-10-30" + } + }, + "ccch1mneyyy/dsh-go": { + "7d7e0dde3d15": { + "src": "dsh-go — DeepSeek Harness 装进口袋:手机本机运行,也能遥控你的电脑。", + "zh-Hans": "dsh-go —— DeepSeek Harness 装进口袋:手机本机运行,也能遥控你的电脑。", + "zh-Hant": "dsh-go —— DeepSeek Harness 裝進口袋:手機本機執行,也能遙控你的電腦。", + "ja": "dsh-go — DeepSeek Harness をポケットに:スマホ本体で動作し、パソコンのリモート操作もできる。", + "ko": "dsh-go — DeepSeek Harness를 주머니 속에: 휴대폰 안에서 직접 실행되고, 내 컴퓨터도 원격으로 제어할 수 있다.", + "en": "dsh-go — DeepSeek Harness in your pocket: it runs on the phone itself and can also remote-control your computer.", + "seen": "2026-10-30" + } + }, + "daveebbelaar/bama": { + "c6a5974ecb20": { + "src": "BAMA: Build Any Mac App. Agent skills to research, clone, design, build, optimize, and test native macOS apps with Swift and SwiftUI.", + "zh-Hans": "BAMA:Build Any Mac App(构建任意 Mac 应用)。用 Swift 和 SwiftUI 调研、仿制、设计、构建、优化和测试原生 macOS 应用的智能体技能。", + "zh-Hant": "BAMA:Build Any Mac App(打造任何 Mac 應用程式)。用 Swift 和 SwiftUI 研究、仿製、設計、建置、最佳化和測試原生 macOS 應用程式的代理技能。", + "ja": "BAMA:Build Any Mac App(あらゆる Mac アプリを作る)。Swift と SwiftUI でネイティブ macOS アプリを調査・クローン・設計・構築・最適化・テストするためのエージェントスキル。", + "ko": "BAMA: Build Any Mac App(어떤 Mac 앱이든 만든다). Swift와 SwiftUI로 네이티브 macOS 앱을 조사, 복제, 설계, 빌드, 최적화, 테스트하는 에이전트 스킬.", + "seen": "2026-10-30" + } + }, + "davemessew/AgentFlux": { + "84997ea85061": { + "src": "Agentic AI platform for visual workflows and autonomous agents. Run it with Docker on your own computer or server.", + "zh-Hans": "面向可视化工作流和自主智能体的智能体式 AI 平台。可用 Docker 在你自己的电脑或服务器上运行。", + "zh-Hant": "適用於視覺化工作流程與自主代理的代理式 AI 平台。可用 Docker 在你自己的電腦或伺服器上執行。", + "ja": "ビジュアルワークフローと自律型エージェントのためのエージェント型 AI プラットフォーム。Docker で自分のパソコンやサーバーに立ち上げられる。", + "ko": "시각적 워크플로와 자율 에이전트를 위한 에이전틱 AI 플랫폼. Docker로 내 컴퓨터나 서버에서 실행할 수 있다.", + "seen": "2026-10-30" + } + }, + "designfuchen/word-atlas": { + "5096668083c7": { + "src": "词光 · Word Atlas — Illustrated IELTS vocabulary with 7,298 words, UK/US audio and FSRS review. Open-source app + CC BY 4.0 dataset.", + "zh-Hans": "词光 · Word Atlas —— 带插图的雅思词汇,共 7,298 个单词,含英式/美式发音和 FSRS 复习。开源应用 + CC BY 4.0 数据集。", + "zh-Hant": "詞光 · Word Atlas —— 附插圖的雅思單字,共 7,298 個單字,含英式/美式發音與 FSRS 複習。開源應用程式 + CC BY 4.0 資料集。", + "ja": "詞光 · Word Atlas — イラスト付きの IELTS 語彙 7,298 語。英国式・米国式の音声と FSRS 復習に対応。オープンソースアプリ + CC BY 4.0 データセット。", + "ko": "词光 · Word Atlas — 삽화가 곁들여진 IELTS 어휘 7,298개. 영국식·미국식 발음과 FSRS 복습을 지원한다. 오픈 소스 앱 + CC BY 4.0 데이터셋.", + "en": "词光 · Word Atlas — Illustrated IELTS vocabulary with 7,298 words, UK/US audio and FSRS review. Open-source app + CC BY 4.0 dataset.", + "seen": "2026-10-30" + } + }, + "emanuele-em/kanzo": { + "6fa085cecdf0": { + "src": "Self-hosted kanban for humans and agents. One 4 MB binary, starts in 2 ms, zero setup.", + "zh-Hans": "自托管的看板,人和智能体都能用。一个 4 MB 的二进制文件,2 毫秒启动,零配置。", + "zh-Hant": "自行架設的看板,人和代理都能用。一個 4 MB 的二進位檔,2 毫秒啟動,零設定。", + "ja": "人間にもエージェントにも使える、セルフホスト型のかんばん。4 MB のバイナリ 1 つで、2 ミリ秒で起動し、セットアップは不要。", + "ko": "사람과 에이전트가 함께 쓰는 셀프 호스팅 칸반. 4MB짜리 바이너리 하나로, 2ms 만에 시작되고 별도 설정이 필요 없다.", + "seen": "2026-10-30" + } + }, + "floatboatai/OpenMinutes": { + "9298847c1e08": { + "src": "OpenMinutes · 录音笔工作台:MemoTalk S1 录音的导入 · 转录 · AI 归类 · 检索复盘(Floatboat Workbench 开源实现)", + "zh-Hans": "OpenMinutes · 录音笔工作台:MemoTalk S1 录音的导入 · 转录 · AI 归类 · 检索复盘(Floatboat Workbench 开源实现)", + "zh-Hant": "OpenMinutes · 錄音筆工作台:MemoTalk S1 錄音的匯入 · 轉錄 · AI 歸類 · 檢索複盤(Floatboat Workbench 開源實作)", + "ja": "OpenMinutes · ボイスレコーダーのワークベンチ:MemoTalk S1 の録音を取り込み · 文字起こし · AI で分類 · 検索して振り返り(Floatboat Workbench のオープンソース実装)", + "ko": "OpenMinutes · 녹음기 워크벤치: MemoTalk S1 녹음을 가져오기 · 전사 · AI 분류 · 검색과 복기(Floatboat Workbench의 오픈 소스 구현)", + "en": "OpenMinutes · a voice-recorder workbench: import MemoTalk S1 recordings · transcribe · AI sorting · search and review (an open-source implementation of Floatboat Workbench)", + "seen": "2026-10-30" + } + }, + "haydenschmitty/floorplan": { + "0d7b5039191e": { + "src": "See how your app actually fits together. An interactive, plain-English map of your codebase, drawn by Claude or Codex.", + "zh-Hans": "看清你的应用究竟是如何拼装在一起的。一张可交互、用通俗英语讲解的代码库地图,由 Claude 或 Codex 绘制。", + "zh-Hant": "看清你的應用程式究竟是如何組合在一起的。一張可互動、用淺顯英文說明的程式碼庫地圖,由 Claude 或 Codex 繪製。", + "ja": "アプリが実際にどう組み合わさっているかが見える。Claude または Codex が描く、平易な英語で説明されたインタラクティブなコードベースマップ。", + "ko": "앱이 실제로 어떻게 맞물려 있는지 보여 준다. Claude나 Codex가 그려 주는, 쉬운 영어로 설명된 대화형 코드베이스 지도.", + "seen": "2026-10-30" + } + }, + "hevnsnt/CVEngine": { + "010ac25c3371": { + "src": "AI-first external attack surface assessment with continuous discovery, evidence-based vulnerability validation, and developer-agent MCP integration.", + "zh-Hans": "以 AI 为先的外部攻击面评估:持续发现资产、基于证据验证漏洞,并集成开发者智能体 MCP。", + "zh-Hant": "以 AI 為先的外部攻擊面評估:持續探索資產、以證據為基礎驗證漏洞,並整合開發者代理 MCP。", + "ja": "AI ファーストの外部攻撃対象領域アセスメント。継続的な探索、証拠に基づく脆弱性の検証、開発者エージェント向け MCP 連携を備える。", + "ko": "AI 우선 외부 공격 표면 평가: 지속적인 탐색, 증거 기반 취약점 검증, 개발자 에이전트용 MCP 연동을 제공한다.", + "seen": "2026-10-30" + } + }, + "heydeer/pngdeer": { + "0ad1c81042db": { + "src": "Smaller images, same picture. Compress PNGs to PNG or WebP with automatic quality. PNG output is 8–12% smaller than TinyPNG at equal quality on the median imag…", + "zh-Hans": "图片更小,画面不变。自动选择画质,把 PNG 压缩成 PNG 或 WebP。在同等画质下,对中位数图片,PNG 输出比 TinyPNG 小 8–12%…", + "zh-Hant": "圖片更小,畫面不變。自動選擇畫質,把 PNG 壓縮成 PNG 或 WebP。在同等畫質下,對中位數圖片,PNG 輸出比 TinyPNG 小 8–12%…", + "ja": "画像は小さく、見た目はそのまま。品質を自動で決めて、PNG を PNG または WebP に圧縮する。同じ品質なら、中央値の画像で PNG 出力が TinyPNG より 8〜12% 小さい…", + "ko": "화질은 그대로, 용량은 더 작게. 화질을 자동으로 정해 PNG를 PNG 또는 WebP로 압축한다. 같은 화질 기준으로 중앙값 이미지에서 PNG 출력이 TinyPNG보다 8~12% 작다…", + "seen": "2026-10-30" + } + }, + "hugues31/duckpad": { + "fe7d2b29ab2a": { + "src": "The data transformation tool the open-source community deserves.", + "zh-Hans": "开源社区应得的数据转换工具。", + "zh-Hant": "開源社群值得擁有的資料轉換工具。", + "ja": "オープンソースコミュニティにふさわしい、データ変換ツール。", + "ko": "오픈 소스 커뮤니티가 누려야 할 데이터 변환 도구.", + "seen": "2026-10-30" + } + }, + "jacke-pp/ai-wallet-binance": { + "f3d5b873580c": { + "src": "让任何 AI 用你自己的币安 AI 钱包交易:秒买秒卖、狙击 Agent 专属发射台(Four、Flap、GANG)、AI 专属 Mint、本机交易页面。币安签名,不碰私钥。免费开源 MIT · 作者:Jacke_pp · 联系:X @Jacke_pp(私信)", + "zh-Hans": "让任何 AI 用你自己的币安 AI 钱包交易:秒买秒卖、狙击 Agent 专属发射台(Four、Flap、GANG)、AI 专属 Mint、本机交易页面。币安签名,不碰私钥。免费开源 MIT · 作者:Jacke_pp · 联系:X @Jacke_pp(私信)", + "zh-Hant": "讓任何 AI 用你自己的幣安 AI 錢包交易:秒買秒賣、狙擊 Agent 專屬發射台(Four、Flap、GANG)、AI 專屬 Mint、本機交易頁面。幣安簽名,不碰私鑰。免費開源 MIT · 作者:Jacke_pp · 聯絡:X @Jacke_pp(私訊)", + "ja": "どんな AI でも、あなた自身の Binance AI ウォレットで取引できる:即時の売買、Agent 専用ローンチパッド(Four、Flap、GANG)でのスナイプ、AI 専用 Mint、ローカルの取引ページ。署名は Binance が行い、秘密鍵には触れない。無料のオープンソース、MIT · 作者:Jacke_pp · 連絡先:X @Jacke_pp(DM)", + "ko": "어떤 AI든 내 Binance AI 지갑으로 거래할 수 있다: 즉시 매수·매도, Agent 전용 런치패드(Four, Flap, GANG) 스나이핑, AI 전용 Mint, 로컬 거래 페이지. 서명은 Binance가 처리하며 개인 키는 건드리지 않는다. 무료 오픈 소스 MIT · 제작자: Jacke_pp · 연락: X @Jacke_pp(DM)", + "en": "Let any AI trade with your own Binance AI wallet: instant buy and sell, sniping on Agent-only launchpads (Four, Flap, GANG), AI-only Mint, and a local trading page. Binance signs the transactions and your private key is never touched. Free and open source, MIT · Author: Jacke_pp · Contact: X @Jacke_pp (DM)", + "seen": "2026-10-30" + } + }, + "jackwener/DeepseekHarness-Android": { + "5b96b25575cb": { + "src": "免 ROOT 免 Termux,一个 APK 在安卓手机上跑 DeepSeek Harness。引擎内嵌 App 进程 · 读屏操作 App · 改系统设置 · 定时/条件自动化 · 可选 Shizuku", + "zh-Hans": "免 ROOT 免 Termux,一个 APK 在安卓手机上跑 DeepSeek Harness。引擎内嵌 App 进程 · 读屏操作 App · 改系统设置 · 定时/条件自动化 · 可选 Shizuku", + "zh-Hant": "免 ROOT 免 Termux,一個 APK 就能在 Android 手機上跑 DeepSeek Harness。引擎內嵌於 App 程序 · 讀取螢幕並操作 App · 修改系統設定 · 定時/條件自動化 · 可選用 Shizuku", + "ja": "root も Termux も不要。1 つの APK で Android スマホ上に DeepSeek Harness を動かす。エンジンはアプリのプロセスに内蔵 · 画面を読み取ってアプリを操作 · システム設定の変更 · 定時/条件付き自動化 · Shizuku は任意", + "ko": "root도 Termux도 필요 없이, APK 하나로 Android 폰에서 DeepSeek Harness를 실행한다. 엔진이 앱 프로세스에 내장 · 화면을 읽어 앱 조작 · 시스템 설정 변경 · 예약/조건부 자동화 · Shizuku는 선택 사항", + "en": "No root and no Termux: one APK runs DeepSeek Harness on an Android phone. Engine embedded in the app process · reads the screen to operate apps · changes system settings · scheduled/conditional automation · optional Shizuku", + "seen": "2026-10-30" + } + }, + "jianxinss/iching-64-motion": { + "dd5cbe769420": { + "src": "《易经》六十四卦结构动画 · I Ching 64 Hexagrams motion graphics, made entirely with code (Remotion + React)", + "zh-Hans": "《易经》六十四卦结构动画 · 完全用代码制作的《易经》六十四卦动态图形(Remotion + React)", + "zh-Hant": "《易經》六十四卦結構動畫 · 完全以程式碼製作的《易經》六十四卦動態圖形(Remotion + React)", + "ja": "『易経』六十四卦の構造アニメーション · すべてコードだけで作った『易経』六十四卦のモーショングラフィックス(Remotion + React)", + "ko": "《주역》 64괘 구조 애니메이션 · 코드만으로 만든 《주역》 64괘 모션 그래픽(Remotion + React)", + "en": "Structural animations of the 64 hexagrams of the I Ching · I Ching 64 Hexagrams motion graphics, made entirely with code (Remotion + React)", + "seen": "2026-10-30" + } + }, + "jmanico/grim-prompter": { + "63f0f920065f": { + "src": "Threat modeling for AI coding agents: point Claude Code, Codex or any agent at your repo and get an evidence-traced threat model. 36 architectures, 29 methods,…", + "zh-Hans": "面向 AI 编程智能体的威胁建模:让 Claude Code、Codex 或任何智能体读取你的仓库,生成有证据可追溯的威胁模型。36 种架构,29 种方法,…", + "zh-Hant": "針對 AI 程式設計代理的威脅建模:讓 Claude Code、Codex 或任何代理讀取你的儲存庫,產生有證據可追溯的威脅模型。36 種架構,29 種方法,…", + "ja": "AI コーディングエージェント向けの脅威モデリング:Claude Code、Codex など任意のエージェントにリポジトリを読ませると、証拠をたどれる脅威モデルが得られる。36 種類のアーキテクチャ、29 種類の手法、…", + "ko": "AI 코딩 에이전트를 위한 위협 모델링: Claude Code, Codex 등 어떤 에이전트든 저장소에 연결하면 근거를 추적할 수 있는 위협 모델을 만들어 준다. 아키텍처 36종, 기법 29종, …", + "seen": "2026-10-30" + } + }, + "konlu/story-studio": { + "9b110a07e181": { + "src": "从选题到剪映草稿的一站式 AI 短视频内容创作 Agent Skill", + "zh-Hans": "从选题到剪映草稿的一站式 AI 短视频内容创作 Agent Skill", + "zh-Hant": "從選題到剪映草稿的一站式 AI 短影片內容創作 Agent Skill", + "ja": "テーマ選定から剪映(CapCut)の下書きまでを一気通貫で行う、AI ショート動画制作向けの Agent Skill", + "ko": "주제 선정부터 젠잉(剪映, CapCut) 초안까지 한 번에 끝내는 AI 숏폼 영상 제작용 Agent Skill", + "en": "A one-stop AI short-video content creation Agent Skill, from picking a topic to a JianYing (CapCut) draft", + "seen": "2026-10-30" + } + }, + "mochiiwuff/capri-desktop": { + "425253e2de0a": { + "src": "Capri, the Project Capricorn construct from Cyberpunk: Edgerunners 2, living on your desktop and narrating what Claude Code is doing.", + "zh-Hans": "Capri,来自《赛博朋克:边缘行者 2》的摩羯座计划(Project Capricorn)造物,住在你的桌面上,实时讲述 Claude Code 正在做什么。", + "zh-Hant": "Capri,來自《電馭叛客:邊緣行者 2》的摩羯座計畫(Project Capricorn)造物,住在你的桌面上,講述 Claude Code 正在做什麼。", + "ja": "Capri は『サイバーパンク:エッジランナーズ 2』の Project Capricorn(カプリコーン計画)のコンストラクト。デスクトップに住みつき、Claude Code の作業をナレーションする。", + "ko": "Capri는 《사이버펑크: 엣지러너 2》의 프로젝트 카프리콘(Project Capricorn)에서 나온 구조체로, 데스크톱에 살면서 Claude Code가 하는 일을 내레이션한다.", + "seen": "2026-10-30" + } + }, + "mokevnin/dev-quality-gates": { + "49c698e5bd32": { + "src": "An opinionated, curated list of tools for enforcing software development standards: one recommended tool per job, with limits.", + "zh-Hans": "一份有主见、精挑细选的工具清单,用来落实软件开发规范:每项工作只推荐一个工具,并注明其局限。", + "zh-Hant": "一份有主見、精挑細選的工具清單,用來落實軟體開發規範:每項工作只推薦一個工具,並註明其限制。", + "ja": "ソフトウェア開発の基準を守るためのツールを、独自の方針で厳選したリスト。1 つの用途につき推奨ツールは 1 つで、制約も明記している。", + "ko": "소프트웨어 개발 표준을 지키기 위한 도구를 뚜렷한 기준으로 엄선한 목록. 작업마다 추천 도구는 하나이며, 한계도 함께 적어 두었다.", + "seen": "2026-10-30" + } + }, + "morganlinton/BeautifulRust": { + "a5480f24d64a": { + "src": "Agent Skills that teach coding agents to write, review, and port idiomatic Rust, plus a tested clippy config. Works with Claude Code, Codex, Copilot, Cursor, a…", + "zh-Hans": "教编程智能体编写、审查和移植地道 Rust 代码的 Agent Skills,另附一份经过测试的 clippy 配置。适用于 Claude Code、Codex、Copilot、Cursor 等…", + "zh-Hant": "教程式設計代理撰寫、審查和移植道地 Rust 程式碼的 Agent Skills,另附一份經過測試的 clippy 設定。適用於 Claude Code、Codex、Copilot、Cursor 等…", + "ja": "コーディングエージェントに、イディオマティックな Rust の記述・レビュー・移植を教える Agent Skills。テスト済みの clippy 設定も付属。Claude Code、Codex、Copilot、Cursor など…", + "ko": "코딩 에이전트에게 관용적인 Rust 코드를 작성하고 리뷰하고 포팅하는 법을 가르치는 Agent Skills와 검증된 clippy 설정. Claude Code, Codex, Copilot, Cursor 등에서 쓸 수 있다…", + "seen": "2026-10-30" + } + }, + "nodedevelopersack/Cubase": { + "e4e70a0685b8": { + "src": "Professional Cubase 13 complete standalone installation build, pre-activated for seamless desktop audio production.", + "zh-Hans": "专业版 Cubase 13 完整独立安装构建,已预先激活,适合在桌面端流畅进行音频制作。", + "zh-Hant": "專業版 Cubase 13 完整獨立安裝版本,已預先啟用,適合在桌面端順暢進行音訊製作。", + "ja": "プロ向け Cubase 13 の完全版スタンドアロンインストールビルド。アクティベーション済みで、デスクトップでのオーディオ制作をスムーズに行える。", + "ko": "전문가용 Cubase 13 완전한 독립 설치 빌드로, 사전 활성화되어 있어 데스크톱에서 매끄럽게 오디오 제작을 할 수 있다.", + "seen": "2026-10-30" + } + }, + "patch-gg/anymove": { + "eeffd1cbf6fb": { + "src": "Motion capture for any creature from one AI video: two cameras in one frame, a DINOv2 joint reader, the rig fitted in both views, a GLB out.", + "zh-Hans": "只用一段 AI 视频,为任何生物做动作捕捉:一个画面里两个机位、DINOv2 关节识别、在两个视角中拟合骨架,输出 GLB。", + "zh-Hant": "只用一段 AI 影片,為任何生物做動作捕捉:一個畫面裡兩個機位、DINOv2 關節辨識、在兩個視角中擬合骨架,輸出 GLB。", + "ja": "1 本の AI 動画からあらゆる生き物のモーションキャプチャを実現:1 フレームに 2 台のカメラ、DINOv2 による関節検出、両方の視点でリグをフィットさせ、GLB を出力。", + "ko": "AI 영상 하나로 모든 생물의 모션 캡처: 한 화면에 카메라 두 대, DINOv2 관절 인식, 두 시점 모두에 리그를 맞추고 GLB로 출력.", + "seen": "2026-10-30" + } + }, + "qybaihe/bla": { + "426182b4d222": { + "src": "🛡️ BLA (Blind LLM Agents) — Adversarial defense shield that protects binaries, Electron apps, JS bundles, Python, and WebAssembly against AI reverse-engineerin…", + "zh-Hans": "🛡️ BLA(Blind LLM Agents)—— 对抗式防御盾,保护二进制文件、Electron 应用、JS 包、Python 和 WebAssembly 免受 AI 逆向工程…", + "zh-Hant": "🛡️ BLA(Blind LLM Agents)—— 對抗式防禦盾,保護二進位檔、Electron 應用程式、JS 套件、Python 和 WebAssembly 免受 AI 逆向工程…", + "ja": "🛡️ BLA(Blind LLM Agents)— バイナリ、Electron アプリ、JS バンドル、Python、WebAssembly を AI によるリバースエンジニアリングから守る、敵対的防御シールド…", + "ko": "🛡️ BLA(Blind LLM Agents) — 바이너리, Electron 앱, JS 번들, Python, WebAssembly를 AI 리버스 엔지니어링으로부터 보호하는 적대적 방어 실드…", + "seen": "2026-10-30" + } + }, + "rddmwmddr/android-ad-cleaner": { + "e3d2e2d0e0c1": { + "src": "关掉国产安卓手机系统里的广告、热搜、资讯推荐和营销推送。不 root,可还原,支持 AI 智能体一键执行。", + "zh-Hans": "关掉国产安卓手机系统里的广告、热搜、资讯推荐和营销推送。不 root,可还原,支持 AI 智能体一键执行。", + "zh-Hant": "關閉國產 Android 手機系統裡的廣告、熱搜、資訊推薦和行銷推播。不需 root,可還原,支援 AI 代理一鍵執行。", + "ja": "中国メーカー製 Android スマホのシステム内にある広告、トレンド検索、ニュースのおすすめ、マーケティング通知をオフにする。root 不要で元に戻せ、AI エージェントがワンクリックで実行できる。", + "ko": "중국산 안드로이드 스마트폰 시스템의 광고, 인기 검색어, 뉴스 추천, 마케팅 푸시를 꺼 준다. root 없이 쓸 수 있고 원래대로 되돌릴 수 있으며, AI 에이전트가 한 번에 실행할 수 있다.", + "en": "Turns off the ads, trending searches, news recommendations and marketing pushes built into Chinese Android phone systems. No root needed, reversible, and AI agents can run it in one step.", + "seen": "2026-10-30" + } + }, + "routerhubSI/uncensored-ai-api": { + "66c2f1401a12": { + "src": "Uncensored AI API and models — one key for Claude, GPT, Gemini, Grok, DeepSeek, GLM and Qwen, with uncensored and abliterated variants where available. OpenAI-…", + "zh-Hans": "无审查 AI API 与模型——一个密钥即可调用 Claude、GPT、Gemini、Grok、DeepSeek、GLM 和 Qwen,并在可用时提供无审查和 abliterated 变体。兼容 OpenAI-…", + "zh-Hant": "無審查 AI API 與模型——一組金鑰即可呼叫 Claude、GPT、Gemini、Grok、DeepSeek、GLM 和 Qwen,並在可用時提供無審查與 abliterated 變體。相容 OpenAI-…", + "ja": "検閲なしの AI API とモデル——1 つのキーで Claude、GPT、Gemini、Grok、DeepSeek、GLM、Qwen を利用でき、提供されている場合は無検閲版・abliterated 版も選べる。OpenAI-…", + "ko": "검열 없는 AI API와 모델 — 키 하나로 Claude, GPT, Gemini, Grok, DeepSeek, GLM, Qwen을 쓸 수 있고, 제공되는 경우 무검열·abliterated 변형도 선택할 수 있다. OpenAI-…", + "seen": "2026-10-30" + } + }, + "sanjayadanushka712/Ghost-Night": { + "d9560e9d5334": { + "src": "Local-only browser fingerprint & identity rotation toolkit for authorized security testing. Tor/obfs4, coherent profiles, WebRTC/DNS leak protection.", + "zh-Hans": "仅本地运行的浏览器指纹与身份轮换工具包,用于经授权的安全测试。支持 Tor/obfs4、一致性配置档、WebRTC/DNS 泄漏防护。", + "zh-Hant": "僅在本機執行的瀏覽器指紋與身分輪替工具包,用於經授權的安全測試。支援 Tor/obfs4、一致性設定檔、WebRTC/DNS 洩漏防護。", + "ja": "ローカル専用のブラウザフィンガープリント/ID ローテーション用ツールキットで、許可を得たセキュリティテストが対象。Tor/obfs4、整合性のあるプロファイル、WebRTC/DNS リーク対策に対応。", + "ko": "로컬에서만 동작하는 브라우저 핑거프린트·신원 교체 툴킷으로, 허가받은 보안 테스트용이다. Tor/obfs4, 일관된 프로필, WebRTC/DNS 유출 방지를 지원한다.", + "seen": "2026-10-30" + } + }, + "sanjayadanushka712/TaskFlow": { + "c03fda0c6415": { + "src": "End-to-end DevOps TaskFlow API — FastAPI, PostgreSQL, SQLAlchemy, Alembic, Docker Compose, Pytest and GitHub Actions CI,Kubernetes,prometheus,Grafana,helm,k9s,…", + "zh-Hans": "端到端 DevOps TaskFlow API —— FastAPI、PostgreSQL、SQLAlchemy、Alembic、Docker Compose、Pytest 和 GitHub Actions CI、Kubernetes、prometheus、Grafana、helm、k9s、…", + "zh-Hant": "端到端 DevOps TaskFlow API —— FastAPI、PostgreSQL、SQLAlchemy、Alembic、Docker Compose、Pytest 和 GitHub Actions CI、Kubernetes、prometheus、Grafana、helm、k9s、…", + "ja": "エンドツーエンドの DevOps TaskFlow API —— FastAPI、PostgreSQL、SQLAlchemy、Alembic、Docker Compose、Pytest、GitHub Actions CI、Kubernetes、prometheus、Grafana、helm、k9s、…", + "ko": "엔드투엔드 DevOps TaskFlow API — FastAPI, PostgreSQL, SQLAlchemy, Alembic, Docker Compose, Pytest, GitHub Actions CI, Kubernetes, prometheus, Grafana, helm, k9s, …", + "seen": "2026-10-30" + } + }, + "scarletscreengrasp/Uttorent": { + "e0f79c8f9f48": { + "src": "Uttorent 2026 - Full working installer, complete standalone setup ready to run.", + "zh-Hans": "Uttorent 2026——可直接使用的完整安装程序,完整独立安装包,开箱即用。", + "zh-Hant": "Uttorent 2026——可直接使用的完整安裝程式,完整獨立安裝包,開箱即用。", + "ja": "Uttorent 2026——すぐに使える完全版インストーラー。完全なスタンドアロンセットアップで、そのまま実行できる。", + "ko": "Uttorent 2026 — 바로 쓸 수 있는 완전한 설치 프로그램. 완전한 독립 설치본으로 바로 실행할 수 있다.", + "seen": "2026-10-30" + } + }, + "shipwords-dev/shipwords": { + "f5a7f45302ae": { + "src": "Ship a money-making AI site for every new keyword. Cloudflare-native starter with auth, credits, payments and AI generation. / 新词站群框架:一个新词一个站,一个下午上线。起量的继续迭代,没起…", + "zh-Hans": "为每个新关键词上线一个赚钱的 AI 网站。基于 Cloudflare 的启动模板,含登录认证、积分、支付和 AI 生成。/ 新词站群框架:一个新词一个站,一个下午上线。起量的继续迭代,没起…", + "zh-Hant": "為每個新關鍵字上線一個賺錢的 AI 網站。基於 Cloudflare 的起始範本,含登入驗證、點數、付款和 AI 生成。/ 新詞站群框架:一個新詞一個站,一個下午上線。起量的繼續迭代,沒起…", + "ja": "新しいキーワードごとに稼げる AI サイトを公開。認証、クレジット、決済、AI 生成を備えた Cloudflare ネイティブのスターター。/ 新語サイト群フレームワーク:1 語につき 1 サイト、午後のうちに公開。伸びたものは改良を続け、伸びなかったものは…", + "ko": "새 키워드마다 돈 되는 AI 사이트를 하나씩 배포. 인증, 크레딧, 결제, AI 생성을 갖춘 Cloudflare 네이티브 스타터. / 신조어 사이트군 프레임워크: 키워드 하나에 사이트 하나, 오후 한나절이면 오픈. 반응이 오면 계속 개선하고, 반응이 없으면…", + "en": "Ship a money-making AI site for every new keyword. Cloudflare-native starter with auth, credits, payments and AI generation. / A framework for farms of new-keyword sites: one new keyword, one site, live in an afternoon. Keep iterating on the ones that take off, drop the ones that don't…", + "seen": "2026-10-30" + } + }, + "t3dotgg/tstack": { + "32630c525219": { + "src": "The agent skills I use every day. Works with Claude Code and Codex.", + "zh-Hans": "我每天都在用的智能体技能。适用于 Claude Code 和 Codex。", + "zh-Hant": "我每天都在用的代理技能。適用於 Claude Code 和 Codex。", + "ja": "私が毎日使っているエージェントスキル。Claude Code と Codex で使える。", + "ko": "내가 매일 쓰는 에이전트 스킬. Claude Code와 Codex에서 쓸 수 있다.", + "seen": "2026-10-30" + } + }, + "thomasunise/argus": { + "128f0e9249bd": { + "src": "Open-source agentic security operations platform:", + "zh-Hans": "开源的智能体式安全运营平台:", + "zh-Hant": "開源的代理式資安營運平台:", + "ja": "オープンソースのエージェント型セキュリティオペレーションプラットフォーム:", + "ko": "오픈 소스 에이전틱 보안 운영 플랫폼:", + "seen": "2026-10-30" + } + }, + "twilightstonerestore/Glary-Utilities-Pro": { + "266bcb6f2e83": { + "src": "Glary Utilities Pro 2026: Full working installer with all tools activated, ready for immediate use on your desktop.", + "zh-Hans": "Glary Utilities Pro 2026:可直接使用的完整安装程序,所有工具均已激活,可立即在桌面上使用。", + "zh-Hant": "Glary Utilities Pro 2026:可直接使用的完整安裝程式,所有工具均已啟用,可立即在桌面上使用。", + "ja": "Glary Utilities Pro 2026:全ツールがアクティベーション済みの、すぐに使える完全版インストーラー。デスクトップですぐに使い始められる。", + "ko": "Glary Utilities Pro 2026: 모든 도구가 활성화된, 바로 쓸 수 있는 완전한 설치 프로그램. 데스크톱에서 즉시 사용할 수 있다.", + "seen": "2026-10-30" + } + }, + "vaishantsah/watson-AI-osint-all-in-one": { + "95f188830685": { + "src": "Watson — free OSINT tool for Windows: people search across 3,100+ public sites by nickname, email, phone or website. Open-source intelligence made simple: digi…", + "zh-Hans": "Watson —— 免费的 Windows OSINT 工具:按昵称、邮箱、电话或网站,在 3,100 多个公开站点上搜索人物。让开源情报变得简单:digi…", + "zh-Hant": "Watson —— 免費的 Windows OSINT 工具:依暱稱、電子郵件、電話或網站,在 3,100 多個公開網站上搜尋人物。讓開源情報變得簡單:digi…", + "ja": "Watson — Windows 向けの無料 OSINT ツール:ニックネーム、メールアドレス、電話番号、Web サイトから、3,100 以上の公開サイトで人物を検索できる。オープンソースインテリジェンスを手軽に:digi…", + "ko": "Watson — Windows용 무료 OSINT 도구: 닉네임, 이메일, 전화번호, 웹사이트로 3,100개 이상의 공개 사이트에서 사람을 검색한다. 오픈소스 인텔리전스를 쉽게: digi…", + "seen": "2026-10-30" + } + }, + "wangrongding/tv-fresh": { + "19581adbd0c3": { + "src": "tv-fresh 电视焕新:小米电视(MIUI TV)去广告/清理预装/换桌面/装代理与影视仓的 Agent Skill——免root可逆,含固件逆向实录与一键脚本", + "zh-Hans": "tv-fresh 电视焕新:小米电视(MIUI TV)去广告/清理预装/换桌面/装代理与影视仓的 Agent Skill——免root可逆,含固件逆向实录与一键脚本", + "zh-Hant": "tv-fresh 電視煥新:小米電視(MIUI TV)去廣告/清理預裝/換桌面/裝代理與影視倉的 Agent Skill——免root可逆,含韌體逆向實錄與一鍵指令碼", + "ja": "tv-fresh テレビ刷新:Xiaomi TV(MIUI TV)の広告削除/プリインストールアプリの整理/ホーム画面の変更/プロキシと動画ソースアプリ「影视仓」の導入を行う Agent Skill——root 不要で元に戻せ、ファームウェア解析の記録とワンクリックスクリプト付き", + "ko": "tv-fresh TV 새 단장: 샤오미 TV(MIUI TV)의 광고 제거/사전 설치 앱 정리/런처 교체/프록시와 영상 소스 앱 '影视仓' 설치를 해 주는 Agent Skill——root 없이 가능하고 되돌릴 수 있으며, 펌웨어 리버스 기록과 원클릭 스크립트 포함", + "en": "tv-fresh TV refresh: an Agent Skill that removes ads from Xiaomi TV (MIUI TV), cleans out preinstalled apps, swaps the launcher, and installs a proxy and the video-source app \"YingShiCang\" (影视仓) — no root needed, reversible, with a firmware reverse-engineering log and a one-click script", + "seen": "2026-10-30" + } + }, + "wangzan101/Mika": { + "fbc4ac54e724": { + "src": "Mika — 你手机上的私人 AI 助理,替你操作 App、上网、把事办成。An on-device AI agent for Android that operates apps and the web to get things done for you.", + "zh-Hans": "Mika —— 你手机上的私人 AI 助理,替你操作 App、上网、把事办成。一个运行在 Android 本机上的 AI 智能体,替你操作 App 和网页,把事情办好。", + "zh-Hant": "Mika —— 你手機上的私人 AI 助理,替你操作 App、上網、把事辦成。一個在 Android 本機執行的 AI 代理,替你操作 App 和網頁,把事情辦好。", + "ja": "Mika — スマホの中のパーソナル AI アシスタント。アプリを操作し、ネットを使い、用事を片づけてくれる。Android 端末上で動作する AI エージェントが、アプリや Web を操作して代わりに作業を進める。", + "ko": "Mika — 내 휴대폰 속 개인 AI 비서. 앱을 조작하고 인터넷을 쓰며 일을 처리해 준다. Android 기기 안에서 실행되는 AI 에이전트가 앱과 웹을 대신 조작해 일을 끝낸다.", + "en": "Mika — a personal AI assistant on your phone that operates apps, browses the web and gets things done for you. An on-device AI agent for Android that operates apps and the web to get things done for you.", + "seen": "2026-10-30" + } + }, + "xanthichi/mcd-meal-mate": { + "60ecf917868f": { + "src": "M餐搭子:基于麦当劳 MCP 实时菜单与营养数据的智能搭餐 Skill|在线演示已上线", + "zh-Hans": "M餐搭子:基于麦当劳 MCP 实时菜单与营养数据的智能搭餐 Skill|在线演示已上线", + "zh-Hant": "M餐搭子:基於麥當勞 MCP 即時菜單與營養資料的智慧搭餐 Skill|線上示範已上線", + "ja": "M餐搭子(Mミールメイト):マクドナルドの MCP によるリアルタイムのメニューと栄養データをもとに、食事の組み合わせを考える Skill|オンラインデモ公開中", + "ko": "M餐搭子(M 밀메이트): 맥도날드 MCP의 실시간 메뉴와 영양 데이터를 바탕으로 식단 조합을 짜 주는 Skill|온라인 데모 공개", + "en": "M Meal Mate (M餐搭子): a smart meal-pairing Skill built on McDonald's MCP live menu and nutrition data | online demo now live", + "seen": "2026-10-30" + } + }, + "zeabur-oss/zeabur": { + "001d514c66e3": { + "src": "Self-hosted PaaS on your own Kubernetes.", + "zh-Hans": "运行在你自己的 Kubernetes 上的自托管 PaaS。", + "zh-Hant": "運行在你自己的 Kubernetes 上的自行架設 PaaS。", + "ja": "自分の Kubernetes 上で動かすセルフホスト型 PaaS。", + "ko": "내 Kubernetes 위에서 돌리는 셀프 호스팅 PaaS.", + "seen": "2026-10-30" + } + } + } +} diff --git a/docs/DAILY_UPDATE.md b/docs/DAILY_UPDATE.md index 559dfeb..9705ea8 100644 --- a/docs/DAILY_UPDATE.md +++ b/docs/DAILY_UPDATE.md @@ -50,9 +50,9 @@ Beijing, pt if 00:xx in Los Angeles, otherwise manual). The workflow and `tools/ ## New-repo description translations and polish -The new-repos table shows the repo's own GitHub description. `data/newcomer_i18n.json` holds its translation -into zh-Hans, zh-Hant, ja and ko (plus en when the source is Chinese), keyed by repo full name with the original -text in `src`; it is shown only while `src` still equals the current description, otherwise the original is shown. +The new-repos table shows the repo's own GitHub description. `data/translation_library.json` holds its translation +into zh-Hans, zh-Hant, ja and ko (plus en when the source is Chinese), keyed by repo full name + hash of the original +text + language; it is shown only on a hit (the text is unchanged), otherwise the original is shown. Hits cost no model call. Since the i18n pipeline, `tools/update_stars.py` fills this cache itself: after discovering the ranking it translates every displayed description that has no current translation (already translated ones are skipped), diff --git a/docs/HOW_IT_WORKS.ja.md b/docs/HOW_IT_WORKS.ja.md new file mode 100644 index 0000000..66bd3b7 --- /dev/null +++ b/docs/HOW_IT_WORKS.ja.md @@ -0,0 +1,43 @@ +[English](HOW_IT_WORKS.md) | [简体中文](HOW_IT_WORKS.zh-Hans.md) | [繁體中文](HOW_IT_WORKS.zh-Hant.md) | **日本語** | [한국어](HOW_IT_WORKS.ko.md) + +# GitHub Risers の仕組み + +[← ランキングに戻る](../README.ja.md) + +総スター数順のリストでは古い大物が居座り、いま伸びているものが埋もれます。GitHub Risers は 1 日あたりの増加スター数(直近 7・30・365 日)で並べ、カテゴリごとに表示します。AI がメインのランキングです。各カテゴリは、直近 7 日以内に作られたリポジトリの「新着」ランキング、週・月・年の増加ランキング、最後に総スター数の順です。数値はすべて GitHub API から取得しています。分類ルール:[docs/CATEGORIES.md](CATEGORIES.md)。 + +1 日 2 回更新:北京時間 0 時(UTC+8)とロサンゼルス時間 0 時(America/Los_Angeles、夏時間に追従)。更新ごとに時間帯別に保存されます。 + +README では各ランキングの上位 10 件を表示します。各ランキングの上位 20 件の全体(収録 70 プロジェクトから)は latest/ のファイルにあります。 + +以下が最新のランキングです。更新のたびに時間帯ごとにも保存しています:[ランキング履歴](../rankings/README.ja.md) · [latest/rankings.ja.md](../latest/rankings.ja.md)。 + +各カテゴリの各ランキングの 1 位を、下の実データからスクリプトで自動生成しています。「なし」は今回その枠に該当がないことを示します。 + +## カテゴリ + +| | | +|---|---| +| AI ★ メイン | LLM・エージェント・MCP・コーディング助手・生成 AI | +| 開発者ツール | CLI・エディタ・パッケージマネージャ・リンタ・ビルドツール | +| セキュリティ | 脆弱性スキャン・SAST・サプライチェーン・ランタイムセキュリティ | +| Web / フロントエンド | フロントエンド枠組み・UI キット・CSS・ブラウザツール | +| インフラ | コンテナ・Kubernetes・クラウド・ネットワーク・可観測性 | +| デザイン / クリエイティブ | デザインシステム・描画・アニメーション・制作ツール | +| データ | データベース・分析・ETL・データエンジニアリング | + +## 7 日以内の新着で最も熱いリポジトリ(作成から 7 日以内) + +このカテゴリで直近 7 日以内に作成されたリポジトリを GitHub 検索 API(topic で判定:リポジトリ自身がそのカテゴリの topic を持つこと)で探し、作成からの 1 日あたりスター数で並べます。このカテゴリの他のランキング(または収録プロジェクト)に載っているもの、および先のカテゴリ(AI 優先)ですでに載ったものは除外します。説明文は各リポジトリ自身の GitHub 説明;翻訳ライブラリは [data/translation_library.json](../data/translation_library.json)。ルール:[docs/NEW_ARRIVALS.md](NEW_ARRIVALS.md)。 + +## 数値の出どころ + +- 総スター数:`GET /repos/{owner}/{repo}` の `stargazers_count`。 +- 増加数:`GET /repos/{owner}/{repo}/stargazers/history`(GitHub が提供する、ユーザー情報を含まない週次/日次のスター数)。今日より前の N 日分(UTC、今日は含まない)の合計で、スター/日 = 増加数 ÷ N。 +- GitHub は週/日の区切りが UTC と一致する保証はないとしており、後から外されたスターは数えられないため、期間の端では多少の誤差が出ます。 +- スター推移は `star-history.com` の SVG 画像を URL で参照しています。このリポジトリに解析・トラッキング用スクリプトは一切ありません。 +- 生データは [`data/stats.json`](../data/stats.json)、日次スナップショットは [`data/stars.json`](../data/stars.json) に追記されます。 + +## コントリビュート + +`data/projects.json` に項目を追加し(`category` と 5 言語の `desc`)、`python tools/update_stars.py` を実行。カテゴリ:[docs/CATEGORIES.md](CATEGORIES.md)。毎日の更新:[docs/DAILY_UPDATE.md](DAILY_UPDATE.md)。 diff --git a/docs/HOW_IT_WORKS.ko.md b/docs/HOW_IT_WORKS.ko.md new file mode 100644 index 0000000..c8d0902 --- /dev/null +++ b/docs/HOW_IT_WORKS.ko.md @@ -0,0 +1,43 @@ +[English](HOW_IT_WORKS.md) | [简体中文](HOW_IT_WORKS.zh-Hans.md) | [繁體中文](HOW_IT_WORKS.zh-Hant.md) | [日本語](HOW_IT_WORKS.ja.md) | **한국어** + +# GitHub Risers 작동 방식 + +[← 랭킹으로 돌아가기](../README.ko.md) + +총 스타 순 목록에서는 오래된 대형 프로젝트가 계속 상위를 차지하고, 지금 뜨는 프로젝트는 묻힙니다. GitHub Risers는 하루 평균 늘어난 스타 수(최근 7·30·365일)로 순위를 매기고 카테고리별로 보여 주며, AI가 메인 랭킹입니다. 각 카테고리는 최근 7일 안에 만들어진 저장소의 신규 랭킹, 주·월·연 증가 랭킹, 마지막으로 총 스타 순입니다. 모든 수치는 GitHub API에서 가져옵니다. 분류 규칙: [docs/CATEGORIES.md](CATEGORIES.md). + +하루 두 번 갱신: 베이징 시간 0시(UTC+8)와 로스앤젤레스 시간 0시(America/Los_Angeles, 서머타임 반영). 갱신할 때마다 시간대별로 따로 보관합니다. + +README에는 랭킹마다 상위 10개를 싣습니다. 각 랭킹의 상위 20개 전체(70개 수록 프로젝트 기준)는 latest/ 파일에 있습니다. + +아래가 최신 순위입니다. 업데이트할 때마다 시간대별로도 저장합니다: [순위 기록](../rankings/README.ko.md) · [latest/rankings.ko.md](../latest/rankings.ko.md). + +각 카테고리의 모든 랭킹 1위를 아래 실제 데이터로 스크립트가 자동 생성합니다. '없음'은 이번 실행에서 해당 랭킹에 항목이 없다는 뜻입니다. + +## 카테고리 + +| | | +|---|---| +| AI ★ 메인 | LLM, 에이전트, MCP, 코딩 어시스턴트, 생성형 AI | +| 개발자 도구 | CLI, 에디터, 패키지 관리자, 린터, 빌드 도구 | +| 보안 | 취약점 스캐너, SAST, 공급망·런타임 보안 | +| Web / 프론트엔드 | 프론트엔드 프레임워크, UI 키트, CSS, 브라우저 도구 | +| 인프라 | 컨테이너, Kubernetes, 클라우드, 네트워킹, 관측성 | +| 디자인 / 크리에이티브 | 디자인 시스템, 드로잉, 애니메이션, 크리에이티브 도구 | +| 데이터 | 데이터베이스, 분석, ETL, 데이터 엔지니어링 | + +## 7일 이내 신규 인기 저장소 (최근 7일 내 생성) + +이 카테고리에서 최근 7일 안에 만들어진 저장소를 GitHub 검색 API(topic 기준: 저장소 자신이 해당 카테고리의 topic을 가져야 함)로 찾아 생성 이후 하루 평균 스타 순으로 줄 세웁니다. 이 카테고리의 다른 랭킹(또는 수록 프로젝트)에 이미 있거나, 앞선 카테고리(AI 우선)에 이미 올라간 저장소는 빼 둡니다. 설명은 저장소 자신의 GitHub 설명; 번역 라이브러리는 [data/translation_library.json](../data/translation_library.json). 규칙: [docs/NEW_ARRIVALS.md](NEW_ARRIVALS.md). + +## 숫자는 어떻게 얻나 + +- 총 스타: `GET /repos/{owner}/{repo}`의 `stargazers_count`. +- 증가 스타: `GET /repos/{owner}/{repo}/stargazers/history` (GitHub가 제공하는 사용자 정보 없는 주간/일간 스타 수). 오늘 이전 N일(UTC, 오늘 제외)의 합이며 스타/일 = 증가 수 ÷ N. +- GitHub는 주/일 구간 경계가 UTC와 일치한다고 보장하지 않으며, 나중에 취소된 스타는 집계되지 않으므로 기간 끝에서 약간의 오차가 있을 수 있습니다. +- 스타 추이 그래프는 `star-history.com`의 SVG 이미지를 URL로 참조합니다. 이 저장소에는 분석·추적 스크립트가 전혀 없습니다. +- 원본 숫자는 [`data/stats.json`](../data/stats.json), 일별 스냅샷은 [`data/stars.json`](../data/stars.json)에 누적됩니다. + +## 기여하기 + +`data/projects.json`에 항목을 추가하고(`category`와 다섯 언어 `desc`), `python tools/update_stars.py`를 실행하세요. 카테고리: [docs/CATEGORIES.md](CATEGORIES.md). 매일 갱신: [docs/DAILY_UPDATE.md](DAILY_UPDATE.md). diff --git a/docs/HOW_IT_WORKS.md b/docs/HOW_IT_WORKS.md new file mode 100644 index 0000000..628e27c --- /dev/null +++ b/docs/HOW_IT_WORKS.md @@ -0,0 +1,43 @@ +**English** | [简体中文](HOW_IT_WORKS.zh-Hans.md) | [繁體中文](HOW_IT_WORKS.zh-Hant.md) | [日本語](HOW_IT_WORKS.ja.md) | [한국어](HOW_IT_WORKS.ko.md) + +# How GitHub Risers works + +[← Back to the rankings](../README.md) + +Total-star lists keep the old giants on top and bury what is taking off right now. GitHub Risers ranks repos by stars gained per day (last 7, 30 and 365 days) and groups them into categories, with AI as the main board. Every category has a hottest-new-repos board for repos created in the last 7 days, then week, month and year star-growth rankings, and total stars last. All numbers come straight from the GitHub API. Classification rules: [docs/CATEGORIES.md](CATEGORIES.md). + +Updated twice a day: 00:00 Beijing time (UTC+8) and 00:00 Los Angeles time (America/Los_Angeles, follows daylight saving). Each update is archived under its own time slot. + +Each board in the README shows the top 10. The full top 20 of each board (from 70 tracked projects) is in the latest/ files. + +These tables are the latest ranking. Every update is also saved per time slot: [ranking history](../rankings/README.md) · [latest/rankings.md](../latest/rankings.md). + +The #1 of every board in every category, generated by script from the data below. n/a means that board has no entry in this run. + +## Categories + +| | | +|---|---| +| AI ★ primary | LLMs, agents, MCP, coding copilots and generative AI | +| Developer Tools | CLIs, editors, package managers, linters and build tooling | +| Security | Vulnerability scanners, SAST, supply-chain and runtime security | +| Web / Frontend | Frontend frameworks, UI kits, CSS and browser tooling | +| Infrastructure | Containers, Kubernetes, cloud, networking and observability | +| Design / Creative | Design systems, drawing, animation and creative tooling | +| Data | Databases, analytics, ETL and data engineering | + +## Hottest new repos (created in the last 7 days) + +Repositories created within the last 7 days in this category, found with the GitHub search API (by topic: a repo must carry one of the category's topics) and ranked by stars per day since creation. A repo that appears in this category's other rankings (or is a tracked project here), or that already claimed a slot in an earlier category (AI first), is left out. Descriptions are the repo's own GitHub description; translations live in [data/translation_library.json](../data/translation_library.json). Rules: [docs/NEW_ARRIVALS.md](NEW_ARRIVALS.md). + +## How the numbers are produced + +- Total stars: `GET /repos/{owner}/{repo}` → `stargazers_count`. +- Stars gained: `GET /repos/{owner}/{repo}/stargazers/history` (GitHub's privacy-safe weekly/daily star counts). The gain is the sum of the N complete UTC days before today (today is excluded). Stars/day = gain ÷ N. +- GitHub states that week/day bucket boundaries are not guaranteed to align with UTC, and stars that were later removed are not counted, so the figures can be off by a small amount at the window edges. +- Star history curves are `star-history.com` SVG images embedded by URL. This repo contains no analytics or tracking script of any kind. +- The raw numbers are in [`data/stats.json`](../data/stats.json); daily snapshots of the star count are appended to [`data/stars.json`](../data/stars.json). + +## Contributing + +Add an entry to `data/projects.json` (with `category` and `desc` in all five languages), then run `python tools/update_stars.py`. Categories: [docs/CATEGORIES.md](CATEGORIES.md). Daily updates: [docs/DAILY_UPDATE.md](DAILY_UPDATE.md). diff --git a/docs/HOW_IT_WORKS.zh-Hans.md b/docs/HOW_IT_WORKS.zh-Hans.md new file mode 100644 index 0000000..cc4f8e5 --- /dev/null +++ b/docs/HOW_IT_WORKS.zh-Hans.md @@ -0,0 +1,43 @@ +[English](HOW_IT_WORKS.md) | **简体中文** | [繁體中文](HOW_IT_WORKS.zh-Hant.md) | [日本語](HOW_IT_WORKS.ja.md) | [한국어](HOW_IT_WORKS.ko.md) + +# GitHub 飙升榜是怎么做的 + +[← 返回榜单](../README.zh-Hans.md) + +多数榜单按总星标数排序,老项目长期占据榜首,正在爆发的新项目反而被埋没。GitHub 飙升榜按“每天新增多少星标”来排:统计近 7 天、30 天和 365 天的日均涨星,并按分类展示,AI 是默认置顶的主榜。每个分类先看“7 天新晋”榜(最近 7 天内创建的仓库),再看周、月、年涨星榜,总星标榜放在最后。数据全部来自 GitHub API。分类规则见 [docs/CATEGORIES.md](CATEGORIES.md)。 + +每天更新两次:北京时间 0 点(UTC+8)和美西洛杉矶时间 0 点(America/Los_Angeles,随夏令时变化)。每次更新都会按各自的时段单独存档。 + +README 里每张榜只列前 10 名;每张榜完整的前 20 名(来自 70 个已收录项目)在 latest/ 文件里。 + +下方表格为最新榜单。每次更新还会按时段另存一份:[榜单历史](../rankings/README.zh-Hans.md) · [latest/rankings.zh-Hans.md](../latest/rankings.zh-Hans.md)。 + +每个分类里每张榜的第 1 名,由脚本根据下方的真实数据自动生成。“无”表示本次运行该榜没有条目。 + +## 分类 + +| | | +|---|---| +| 人工智能 ★ 主榜 | 大模型、智能体、MCP、编程助手与生成式 AI | +| 开发者工具 | 命令行、编辑器、包管理、代码检查与构建工具 | +| 安全 | 漏洞扫描、静态分析、供应链与运行时安全 | +| Web / 前端 | 前端框架、UI 组件库、CSS 与浏览器工具 | +| 基础设施 | 容器、Kubernetes、云、网络与可观测性 | +| 设计 / 创意 | 设计系统、绘图、动画与创意工具 | +| 数据 | 数据库、分析、ETL 与数据工程 | + +## 最热新仓库(近 7 天内创建) + +本分类下最近 7 天内创建的仓库,通过 GitHub 搜索 API(按 topic 匹配:仓库自己必须带有该分类的 topic)找出,按创建以来的日均星标排序。已出现在本分类其他榜单(或本分类已收录项目)中的仓库,以及已被更靠前分类(AI 优先)占位的仓库,不会重复列入。简介取自仓库自己的 GitHub 简介;译文库见 [data/translation_library.json](../data/translation_library.json)。规则见 [docs/NEW_ARRIVALS.md](NEW_ARRIVALS.md)。 + +## 数据是如何得出的 + +- 总星标数:`GET /repos/{owner}/{repo}` → `stargazers_count`。 +- 新增星标:`GET /repos/{owner}/{repo}/stargazers/history`(GitHub 提供的、保护隐私的按周/按日星标数)。新增数为今天之前 N 个完整 UTC 日的总和(不含今天),星标/天 = 新增数 ÷ N。 +- GitHub 说明,周/日统计区间的边界不保证与 UTC 对齐,且之后被取消的星标不会计入,因此窗口边缘的数字可能有小幅偏差。 +- 星标历史曲线是以 URL 嵌入的 `star-history.com` SVG 图片。本仓库不含任何分析或追踪脚本。 +- 原始数据见 [`data/stats.json`](../data/stats.json);每日星标数快照追加到 [`data/stars.json`](../data/stars.json)。 + +## 参与贡献 + +在 `data/projects.json` 中添加条目(`desc` 需包含全部五种语言),然后运行 `python tools/update_stars.py`。每日更新说明见 [docs/DAILY_UPDATE.md](DAILY_UPDATE.md)。 diff --git a/docs/HOW_IT_WORKS.zh-Hant.md b/docs/HOW_IT_WORKS.zh-Hant.md new file mode 100644 index 0000000..1d50013 --- /dev/null +++ b/docs/HOW_IT_WORKS.zh-Hant.md @@ -0,0 +1,43 @@ +[English](HOW_IT_WORKS.md) | [简体中文](HOW_IT_WORKS.zh-Hans.md) | **繁體中文** | [日本語](HOW_IT_WORKS.ja.md) | [한국어](HOW_IT_WORKS.ko.md) + +# GitHub 飆升榜是怎麼做的 + +[← 回到榜單](../README.zh-Hant.md) + +多數榜單依總星號數排序,老專案長期霸占榜首,正在爆發的新專案反而被埋沒。GitHub 飆升榜依「每天新增多少星號」來排:統計近 7 天、30 天和 365 天的日均漲星,並依分類呈現,AI 是預設置頂的主榜。每個分類先看「7 天新晉」榜(最近 7 天內建立的儲存庫),再看週、月、年漲星榜,總星號榜放在最後。資料全部來自 GitHub API。分類規則請見 [docs/CATEGORIES.md](CATEGORIES.md)。 + +每天更新兩次:北京時間 0 點(UTC+8)和美西洛杉磯時間 0 點(America/Los_Angeles,隨夏令時間變動)。每次更新都會依各自的時段單獨存檔。 + +README 裡每張榜只列前 10 名;每張榜完整的前 20 名(來自 70 個已收錄專案)在 latest/ 檔案裡。 + +下方表格為最新榜單。每次更新還會依時段另存一份:[榜單歷史](../rankings/README.zh-Hant.md) · [latest/rankings.zh-Hant.md](../latest/rankings.zh-Hant.md)。 + +每個分類裡每張榜的第 1 名,由腳本根據下方的真實資料自動產生。「無」表示本次執行該榜沒有項目。 + +## 分類 + +| | | +|---|---| +| 人工智慧 ★ 主榜 | 大型語言模型、代理、MCP、程式設計助手與生成式 AI | +| 開發者工具 | 命令列、編輯器、套件管理、程式碼檢查與建置工具 | +| 資安 | 弱點掃描、靜態分析、供應鏈與執行時資安 | +| Web / 前端 | 前端框架、UI 元件庫、CSS 與瀏覽器工具 | +| 基礎建設 | 容器、Kubernetes、雲端、網路與可觀測性 | +| 設計 / 創意 | 設計系統、繪圖、動畫與創意工具 | +| 資料 | 資料庫、分析、ETL 與資料工程 | + +## 最熱新儲存庫(近 7 天內建立) + +本分類下最近 7 天內建立的儲存庫,透過 GitHub 搜尋 API(依 topic 比對:儲存庫自己必須帶有該分類的 topic)找出,並依建立以來的日均星號排序。已出現在本分類其他榜單(或本分類已收錄專案)中的儲存庫,以及已被更前面分類(AI 優先)佔位的儲存庫,不會重複列入。簡介取自儲存庫自己的 GitHub 簡介;譯文庫見 [data/translation_library.json](../data/translation_library.json)。規則請見 [docs/NEW_ARRIVALS.md](NEW_ARRIVALS.md)。 + +## 資料是如何得出的 + +- 總星號數:`GET /repos/{owner}/{repo}` → `stargazers_count`。 +- 新增星號:`GET /repos/{owner}/{repo}/stargazers/history`(GitHub 提供、保護隱私的每週/每日星號數)。新增數為今天之前 N 個完整 UTC 日的總和(不含今天),星號/天 = 新增數 ÷ N。 +- GitHub 表示,週/日統計區間的邊界不保證與 UTC 對齊,且之後被取消的星號不會計入,因此區間邊緣的數字可能有小幅誤差。 +- 星號歷史曲線是以 URL 嵌入的 `star-history.com` SVG 圖片。本儲存庫不含任何分析或追蹤指令碼。 +- 原始資料請見 [`data/stats.json`](../data/stats.json);每日星號數快照會追加到 [`data/stars.json`](../data/stars.json)。 + +## 參與貢獻 + +在 `data/projects.json` 中新增項目(需含 `category` 與五種語言的 `desc`),然後執行 `python tools/update_stars.py`。分類:[docs/CATEGORIES.md](CATEGORIES.md)。每日更新:[docs/DAILY_UPDATE.md](DAILY_UPDATE.md)。 diff --git a/docs/I18N_PIPELINE.md b/docs/I18N_PIPELINE.md index b13ba51..81d8e27 100644 --- a/docs/I18N_PIPELINE.md +++ b/docs/I18N_PIPELINE.md @@ -12,11 +12,37 @@ existing text stays and the scheduled update carries on (`run_safe` swallows any ## 1. Translate -`data/newcomer_i18n.json`: `{ "owner/repo": { "src": "", "zh-Hans": ..., "zh-Hant": ..., "ja": ..., "ko": ..., "en": ... } }`. -`en` is only needed when the source contains CJK text. The README shows a translation only while `src` equals the live description. +### The translation library (`data/translation_library.json`) -For the top 20 of every category (what the READMEs show) the pipeline lists the gaps (`translation_gaps`): no entry, -a stale `src`, or a missing language. Already translated entries are never sent again. New translations are written +Keyed exactly by **repo + hash of the source text + language**: + +``` +{ "version": 2, "entries": { "owner/repo": { "": { "src": "", "seen": "YYYY-MM-DD", + "zh-Hans": ..., "zh-Hant": ..., "ja": ..., "ko": ..., "en": ... } } } } +``` + +`en` is only needed when the source contains CJK text. Rules: + +- **Hit** (same repo, same source hash, language present): the stored text is used. No model call, no tokens. A page shows + a stored text only for a hit; otherwise the original. +- **Miss** (new repo, or the description changed, so the hash changed): only the missing languages of that one text are + sent to the model. The old version stays in the library, so a description that changes back is a hit again. +- Every run logs the split, for example `translate: library 50/50 hits (100%), 0 partial, 0 new -> 0 to send to the model, + 0 calls for the hits`, and when everything hits the translate model is not even started. +- `seen` is the last day an entry was used (refreshed at most once a week, so the file does not change daily). + `python3 tools/newcomer_i18n.py --prune-days 180` drops entries that were not used for that long; nothing is pruned + automatically. `python3 tools/newcomer_i18n.py` shows the library size and the hit rate for the current ranking. +- Older flat files (`{repo: {"src": ..., lang: ...}}`) are still read and converted on load. + +### Glossary (`data/glossary.json`) + +Fixed wording for common terms (star, agent, skill, repo, prompt, ...) in all five languages, plus names to keep as is +(MCP, CLI, Docker, ...). The prompt carries only the glossary entries that occur in the texts of that batch, so the token +cost stays small. UI strings are not machine-translated at all: they are fixed text in `tools/i18n.py` and follow the same terms +(star = 星标 / 星號). + +For the top 20 of every category (what the READMEs show) the pipeline lists the gaps (`translation_gaps`): no entry for the current +source hash, or a missing language. New translations are written after every batch of 8 repos. A translation is accepted only if it is one plain line and keeps every number of 2+ digits and every identifier-like name (`TinyPNG`, `gpt-2`, `Node.js`...). Rules sent to the model: add no facts, remove no facts, keep names/links/code/emoji/`…`, star = 星标 (zh-Hans) / 星號 (zh-Hant), agent = 智能体 / 代理 / エージェント / 에이전트, @@ -32,7 +58,7 @@ descriptions. Category descriptions (`data/categories.json`) are short taxonomy (`--targets categories`). Never polished: suspected cracked/pirated repos (they stay literal), UI strings in `tools/i18n.py`, and the repo's own original description (`src`, it is not ours). -Each text is polished once. `data/polish_state.json` stores, per `kind|name|lang`, the hash of the text as it is now; the +Each text is polished once, and only un-polished entries are ever sent (the log prints `polish: N/M texts already polished or given up on (skipped), K to send`). `data/polish_state.json` stores, per `kind|name|lang` (for new-repo texts `name` is `repo@sourcehash`, so a changed source is a new, unpolished entry), the hash of the text as it is now; the same text is never sent twice, an edited or re-translated text is polished again, and a text whose polish was rejected 3 times is left alone until it changes. Bump `POLISH_VERSION` in `tools/i18n_pipeline.py` after changing the style prompt to polish everything again. Delete `polish_state.json` for the same effect. diff --git a/docs/NEW_ARRIVALS.md b/docs/NEW_ARRIVALS.md index e9e7213..e14576a 100644 --- a/docs/NEW_ARRIVALS.md +++ b/docs/NEW_ARRIVALS.md @@ -51,6 +51,6 @@ A new repo is not added to `data/projects.json` automatically. ## Descriptions -The table shows the repo's own GitHub description (made safe for a table cell). A hand-written translation in -`data/newcomer_i18n.json` is shown on a page of that language while its `src` matches; otherwise the original. +The table shows the repo's own GitHub description (made safe for a table cell). A stored translation in +`data/translation_library.json` (keyed by repo + source-text hash + language) is shown on a page of that language on a hit; otherwise the original. Gaps: `python3 tools/newcomer_i18n.py`. diff --git a/docs/project-governance/CHANGELOG.md b/docs/project-governance/CHANGELOG.md index db9ef13..414c93c 100644 --- a/docs/project-governance/CHANGELOG.md +++ b/docs/project-governance/CHANGELOG.md @@ -18,3 +18,10 @@ - All 39 untranslated new-repo descriptions translated into zh-Hans, zh-Hant, ja, ko (+ en for the 11 Chinese sources); every project blurb and category description already had all five languages (now enforced by a test). - `tools/i18n_pipeline.py` + `tools/llm.py`: the scheduled update translates new descriptions into the cache (skipping anything already translated) in CI (Cursor CLI, optional `CURSOR_API_KEY` secret). Polish runs locally with the Antigravity CLI (`agy`, model `gemini-3.8-flash-medium`) via `tools/polish_local.sh` / `tools/local_daily.sh`. A failure keeps the existing text and never blocks the update. + +## 2026-10-30 (translation library, slim README) + +- `data/newcomer_i18n.json` became the translation library `data/translation_library.json`, keyed by repo + source-text hash + language. A hit costs no model call; only new or changed descriptions are translated, only missing languages are asked for; every run logs hits/new. Tests prove zero model calls on a full hit. +- `data/glossary.json`: fixed terms for common words; only the terms present in a batch go into the prompt. Polish sends only un-polished entries and logs how many were skipped. +- READMEs in all five languages are now a first screen: headline, one sentence, update stamp, the category leaders table (rows link to the category boards), then the category boards. Intro, schedule, "how it is produced", categories table and contributing moved to generated `docs/HOW_IT_WORKS*.md`; the long new-repo explanation moved there too. +- README first screen reworked (generator only): first line `GitHub 涨星榜 / GitHub Risers` (English: `GitHub Risers: Ranked by Stars Gained per Day`), header image `.github/social-preview.png`, three badges (MIT, CI, last updated), website link, three Q&A subheads linking `docs/FAQ.md`, a star prompt, a "how to cite" line (`CITATION.cff`) and a link to `docs/FACTS.md`. Each board shows the top 10 in the README; the full top 20 stays in `latest/`. Those linked files come from the GEO pull request (#9); the generator only links them, and a test checks the FAQ anchors. diff --git a/docs/project-governance/WORKLOG.md b/docs/project-governance/WORKLOG.md index 2a24d54..6987c36 100644 --- a/docs/project-governance/WORKLOG.md +++ b/docs/project-governance/WORKLOG.md @@ -25,7 +25,7 @@ ## 2026-10-30 (i18n follow-up) -- Hand-written translations of the new-repo descriptions in `data/newcomer_i18n.json` (zh-Hans, zh-Hant, ja, ko; en for CJK sources); used only while `src` matches the current description, otherwise the original shows. `tools/newcomer_i18n.py` lists gaps (`--strict` exits 1); the daily run prints the gap count. +- Hand-written translations of the new-repo descriptions in `data/translation_library.json` (zh-Hans, zh-Hant, ja, ko; en for CJK sources); used only on a hit (repo + source hash + language), otherwise the original shows. `tools/newcomer_i18n.py` lists gaps (`--strict` exits 1); the daily run prints the gap count. - Ranking pages are generated per language: `rankings/README..md`, `latest/rankings..md`, `rankings///rankings..md`; each README links to its own language. English pages are byte-identical to before. - Verification: `python3 tools/verify.py` green (76 tests). diff --git a/tests/test_i18n_pipeline.py b/tests/test_i18n_pipeline.py index c8506cb..d2b0db5 100644 --- a/tests/test_i18n_pipeline.py +++ b/tests/test_i18n_pipeline.py @@ -12,6 +12,7 @@ sys.path.insert(0, str(ROOT / "tools")) import i18n_pipeline as pipe # noqa: E402 import llm # noqa: E402 +import newcomer_i18n as nci # noqa: E402 import update_stars as up # noqa: E402 LANG5 = ("en", "zh-Hans", "zh-Hant", "ja", "ko") @@ -58,7 +59,7 @@ def __init__(self, descs, cache=None, projects=None, suspicious=()): (self.root / "data").mkdir() self.items = [{"name": n, "description": d, "suspicious": n in suspicious} for n, d in descs.items()] self.new = {"ok": True, "categories": {"ai": {"ok": True, "items": self.items}}} - self.write("newcomer_i18n.json", cache or {}) + self.write("translation_library.json", nci.from_legacy(cache or {})) self.write("projects.json", projects or []) self.write("categories.json", [{"id": "ai", "desc": {l: f"cat {l}" for l in LANG5}}]) @@ -68,6 +69,9 @@ def write(self, name, data): def read(self, name): return json.loads((self.root / "data" / name).read_text("utf-8")) + def entry(self, name, src): + return (self.read("translation_library.json")["entries"].get(name) or {}).get(nci.src_hash(src)) + def close(self): self.tmp.cleanup() @@ -138,10 +142,9 @@ def test_only_untranslated_are_sent_and_cache_is_filled(self): self.assertEqual({i["id"] for i in sent}, {"b/two", "c/three"}) # a/one was already translated self.assertEqual(set(next(i for i in sent if i["id"] == "b/two")["langs"]), set(LANG5)) # CJK source also gets en self.assertEqual(set(next(i for i in sent if i["id"] == "c/three")["langs"]), set(LANG5[1:])) - cache = self.repo.read("newcomer_i18n.json") - self.assertEqual(cache["a/one"]["zh-Hans"], "old zh-Hans") # untouched - self.assertEqual(cache["c/three"]["src"], "Does three.") - self.assertEqual(cache["b/two"]["en"], "[en] 做一件事。") + self.assertEqual(self.repo.entry("a/one", "Does one thing.")["zh-Hans"], "old zh-Hans") # untouched + self.assertEqual(self.repo.entry("c/three", "Does three.")["src"], "Does three.") + self.assertEqual(self.repo.entry("b/two", "做一件事。")["en"], "[en] 做一件事。") def test_second_run_makes_no_calls(self): self.run_translate(FakeRunner(translate=fake_tr)) @@ -155,12 +158,13 @@ def test_changed_description_is_translated_again(self): r = FakeRunner(translate=fake_tr) self.run_translate(r) self.assertEqual(len(r.calls), 1) - self.assertEqual(self.repo.read("newcomer_i18n.json")["a/one"]["src"], "Does one thing, better.") + self.assertEqual(self.repo.entry("a/one", "Does one thing, better.")["ja"], "[ja] Does one thing, better.") + self.assertEqual(self.repo.entry("a/one", "Does one thing.")["ja"], "old ja") # the old text stays in the library def test_only_missing_languages_are_requested(self): - cache = self.repo.read("newcomer_i18n.json") - del cache["a/one"]["ko"] - self.repo.write("newcomer_i18n.json", cache) + lib = self.repo.read("translation_library.json") + del lib["entries"]["a/one"][nci.src_hash("Does one thing.")]["ko"] + self.repo.write("translation_library.json", lib) r = FakeRunner(translate=fake_tr) self.run_translate(r, limit=1) sent = json.loads(r.calls[0].split("Input items: ", 1)[1].split("\nFor each item", 1)[0]) @@ -171,13 +175,16 @@ def test_bad_translation_is_not_written(self): self.addCleanup(repo.close) bad = lambda i: {l: "faster by 50%" for l in i["langs"]} # noqa: E731 pipe.translate(repo.root, repo.items, FakeRunner(translate=bad), pipe.Budget(60), lambda m: None) - self.assertEqual(repo.read("newcomer_i18n.json"), {}) + self.assertEqual(repo.read("translation_library.json")["entries"], {}) def test_failure_keeps_everything_and_does_not_raise(self): - before = self.repo.read("newcomer_i18n.json") + def texts(): # `seen` is bookkeeping, the translations are what must not change + return {n: {h: {k: v for k, v in e.items() if k != "seen"} for h, e in vs.items()} + for n, vs in self.repo.read("translation_library.json")["entries"].items()} + before = texts() stat = self.run_translate(FakeRunner(error="boom")) self.assertGreaterEqual(stat["errors"], 1) - self.assertEqual(self.repo.read("newcomer_i18n.json"), before) + self.assertEqual(texts(), before) class PolishTests(unittest.TestCase): @@ -234,10 +241,10 @@ def test_categories_only_when_requested(self): self.assertEqual(kinds, {"category"}) def test_failure_does_not_raise_or_change_files(self): - before = (self.repo.read("projects.json"), self.repo.read("newcomer_i18n.json")) + before = (self.repo.read("projects.json"), self.repo.read("translation_library.json")) stat = self.run_polish(FakeRunner(error="down")) self.assertGreaterEqual(stat["errors"], 1) - self.assertEqual((self.repo.read("projects.json"), self.repo.read("newcomer_i18n.json")), before) + self.assertEqual((self.repo.read("projects.json"), self.repo.read("translation_library.json")), before) class RunTests(unittest.TestCase): @@ -254,7 +261,7 @@ def test_without_key_or_model_nothing_changes_and_nothing_is_substituted(self): self.assertTrue(res["translate"]["skipped"] and res["polish"]["skipped"]) self.assertEqual(asked, []) self.assertEqual(self.repo.read("projects.json"), before) - self.assertEqual(self.repo.read("newcomer_i18n.json"), {}) + self.assertEqual(self.repo.read("translation_library.json")["entries"], {}) def test_backends_and_models_default_to_cursor_translate_agy_polish(self): seen = [] @@ -278,7 +285,7 @@ def test_full_run_translates_then_polishes(self): res = pipe.run(self.repo.root, self.repo.new, env={}, log=lambda m: None, make_runner=lambda b, m: Ready(runner)) self.assertEqual(res["translate"]["translated"], 1) self.assertGreater(res["polish"]["todo"], 0) - self.assertEqual(set(self.repo.read("newcomer_i18n.json")["a/one"]) - {"src"}, set(LANG5[1:])) + self.assertEqual(set(self.repo.entry("a/one", "Does one thing.")) - {"src", "seen"}, set(LANG5[1:])) def test_run_safe_swallows_everything(self): def boom(model): @@ -433,6 +440,143 @@ def test_local_scripts_exist_and_never_embed_credentials(self): self.assertNotIn("POLISH_MODEL", wf) +class LibraryReuseTests(unittest.TestCase): + """Token saving: a library hit never reaches the model; only a changed source costs a call.""" + + def setUp(self): + self.repo = Repo({"a/one": "Does one thing.", "b/two": "Does two things."}) + self.addCleanup(self.repo.close) + self.logs = [] + + def translate(self, runner, **kw): + return pipe.translate(self.repo.root, self.repo.items, runner, pipe.Budget(60), self.logs.append, **kw) + + def test_zero_model_calls_when_everything_is_in_the_library(self): + first = FakeRunner(translate=fake_tr) + self.translate(first) + self.assertEqual(len(first.calls), 1) + for _ in range(3): # any number of later runs + r = FakeRunner(translate=lambda i: self.fail("a library hit must not reach the model")) + stat = self.translate(r) + self.assertEqual(r.calls, []) + self.assertEqual((stat["hits"], stat["total"], stat["calls"]), (2, 2, 0)) + + def test_run_with_everything_cached_does_not_even_build_a_translate_runner(self): + self.translate(FakeRunner(translate=fake_tr)) + built = [] + res = pipe.run(self.repo.root, self.repo.new, do_polish=False, env={}, log=self.logs.append, + make_runner=lambda b, m: built.append(b) or self.fail("no runner needed on a full hit")) + self.assertEqual(built, []) + self.assertEqual(res["translate"]["calls"], 0) + self.assertTrue(any("2/2 hits (100%)" in m and "0 model calls" in m for m in self.logs), self.logs) + + def test_only_the_changed_source_is_sent_and_the_rest_are_hits(self): + self.translate(FakeRunner(translate=fake_tr)) + self.repo.items[1]["description"] = "Does two things, faster." + r = FakeRunner(translate=fake_tr) + stat = self.translate(r) + sent = json.loads(r.calls[0].split("Input items: ", 1)[1].split("\nFor each item", 1)[0]) + self.assertEqual([i["id"] for i in sent], ["b/two"]) + self.assertEqual((stat["hits"], stat["new"], stat["calls"]), (1, 1, 1)) + + def test_same_text_in_another_repo_is_not_a_hit(self): + self.translate(FakeRunner(translate=fake_tr)) + self.repo.items.append({"name": "c/copy", "description": "Does one thing."}) + r = FakeRunner(translate=fake_tr) + self.translate(r) + sent = json.loads(r.calls[0].split("Input items: ", 1)[1].split("\nFor each item", 1)[0]) + self.assertEqual([i["id"] for i in sent], ["c/copy"]) + + def test_log_prints_hit_and_new_counts(self): + self.translate(FakeRunner(translate=fake_tr)) + self.logs.clear() + self.repo.items.append({"name": "c/new", "description": "Brand new."}) + self.translate(FakeRunner(translate=fake_tr)) + line = next(m for m in self.logs if m.startswith("translate: library")) + self.assertIn("2/3 hits (67%)", line) + self.assertIn("1 new", line) + self.assertIn("1 to send to the model", line) + + def test_dry_run_reports_without_writing(self): + before = self.repo.read("translation_library.json") + stat = self.translate(FakeRunner(translate=fake_tr), dry_run=True) + self.assertEqual((stat["todo"], stat["calls"]), (2, 0)) + self.assertEqual(self.repo.read("translation_library.json"), before) + + def test_only_unpolished_entries_are_polished(self): + self.translate(FakeRunner(translate=fake_tr)) + first = FakeRunner(polish=lambda t: t) + pipe.polish(self.repo.root, self.repo.items, first, pipe.Budget(60), ("newcomers",), self.logs.append) + self.assertGreater(len(first.calls), 0) + self.repo.items.append({"name": "c/new", "description": "Brand new."}) + self.translate(FakeRunner(translate=fake_tr)) + r = FakeRunner(polish=lambda t: t) + stat = pipe.polish(self.repo.root, self.repo.items, r, pipe.Budget(60), ("newcomers",), self.logs.append) + self.assertEqual(stat["todo"], 4) # c/new in four languages; the eight polished texts are skipped + self.assertEqual((stat["skipped"], stat["candidates"]), (8, 12)) + self.assertTrue(any("8/12 texts already polished" in m for m in self.logs)) + + def test_changed_source_means_a_new_unpolished_entry(self): + self.translate(FakeRunner(translate=fake_tr)) + pipe.polish(self.repo.root, self.repo.items, FakeRunner(polish=lambda t: t), pipe.Budget(60), ("newcomers",), lambda m: None) + self.repo.items[0]["description"] = "Does one thing, faster." + self.translate(FakeRunner(translate=fake_tr)) + stat = pipe.polish(self.repo.root, self.repo.items, FakeRunner(polish=lambda t: t), pipe.Budget(60), ("newcomers",), lambda m: None) + self.assertEqual(stat["todo"], 4) + + def test_translate_hits_refresh_seen_at_most_weekly(self): + self.translate(FakeRunner(translate=fake_tr), today="2026-10-01") + self.translate(FakeRunner(translate=fake_tr), today="2026-10-03") + self.assertEqual(self.repo.entry("a/one", "Does one thing.")["seen"], "2026-10-01") + self.translate(FakeRunner(translate=fake_tr), today="2026-10-20") + self.assertEqual(self.repo.entry("a/one", "Does one thing.")["seen"], "2026-10-20") + + +class LibraryLogWhenSkippedTests(unittest.TestCase): + def test_hit_and_new_counts_are_logged_even_without_a_model(self): + repo = Repo({"a/one": "Does one thing.", "b/two": "Does two."}, + cache={"a/one": {"src": "Does one thing.", **{l: "t" for l in LANG5[1:]}}}) + self.addCleanup(repo.close) + logs = [] + res = pipe.run(repo.root, repo.new, do_polish=False, env={}, log=logs.append, + make_runner=lambda b, m: Ready(FakeRunner(), "no key")) + self.assertTrue(res["translate"]["skipped"]) + self.assertTrue(any("1/2 hits (50%)" in m and "1 new" in m for m in logs), logs) + + +class GlossaryTests(unittest.TestCase): + GLOS = json.loads((ROOT / "data/glossary.json").read_text("utf-8")) + + def test_only_terms_present_in_the_texts_are_sent(self): + g = pipe.glossary_for(["An agent that reads your repo"], ["zh-Hans", "ja"], self.GLOS) + self.assertIn("agent = 智能体 (zh-Hans) / エージェント (ja)", g) + self.assertIn("repo = 仓库 (zh-Hans)", g) + self.assertNotIn("dataset", g) + self.assertNotIn("星标", g) + + def test_no_terms_means_a_short_prompt(self): + g = pipe.glossary_for(["Fast."], ["ko"], self.GLOS) + self.assertEqual(g, pipe.BASE_RULES) + + def test_prompt_contains_glossary_terms_and_stays_smaller_than_the_full_list(self): + repo = Repo({"a/one": "An agent skill."}) + self.addCleanup(repo.close) + shutil.copy(ROOT / "data/glossary.json", repo.root / "data/glossary.json") + r = FakeRunner(translate=fake_tr) + pipe.translate(repo.root, repo.items, r, pipe.Budget(60), lambda m: None) + self.assertIn("智能体", r.calls[0]) + self.assertIn("技能", r.calls[0]) + self.assertNotIn("数据集", r.calls[0]) + + def test_glossary_covers_every_language_and_uses_the_house_wording(self): + for t in self.GLOS["terms"]: + self.assertEqual({"en", "zh-Hans", "zh-Hant", "ja", "ko"}, set(t), t) + star = next(t for t in self.GLOS["terms"] if t["en"] == "star") + self.assertEqual((star["zh-Hans"], star["zh-Hant"]), ("星标", "星號")) + agent = next(t for t in self.GLOS["terms"] if t["en"] == "agent") + self.assertEqual((agent["zh-Hans"], agent["zh-Hant"], agent["ja"], agent["ko"]), ("智能体", "代理", "エージェント", "에이전트")) + + class RepoDataTests(unittest.TestCase): def test_every_blurb_and_category_has_all_five_languages(self): for fname in ("projects.json", "categories.json"): @@ -446,11 +590,13 @@ def test_guard_accepts_every_real_text_unchanged(self): for p in json.loads((ROOT / "data/projects.json").read_text("utf-8")): for lang, text in p["desc"].items(): self.assertIsNone(pipe.check_polished(text, text, lang), (p["name"], lang)) - for name, entry in json.loads((ROOT / "data/newcomer_i18n.json").read_text("utf-8")).items(): - for lang in LANG5: - if lang in entry: - self.assertIsNone(pipe.check_polished(entry[lang], entry[lang], lang), (name, lang)) - self.assertIsNone(pipe.check_translation(entry["src"], entry[lang]), (name, lang)) + lib = json.loads((ROOT / "data/translation_library.json").read_text("utf-8")) + for name, versions in lib["entries"].items(): + for entry in versions.values(): + for lang in LANG5: + if lang in entry: + self.assertIsNone(pipe.check_polished(entry[lang], entry[lang], lang), (name, lang)) + self.assertIsNone(pipe.check_translation(entry["src"], entry[lang]), (name, lang)) def test_secret_is_referenced_not_stored(self): wf = (ROOT / ".github/workflows/daily-update.yml").read_text("utf-8") diff --git a/tests/test_i18n_remaining.py b/tests/test_i18n_remaining.py index fa36db8..02e7569 100644 --- a/tests/test_i18n_remaining.py +++ b/tests/test_i18n_remaining.py @@ -13,23 +13,37 @@ import render_readme # noqa: E402 from i18n import LANGS, S # noqa: E402 -cache = newcomer_i18n.load(ROOT / "data/newcomer_i18n.json") +cache = newcomer_i18n.load(ROOT / "data/translation_library.json") stats = json.loads((ROOT / "data/stats.json").read_text("utf-8")) ITEMS = [{"name": "o/r", "description": "Original text", "url": "https://github.com/o/r", "created_at": "2026-10-24T00:00:00Z", "age_days": 2.5, "stars": 10, "per_day": 4.0}] -class CacheSchemaTests(unittest.TestCase): - def test_entries_are_well_formed(self): - for name, entry in cache.items(): +def lib_of(repo, src, **langs): + lib = newcomer_i18n.empty() + for lang, text in langs.items(): + newcomer_i18n.put(lib, repo, src, lang, text) + return lib + + +class LibrarySchemaTests(unittest.TestCase): + def test_entries_are_keyed_by_repo_source_hash_and_language(self): + self.assertEqual(cache["version"], newcomer_i18n.VERSION) + for name, versions in cache["entries"].items(): self.assertIn("/", name) - self.assertTrue(entry.get("src", "").strip(), name) - for lang, text in entry.items(): - if lang != "src": - self.assertIn(lang, LANGS, f"{name}: unknown language {lang}") - self.assertTrue(text.strip(), f"{name} {lang}") - for lang in newcomer_i18n.required_langs(entry["src"]): - self.assertIn(lang, entry, f"{name} lacks {lang}") + for h, entry in versions.items(): + self.assertEqual(h, newcomer_i18n.src_hash(entry["src"]), f"{name}: key is not the source hash") + for lang, text in entry.items(): + if lang not in ("src", "seen"): + self.assertIn(lang, LANGS, f"{name}: unknown language {lang}") + self.assertTrue(text.strip(), f"{name} {lang}") + for lang in newcomer_i18n.required_langs(entry["src"]): + self.assertIn(lang, entry, f"{name} lacks {lang}") + + def test_legacy_shape_is_converted_not_lost(self): + old = {"o/r": {"src": "Original text", "ja": "訳"}} + lib = newcomer_i18n.from_legacy(old) + self.assertEqual(newcomer_i18n.get(lib, "o/r", "Original text", "ja"), "訳") def test_no_secrets_or_online_translation_in_the_tool(self): text = (ROOT / "tools/newcomer_i18n.py").read_text("utf-8") @@ -39,34 +53,61 @@ def test_no_secrets_or_online_translation_in_the_tool(self): class PickTests(unittest.TestCase): def test_translation_used_when_source_matches(self): - c = {"o/r": {"src": "Original text", "ja": "原文の訳"}} + c = lib_of("o/r", "Original text", ja="原文の訳") self.assertEqual(newcomer_i18n.pick(c, "o/r", "Original text", "ja"), "原文の訳") - def test_falls_back_to_original_when_missing_or_stale(self): - c = {"o/r": {"src": "Old text", "ja": "古い訳"}} - self.assertEqual(newcomer_i18n.pick(c, "o/r", "Original text", "ja"), "Original text") # stale + def test_falls_back_to_original_when_missing_or_changed(self): + c = lib_of("o/r", "Old text", ja="古い訳") + self.assertEqual(newcomer_i18n.pick(c, "o/r", "Original text", "ja"), "Original text") # source changed self.assertEqual(newcomer_i18n.pick(c, "o/r", "Old text", "ko"), "Old text") # no ko self.assertEqual(newcomer_i18n.pick({}, "o/r", "Original text", "ja"), "Original text") # no entry + self.assertEqual(newcomer_i18n.pick(c, "x/y", "Old text", "ja"), "Old text") # same text, other repo: no hit + + def test_key_is_exactly_repo_hash_language(self): + c = lib_of("o/r", "Text", ja="訳") + self.assertEqual(newcomer_i18n.get(c, "o/r", "Text", "ja"), "訳") + self.assertIsNone(newcomer_i18n.get(c, "o/r", "Text ", "ja")) # one byte different = other hash + self.assertIsNone(newcomer_i18n.get(c, "o/r2", "Text", "ja")) + self.assertIsNone(newcomer_i18n.get(c, "o/r", "Text", "ko")) + + def test_a_description_that_changes_back_is_a_hit_again(self): + c = lib_of("o/r", "v1", ja="訳1") + newcomer_i18n.put(c, "o/r", "v2", "ja", "訳2") + self.assertEqual(newcomer_i18n.pick(c, "o/r", "v1", "ja"), "訳1") + self.assertEqual(newcomer_i18n.pick(c, "o/r", "v2", "ja"), "訳2") def test_table_uses_translation_per_language_and_original_without_one(self): - c = {"o/r": {"src": "Original text", "zh-Hans": "原文的译文"}} + c = lib_of("o/r", "Original text", **{"zh-Hans": "原文的译文"}) self.assertIn("
原文的译文", render_readme.new_table(ITEMS, "zh-Hans", c)) self.assertIn("
Original text", render_readme.new_table(ITEMS, "ko", c)) self.assertIn("
Original text", render_readme.new_table(ITEMS, "zh-Hans", {})) class ProblemsTests(unittest.TestCase): - def test_reports_missing_stale_and_partial(self): + def test_reports_missing_changed_and_partial(self): items = [{"name": "a/new", "description": "x"}, {"name": "b/old", "description": "changed"}, {"name": "c/part", "description": "y"}, {"name": "d/none", "description": ""}] - c = {"b/old": {"src": "was", **{l: "t" for l in newcomer_i18n.REQUIRED}}, - "c/part": {"src": "y", "zh-Hans": "t"}} + c = newcomer_i18n.empty() + for l in newcomer_i18n.REQUIRED: + newcomer_i18n.put(c, "b/old", "was", l, "t") + newcomer_i18n.put(c, "c/part", "y", "zh-Hans", "t") out = newcomer_i18n.problems(c, items) self.assertEqual(len(out), 3) self.assertIn("a/new: missing", out[0]) - self.assertIn("b/old: stale", out[1]) + self.assertIn("b/old: changed since", out[1]) self.assertIn("c/part: missing zh-Hant, ja, ko", out[2]) + def test_hit_stats_and_pruning(self): + c = newcomer_i18n.empty() + for l in newcomer_i18n.REQUIRED: + newcomer_i18n.put(c, "a/hit", "x", l, "t", today="2026-01-01") + items = [{"name": "a/hit", "description": "x"}, {"name": "b/new", "description": "y"}] + self.assertEqual(newcomer_i18n.hit_stats(c, items), {"total": 2, "hits": 1, "partial": 0, "new": 1}) + self.assertFalse(newcomer_i18n.touch(c, "a/hit", "x", "2026-01-03")) # refreshed at most weekly + self.assertTrue(newcomer_i18n.touch(c, "a/hit", "x", "2026-01-09")) + self.assertEqual(newcomer_i18n.prune(c, "2026-06-01", 90), 1) + self.assertEqual(c["entries"], {}) + def test_cjk_source_also_requires_english(self): self.assertIn("en", newcomer_i18n.required_langs("从选题到剪映草稿")) self.assertNotIn("en", newcomer_i18n.required_langs("plain English")) diff --git a/tests/test_repo.py b/tests/test_repo.py index dd00dda..7a3b1de 100644 --- a/tests/test_repo.py +++ b/tests/test_repo.py @@ -8,6 +8,7 @@ ROOT = Path(__file__).resolve().parents[1] sys.path.insert(0, str(ROOT / "tools")) import risers_core as core # noqa: E402 +import archive # noqa: E402 import render_readme # noqa: E402 from i18n import LANGS # noqa: E402 @@ -85,9 +86,9 @@ def test_sections_order_total_last_and_curves_everywhere(self): if core.star_history_svg(proj["name"]) not in text: cat_ok = [p for p in stats["projects"] if p.get("ok") and p.get("category") == proj["category"]] - self.assertGreater(len(cat_ok), 20, f"{fname} {proj['name']} missing curve") + self.assertGreater(len(cat_ok), render_readme.README_TOP, f"{fname} {proj['name']} missing curve") - def test_at_least_20_projects_and_ai_rankings_show_top_20(self): + def test_at_least_20_projects_and_ai_rankings_show_top_10_in_readme_and_20_in_latest(self): self.assertGreaterEqual(len(projects), 20) self.assertGreaterEqual(len(cats), 7) ids = {c["id"] for c in cats} @@ -103,11 +104,16 @@ def test_at_least_20_projects_and_ai_rankings_show_top_20(self): for key in ("week", "month", "year", "total"): section = block.split(f"### {s[key]}\n", 1)[1].split("\n### ", 1)[0] rows = re.findall(r"^\| \d+ \|", section, flags=re.M) - self.assertEqual(len(rows), expect, f"{fname} ai/{key}") + self.assertEqual(len(rows), render_readme.README_TOP, f"{fname} ai/{key}") + full = (ROOT / "latest" / archive.rankings_name(code)).read_text("utf-8") + full_block = full.split(f"## {primary['name'][code]}\n", 1)[1].split("\n## ", 1)[0] + for key in ("week", "month", "year", "total"): + section = full_block.split(f"### {s[key]}\n", 1)[1].split("\n### ", 1)[0] + self.assertEqual(len(re.findall(r"^\| \d+ \|", section, flags=re.M)), expect, f"latest {code} ai/{key}") def test_english_is_default_readme(self): self.assertEqual(LANGS["en"][0], "README.md") - self.assertIn("Ranked by Star Growth", (ROOT / "README.md").read_text("utf-8")) + self.assertIn("star growth", (ROOT / "README.md").read_text("utf-8").lower()) def test_every_language_translates_every_ui_string(self): keys = set(render_readme.S["en"]) @@ -142,9 +148,11 @@ def test_every_readme_has_schedule_and_leaders_from_real_data(self): for code, (fname, _l) in LANGS.items(): s = render_readme.S[code] text = (ROOT / fname).read_text("utf-8") - self.assertIn(s["schedule"], text, fname) - self.assertIn("UTC+8", s["schedule"]) + self.assertIn("UTC+8", s["schedule"]) # the full schedule lives on the how-it-works page self.assertIn("America/Los_Angeles", s["schedule"]) + how = (ROOT / "docs" / render_readme.how_name(code)).read_text("utf-8") + self.assertIn(s["schedule"], how, code) + self.assertIn(f"docs/{render_readme.how_name(code)}", text, fname) # README links to it sec = text.split(f"## {s['tops_title']}\n", 1)[1].split("\n## ", 1)[0] rows = [l for l in sec.splitlines() if l.startswith("| **")] self.assertEqual(len(rows), len(cats), fname) @@ -161,12 +169,104 @@ def test_every_readme_has_schedule_and_leaders_from_real_data(self): def test_titles_mention_the_selling_points(self): s = render_readme.S - self.assertIn("Star Growth", s["en"]["title"]) + self.assertIn("Stars Gained per Day", s["en"]["title"]) + for code in LANG_CODES: + self.assertTrue(s[code]["title"].startswith("GitHub "), code) + self.assertTrue(s[code]["title"].endswith("GitHub Risers") or code == "en", code) for code in LANG_CODES: blob = s[code]["title"] + s[code]["tagline"] self.assertIn("AI", blob, code) +class SlimReadmeTests(unittest.TestCase): + """The README is a first screen plus the boards; explanations live in docs/HOW_IT_WORKS*.md.""" + + def readme(self, code): + return (ROOT / LANGS[code][0]).read_text("utf-8") + + def head(self, code): + primary = next(c for c in cats if c.get("primary")) + return self.readme(code).split(f"## {primary['name'][code]}\n", 1)[0] + + def test_first_screen_order_and_nothing_that_moved_out(self): + for code in LANG_CODES: + s, text, head = render_readme.S[code], self.readme(code), self.head(code) + lines = text.splitlines() + self.assertEqual(lines[0], render_readme.switcher(code), code) # the language switch stays line 1 + self.assertEqual(lines[2], f"# {s['title']}", code) + self.assertEqual(len(s["tagline"].splitlines()), 1) + order = [f"# {s['title']}", render_readme.SOCIAL_IMAGE, "img.shields.io", s["tagline"], + render_readme.SITE, f"## {s['tops_title']}", f"## {s['faq_title']}"] + positions = [head.index(x) for x in order] + self.assertEqual(positions, sorted(positions), code) + self.assertLessEqual(len(head.splitlines()), 45, code) + for gone in (s["intro"], s["schedule"], s["tops_intro"], s["new_intro"], s["method"][0], s["contrib"], "
"): + self.assertNotIn(gone, text, f"{code}: {gone[:40]}") + + def test_title_names_and_english_adds_the_ranking_rule(self): + S_ = render_readme.S + self.assertEqual(S_["zh-Hans"]["title"], "GitHub 涨星榜 / GitHub Risers") + self.assertEqual(S_["zh-Hant"]["title"], "GitHub 漲星榜 / GitHub Risers") + self.assertIn("ranked by stars gained per day", S_["en"]["title"].lower()) + + def test_at_most_three_badges_mit_ci_updated(self): + for code in LANG_CODES: + head = self.head(code) + badges = re.findall(r"!\[[^\]]*\]\(([^)]+)\)", head) + self.assertEqual(len(badges), 3, code) + self.assertIn("license-MIT", badges[0]) + self.assertIn("actions/workflows/ci.yml/badge.svg", badges[1]) + self.assertRegex(badges[2], r"badge/updated-\d{4}--\d\d--\d\d-") + + def test_geo_links_are_present_in_every_language(self): + for code in LANG_CODES: + text, s = self.readme(code), render_readme.S[code] + for needle in ("https://jammyfu.github.io/github-risers/", "docs/FAQ.md#what-is-github-risers", + "docs/FAQ.md#is-it-the-same-as-github-trending", "docs/FAQ.md#how-often-is-it-updated", + "docs/FACTS.md", "CITATION.cff", ".github/social-preview.png", s["website"], s["star_ask"]): + self.assertIn(needle, text, f"{code}: {needle}") + for key in ("q1", "q2", "q3"): + self.assertIn(f"### {s[key]}", text, code) + + def test_faq_links_point_at_real_faq_headings(self): + faq = (ROOT / "docs/FAQ.md").read_text("utf-8") + headings = {render_readme.anchor(m) for m in re.findall(r"^## (.+)$", faq, flags=re.M)} + for code in LANG_CODES: + for frag in re.findall(r"docs/FAQ\.md#([\w-]+)", self.readme(code)): + self.assertIn(frag, headings, f"{code}: docs/FAQ.md#{frag}") + + def test_everything_moved_is_on_the_docs_page(self): + for code in LANG_CODES: + s = render_readme.S[code] + how = (ROOT / "docs" / render_readme.how_name(code)).read_text("utf-8") + for needle in (s["intro"], s["schedule"], s["tops_intro"], s["method"][0], s["contrib"][:30]): + self.assertIn(render_readme._docs_links(needle), how, f"{code}: {needle[:40]}") + + def test_leader_rows_link_to_existing_category_headings(self): + for code in LANG_CODES: + text = self.readme(code) + headings = {render_readme.anchor(m) for m in re.findall(r"^## (.+)$", text, flags=re.M)} + links = re.findall(r"\]\(#([^)]+)\)", text) + self.assertEqual(len(links), len(cats), code) + for link in links: + self.assertIn(link, headings, f"{code}: #{link}") + + def test_links_resolve(self): + pages = [(ROOT / LANGS[c][0], ROOT) for c in LANG_CODES] + pages += [(ROOT / "docs" / render_readme.how_name(c), ROOT / "docs") for c in LANG_CODES] + for path, base in pages: + text = path.read_text("utf-8") + targets = re.findall(r"\]\(([^)#]+)\)", text) + re.findall(r'src="([^"]+)"', text) + for target in targets: + if target.startswith("http"): + continue + self.assertTrue((base / target).exists(), f"{path.name} -> {target}") + + def test_readme_is_much_smaller_than_a_top_20_page(self): + for code in LANG_CODES: + self.assertLess(len(self.readme(code).encode("utf-8")), 140_000, code) + + class ZeroTelemetryTests(unittest.TestCase): def test_no_trackers_in_repo_text(self): files = [p for p in ROOT.rglob("*") diff --git a/tests/test_spam.py b/tests/test_spam.py index 5377345..7462c72 100644 --- a/tests/test_spam.py +++ b/tests/test_spam.py @@ -144,7 +144,8 @@ def test_suspicious_is_never_a_leader(self): def test_committed_data_spam_is_last_and_not_in_leader_table(self): st = json.loads((ROOT / "latest/stats.json").read_text("utf-8")) readme = (ROOT / "README.md").read_text("utf-8") - tops = readme[readme.index("## Category leaders"):readme.index("
")] + start = readme.index("## Category leaders") + tops = readme[start:readme.index("\n## ", start + 3)] for cid, block in st["newcomers"]["categories"].items(): items = block.get("items", []) flags = [bool(spam.suspicious_reason({"full_name": i["name"], "description": i["description"], diff --git a/tools/i18n.py b/tools/i18n.py index 0640a4a..6b8473d 100644 --- a/tools/i18n.py +++ b/tools/i18n.py @@ -13,16 +13,33 @@ S: dict[str, dict[str, str]] = { "en": { "new": "Hottest new repos (created in the last 7 days)", - "new_intro": "Repositories created within the last 7 days in this category, found with the GitHub search API (by topic: a repo must carry one of the category's topics) and ranked by stars per day since creation. A repo that appears in this category's other rankings (or is a tracked project here), or that already claimed a slot in an earlier category (AI first), is left out. Descriptions are the repo's own GitHub description; hand-written translations live in [data/newcomer_i18n.json](data/newcomer_i18n.json). Rules: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md).", + "new_intro": "Repositories created within the last 7 days in this category, found with the GitHub search API (by topic: a repo must carry one of the category's topics) and ranked by stars per day since creation. A repo that appears in this category's other rankings (or is a tracked project here), or that already claimed a slot in an earlier category (AI first), is left out. Descriptions are the repo's own GitHub description; translations live in [data/translation_library.json](data/translation_library.json). Rules: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md).", "h_created": "Created (UTC)", "new_none": "No new repo met the criteria in this run.", "new_failed": "The new-repo search failed in the latest run, so this ranking is missing (nothing is estimated): {error}", "new_partial": "Note: {failed} of {total} search queries failed in this run, so the candidate pool may be incomplete.", "susp_note": "⚠ = suspected cracked / pirated / activator repo (matched by name or description rules in [docs/CATEGORIES.md](docs/CATEGORIES.md)). These are still listed, but always ranked after every normal repo and never shown as a category leader.", "history": "These tables are the latest ranking. Every update is also saved per time slot: [ranking history]({index}) · [{latest}]({latest}).", - "shown": "Each category ranking shows up to the top {n} of {total} tracked projects across all categories.", - "title": "GitHub Risers: Trending Repos Ranked by Star Growth", - "tagline": "GitHub trending ranked by star growth, not total stars. AI first, plus developer tools, security, web, infrastructure, design and data. Refreshed twice a day, with a 7-day new-repo board in every category.", + "shown": "Each board in the README shows the top {m}. The full top {n} of each board (from {total} tracked projects) is in the latest/ files.", + "title": "GitHub Risers: Ranked by Stars Gained per Day", + "tagline": "Trending GitHub repos ranked by star growth (stars gained per day), not total stars: AI first, then developer tools, security, web, infrastructure, design and data.", + "website": "Website", + "links": "[{website}]({site}) · [How it works]({how}) · [Facts](docs/FACTS.md) · [History]({index}) · [Latest]({latest})", + "top_note": "Each board shows the top 10 here. The full top-20 lists are in [{latest}]({latest}).", + "faq_title": "Quick answers", + "q1": "What is GitHub Risers?", + "a1": "A leaderboard of GitHub repos ranked by stars gained per day, not total stars. AI is the main board; six more categories follow. Built by script from the GitHub API.", + "q2": "How is it different from GitHub Trending?", + "a2": "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.", + "q3": "How often is it updated?", + "a3": "Twice a day, at 00:00 Beijing time and 00:00 Los Angeles time. Every run is archived.", + "more": "Read more", + "star_ask": "If this saved you time, give the repo a star so others can find it.", + "cite": "How to cite: see [CITATION.cff](CITATION.cff).", + "stamp": "Updated {ts} UTC, twice a day (00:00 Beijing, 00:00 Los Angeles).", + "footer": "How the numbers are produced and how to contribute: [{how}]({how}). New-repo rules: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). Categories: [docs/CATEGORIES.md](docs/CATEGORIES.md).", + "doc_title": "How GitHub Risers works", + "doc_back": "← Back to the rankings", "intro": "Total-star lists keep the old giants on top and bury what is taking off right now. GitHub Risers ranks repos by stars gained per day (last 7, 30 and 365 days) and groups them into categories, with AI as the main board. Every category has a hottest-new-repos board for repos created in the last 7 days, then week, month and year star-growth rankings, and total stars last. All numbers come straight from the GitHub API. Classification rules: [docs/CATEGORIES.md](docs/CATEGORIES.md).", "cat_title": "Categories", "schedule": "Updated twice a day: 00:00 Beijing time (UTC+8) and 00:00 Los Angeles time (America/Los_Angeles, follows daylight saving). Each update is archived under its own time slot.", @@ -81,16 +98,33 @@ }, "zh-Hans": { "new": "最热新仓库(近 7 天内创建)", - "new_intro": "本分类下最近 7 天内创建的仓库,通过 GitHub 搜索 API(按 topic 匹配:仓库自己必须带有该分类的 topic)找出,按创建以来的日均星标排序。已出现在本分类其他榜单(或本分类已收录项目)中的仓库,以及已被更靠前分类(AI 优先)占位的仓库,不会重复列入。简介取自仓库自己的 GitHub 简介;人工译文见 [data/newcomer_i18n.json](data/newcomer_i18n.json)。规则见 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。", + "new_intro": "本分类下最近 7 天内创建的仓库,通过 GitHub 搜索 API(按 topic 匹配:仓库自己必须带有该分类的 topic)找出,按创建以来的日均星标排序。已出现在本分类其他榜单(或本分类已收录项目)中的仓库,以及已被更靠前分类(AI 优先)占位的仓库,不会重复列入。简介取自仓库自己的 GitHub 简介;译文库见 [data/translation_library.json](data/translation_library.json)。规则见 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。", "h_created": "创建时间(UTC)", "new_none": "本次运行中没有符合条件的新仓库。", "new_failed": "最近一次运行中新仓库搜索失败,因此缺少这个榜单(未做任何估算):{error}", "new_partial": "注意:本次运行中 {total} 条搜索查询有 {failed} 条失败,候选池可能不完整。", "susp_note": "⚠ = 疑似破解 / 盗版 / 激活工具类仓库(按名称或描述规则识别,规则见 [docs/CATEGORIES.md](docs/CATEGORIES.md))。这类仓库照常收录,但一律排在所有正常项目之后,也不会出现在各类榜首里。", "history": "下方表格为最新榜单。每次更新还会按时段另存一份:[榜单历史]({index}) · [{latest}]({latest})。", - "shown": "每个分类榜单最多展示全部 {total} 个已收录项目中的前 {n} 名。", - "title": "GitHub 飙升榜(GitHub Risers):按涨星速度排的分类涨星榜", - "tagline": "按涨星速度、而不是总星标数排名的 GitHub Trending 涨星榜(Star Growth)。AI 是主榜,另有开发者工具、安全、Web/前端、基础设施、设计/创意、数据等分类;每天更新两次,每个分类都有 7 天新晋榜。", + "shown": "README 里每张榜只列前 {m} 名;每张榜完整的前 {n} 名(来自 {total} 个已收录项目)在 latest/ 文件里。", + "title": "GitHub 涨星榜 / GitHub Risers", + "tagline": "按每天新增星标(而不是总星标)给 GitHub 仓库排名:AI 在前,其后是开发者工具、安全、Web / 前端、基础设施、设计 / 创意和数据;每天更新两次。", + "website": "网站", + "links": "[{website}]({site}) · [运作方式]({how}) · [事实速查](docs/FACTS.md) · [历史榜单]({index}) · [最新快照]({latest})", + "top_note": "这里每张榜只列前 10 名,完整的前 20 名见 [{latest}]({latest})。", + "faq_title": "常见问题", + "q1": "GitHub 涨星榜是什么?", + "a1": "按每天新增星标、而不是总星标给 GitHub 仓库排名的榜单。AI 是主榜,后面还有六个分类;数据由脚本从 GitHub API 生成。", + "q2": "和 GitHub Trending 有什么不同?", + "a2": "GitHub Trending 是 GitHub 官方页面;GitHub 涨星榜是独立的开源项目,规则公开,有五种语言,并保存每次更新的历史。它与 GitHub 官方没有关联。", + "q3": "多久更新一次?", + "a3": "每天两次,北京时间 0 点和洛杉矶时间 0 点;每次运行都会存档。", + "more": "了解更多", + "star_ask": "如果它帮你省了时间,请给仓库点个星标,让更多人找得到。", + "cite": "如何引用:见 [CITATION.cff](CITATION.cff)。", + "stamp": "更新于 {ts}(UTC),每天两次(北京时间 0 点、洛杉矶时间 0 点)。", + "footer": "数据怎么算和如何参与:[{how}]({how})。新仓库规则:[docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。分类说明:[docs/CATEGORIES.md](docs/CATEGORIES.md)。", + "doc_title": "GitHub 飙升榜是怎么做的", + "doc_back": "← 返回榜单", "intro": "多数榜单按总星标数排序,老项目长期占据榜首,正在爆发的新项目反而被埋没。GitHub 飙升榜按“每天新增多少星标”来排:统计近 7 天、30 天和 365 天的日均涨星,并按分类展示,AI 是默认置顶的主榜。每个分类先看“7 天新晋”榜(最近 7 天内创建的仓库),再看周、月、年涨星榜,总星标榜放在最后。数据全部来自 GitHub API。分类规则见 [docs/CATEGORIES.md](docs/CATEGORIES.md)。", "cat_title": "分类", "schedule": "每天更新两次:北京时间 0 点(UTC+8)和美西洛杉矶时间 0 点(America/Los_Angeles,随夏令时变化)。每次更新都会按各自的时段单独存档。", @@ -153,16 +187,33 @@ }, "zh-Hant": { "new": "最熱新儲存庫(近 7 天內建立)", - "new_intro": "本分類下最近 7 天內建立的儲存庫,透過 GitHub 搜尋 API(依 topic 比對:儲存庫自己必須帶有該分類的 topic)找出,並依建立以來的日均星號排序。已出現在本分類其他榜單(或本分類已收錄專案)中的儲存庫,以及已被更前面分類(AI 優先)佔位的儲存庫,不會重複列入。簡介取自儲存庫自己的 GitHub 簡介;人工譯文見 [data/newcomer_i18n.json](data/newcomer_i18n.json)。規則請見 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。", + "new_intro": "本分類下最近 7 天內建立的儲存庫,透過 GitHub 搜尋 API(依 topic 比對:儲存庫自己必須帶有該分類的 topic)找出,並依建立以來的日均星號排序。已出現在本分類其他榜單(或本分類已收錄專案)中的儲存庫,以及已被更前面分類(AI 優先)佔位的儲存庫,不會重複列入。簡介取自儲存庫自己的 GitHub 簡介;譯文庫見 [data/translation_library.json](data/translation_library.json)。規則請見 [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。", "h_created": "建立時間(UTC)", "new_none": "本次執行中沒有符合條件的新儲存庫。", "new_failed": "最近一次執行中新儲存庫搜尋失敗,因此缺少這個榜單(未做任何估算):{error}", "new_partial": "注意:本次執行中 {total} 筆搜尋查詢有 {failed} 筆失敗,候選名單可能不完整。", "susp_note": "⚠ = 疑似破解 / 盜版 / 啟用工具類儲存庫(依名稱或描述規則辨識,規則見 [docs/CATEGORIES.md](docs/CATEGORIES.md))。這類儲存庫照常收錄,但一律排在所有正常專案之後,也不會出現在各類榜首裡。", "history": "下方表格為最新榜單。每次更新還會依時段另存一份:[榜單歷史]({index}) · [{latest}]({latest})。", - "shown": "每個分類榜單最多顯示全部 {total} 個已收錄專案中的前 {n} 名。", - "title": "GitHub 飆升榜(GitHub Risers):依漲星速度排的分類漲星榜", - "tagline": "依漲星速度、而不是總星號數排名的 GitHub Trending 漲星榜(Star Growth)。AI 是主榜,另有開發者工具、資安、Web/前端、基礎建設、設計/創意、資料等分類;每天更新兩次,每個分類都有 7 天新晉榜。", + "shown": "README 裡每張榜只列前 {m} 名;每張榜完整的前 {n} 名(來自 {total} 個已收錄專案)在 latest/ 檔案裡。", + "title": "GitHub 漲星榜 / GitHub Risers", + "tagline": "依每天新增星號(而不是總星號)替 GitHub 儲存庫排名:AI 在前,接著是開發者工具、資安、Web / 前端、基礎建設、設計 / 創意與資料;每天更新兩次。", + "website": "網站", + "links": "[{website}]({site}) · [運作方式]({how}) · [事實速查](docs/FACTS.md) · [歷史榜單]({index}) · [最新快照]({latest})", + "top_note": "這裡每張榜只列前 10 名,完整的前 20 名見 [{latest}]({latest})。", + "faq_title": "常見問題", + "q1": "GitHub 漲星榜是什麼?", + "a1": "依每天新增星號、而不是總星號替 GitHub 儲存庫排名的榜單。AI 是主榜,後面還有六個分類;資料由腳本從 GitHub API 產生。", + "q2": "和 GitHub Trending 有什麼不同?", + "a2": "GitHub Trending 是 GitHub 官方頁面;GitHub 漲星榜是獨立的開源專案,規則公開,有五種語言,並保存每次更新的歷史。它與 GitHub 官方沒有關聯。", + "q3": "多久更新一次?", + "a3": "每天兩次,北京時間 0 點和洛杉磯時間 0 點;每次執行都會存檔。", + "more": "了解更多", + "star_ask": "如果它幫你省了時間,請給儲存庫按個星號,讓更多人找得到。", + "cite": "如何引用:見 [CITATION.cff](CITATION.cff)。", + "stamp": "更新於 {ts}(UTC),每天兩次(北京時間 0 點、洛杉磯時間 0 點)。", + "footer": "數據怎麼算與如何參與:[{how}]({how})。新儲存庫規則:[docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。分類說明:[docs/CATEGORIES.md](docs/CATEGORIES.md)。", + "doc_title": "GitHub 飆升榜是怎麼做的", + "doc_back": "← 回到榜單", "intro": "多數榜單依總星號數排序,老專案長期霸占榜首,正在爆發的新專案反而被埋沒。GitHub 飆升榜依「每天新增多少星號」來排:統計近 7 天、30 天和 365 天的日均漲星,並依分類呈現,AI 是預設置頂的主榜。每個分類先看「7 天新晉」榜(最近 7 天內建立的儲存庫),再看週、月、年漲星榜,總星號榜放在最後。資料全部來自 GitHub API。分類規則請見 [docs/CATEGORIES.md](docs/CATEGORIES.md)。", "cat_title": "分類", "schedule": "每天更新兩次:北京時間 0 點(UTC+8)和美西洛杉磯時間 0 點(America/Los_Angeles,隨夏令時間變動)。每次更新都會依各自的時段單獨存檔。", @@ -225,16 +276,33 @@ }, "ja": { "new": "7 日以内の新着で最も熱いリポジトリ(作成から 7 日以内)", - "new_intro": "このカテゴリで直近 7 日以内に作成されたリポジトリを GitHub 検索 API(topic で判定:リポジトリ自身がそのカテゴリの topic を持つこと)で探し、作成からの 1 日あたりスター数で並べます。このカテゴリの他のランキング(または収録プロジェクト)に載っているもの、および先のカテゴリ(AI 優先)ですでに載ったものは除外します。説明文は各リポジトリ自身の GitHub 説明;手作業の翻訳は [data/newcomer_i18n.json](data/newcomer_i18n.json)。ルール:[docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。", + "new_intro": "このカテゴリで直近 7 日以内に作成されたリポジトリを GitHub 検索 API(topic で判定:リポジトリ自身がそのカテゴリの topic を持つこと)で探し、作成からの 1 日あたりスター数で並べます。このカテゴリの他のランキング(または収録プロジェクト)に載っているもの、および先のカテゴリ(AI 優先)ですでに載ったものは除外します。説明文は各リポジトリ自身の GitHub 説明;翻訳ライブラリは [data/translation_library.json](data/translation_library.json)。ルール:[docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。", "h_created": "作成日(UTC)", "new_none": "今回の実行で条件を満たす新着リポジトリはありませんでした。", "new_failed": "最新の実行で新着リポジトリの検索に失敗したため、このランキングは欠損しています(推定はしていません):{error}", "new_partial": "注意:今回は検索 {total} 件のうち {failed} 件が失敗したため、候補が不完全な可能性があります。", "susp_note": "⚠ = クラック / 海賊版 / アクティベーションツールの疑いがあるリポジトリ(名前・説明のルールで判定。ルールは [docs/CATEGORIES.md](docs/CATEGORIES.md))。掲載はしますが、常に通常のリポジトリより後ろに並べ、カテゴリ 1 位には表示しません。", "history": "以下が最新のランキングです。更新のたびに時間帯ごとにも保存しています:[ランキング履歴]({index}) · [{latest}]({latest})。", - "shown": "各カテゴリのランキングは、全 {total} 収録プロジェクトのうち上位最大 {n} 件を表示します。", - "title": "GitHub Risers:スター増加速度で並べるカテゴリ別トレンドランキング", - "tagline": "総スター数ではなく、スターが増える速さで並べた GitHub トレンド(Star Growth)。AI をメインに、開発者ツール・セキュリティ・Web/フロントエンド・インフラ・デザイン・データも。1 日 2 回更新、各カテゴリに 7 日以内の新着ランキング付き。", + "shown": "README では各ランキングの上位 {m} 件を表示します。各ランキングの上位 {n} 件の全体(収録 {total} プロジェクトから)は latest/ のファイルにあります。", + "title": "GitHub スター急上昇ランキング / GitHub Risers", + "tagline": "総スター数ではなく、1 日あたりに増えたスター数で GitHub リポジトリを並べます。AI が先頭で、開発者ツール、セキュリティ、Web / フロントエンド、インフラ、デザイン / クリエイティブ、データが続きます。1 日 2 回更新。", + "website": "ウェブサイト", + "links": "[{website}]({site}) · [仕組み]({how}) · [ファクト](docs/FACTS.md) · [履歴]({index}) · [最新]({latest})", + "top_note": "ここでは各ランキングの上位 10 件だけを載せています。上位 20 件の全体は [{latest}]({latest}) にあります。", + "faq_title": "よくある質問", + "q1": "GitHub Risers とは?", + "a1": "総スター数ではなく、1 日あたりに増えたスター数で GitHub リポジトリを並べたランキングです。AI がメインで、ほかに 6 つのカテゴリがあります。データは GitHub API からスクリプトで作っています。", + "q2": "GitHub Trending とどう違う?", + "a2": "GitHub Trending は GitHub 公式のページです。GitHub Risers は独立したオープンソースのプロジェクトで、ルールを公開し、5 言語に対応し、更新のたびに履歴を残します。GitHub とは無関係です。", + "q3": "更新は何回?", + "a3": "1 日 2 回、北京時間 0 時とロサンゼルス時間 0 時です。実行のたびに保存します。", + "more": "詳しく見る", + "star_ask": "役に立ったら、ほかの人にも見つけてもらえるようリポジトリにスターを付けてください。", + "cite": "引用の仕方:[CITATION.cff](CITATION.cff) を見てください。", + "stamp": "{ts}(UTC)更新、1 日 2 回(北京時間 0 時、ロサンゼルス時間 0 時)。", + "footer": "数字の出し方と参加方法:[{how}]({how})。新規リポジトリのルール:[docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md)。カテゴリ:[docs/CATEGORIES.md](docs/CATEGORIES.md)。", + "doc_title": "GitHub Risers の仕組み", + "doc_back": "← ランキングに戻る", "intro": "総スター数順のリストでは古い大物が居座り、いま伸びているものが埋もれます。GitHub Risers は 1 日あたりの増加スター数(直近 7・30・365 日)で並べ、カテゴリごとに表示します。AI がメインのランキングです。各カテゴリは、直近 7 日以内に作られたリポジトリの「新着」ランキング、週・月・年の増加ランキング、最後に総スター数の順です。数値はすべて GitHub API から取得しています。分類ルール:[docs/CATEGORIES.md](docs/CATEGORIES.md)。", "cat_title": "カテゴリ", "schedule": "1 日 2 回更新:北京時間 0 時(UTC+8)とロサンゼルス時間 0 時(America/Los_Angeles、夏時間に追従)。更新ごとに時間帯別に保存されます。", @@ -293,16 +361,33 @@ }, "ko": { "new": "7일 이내 신규 인기 저장소 (최근 7일 내 생성)", - "new_intro": "이 카테고리에서 최근 7일 안에 만들어진 저장소를 GitHub 검색 API(topic 기준: 저장소 자신이 해당 카테고리의 topic을 가져야 함)로 찾아 생성 이후 하루 평균 스타 순으로 줄 세웁니다. 이 카테고리의 다른 랭킹(또는 수록 프로젝트)에 이미 있거나, 앞선 카테고리(AI 우선)에 이미 올라간 저장소는 빼 둡니다. 설명은 저장소 자신의 GitHub 설명; 손번역은 [data/newcomer_i18n.json](data/newcomer_i18n.json). 규칙: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md).", + "new_intro": "이 카테고리에서 최근 7일 안에 만들어진 저장소를 GitHub 검색 API(topic 기준: 저장소 자신이 해당 카테고리의 topic을 가져야 함)로 찾아 생성 이후 하루 평균 스타 순으로 줄 세웁니다. 이 카테고리의 다른 랭킹(또는 수록 프로젝트)에 이미 있거나, 앞선 카테고리(AI 우선)에 이미 올라간 저장소는 빼 둡니다. 설명은 저장소 자신의 GitHub 설명; 번역 라이브러리는 [data/translation_library.json](data/translation_library.json). 규칙: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md).", "h_created": "생성일 (UTC)", "new_none": "이번 실행에서 조건을 충족한 신규 저장소가 없습니다.", "new_failed": "최근 실행에서 신규 저장소 검색이 실패해 이 랭킹이 누락되었습니다(추정하지 않음): {error}", "new_partial": "참고: 이번 실행에서 검색 {total}건 중 {failed}건이 실패해 후보 목록이 불완전할 수 있습니다.", "susp_note": "⚠ = 크랙 / 불법 복제 / 정품 인증 우회 도구로 의심되는 저장소(이름·설명 규칙으로 판별, 규칙은 [docs/CATEGORIES.md](docs/CATEGORIES.md)). 목록에는 포함하지만 항상 정상 저장소 뒤에 두며 카테고리 1위로는 표시하지 않습니다.", "history": "아래가 최신 순위입니다. 업데이트할 때마다 시간대별로도 저장합니다: [순위 기록]({index}) · [{latest}]({latest}).", - "shown": "각 카테고리 랭킹은 전체 {total}개 수록 프로젝트 중 상위 최대 {n}개만 보여 줍니다.", - "title": "GitHub Risers: 스타 증가 속도로 줄 세우는 카테고리별 트렌딩 랭킹", - "tagline": "총 스타 수가 아니라 스타가 늘어나는 속도로 매긴 GitHub 트렌딩(Star Growth). AI가 메인이고 개발자 도구·보안·웹/프론트엔드·인프라·디자인·데이터도 다룹니다. 하루 두 번 갱신하며 카테고리마다 7일 신규 랭킹이 있습니다.", + "shown": "README에는 랭킹마다 상위 {m}개를 싣습니다. 각 랭킹의 상위 {n}개 전체({total}개 수록 프로젝트 기준)는 latest/ 파일에 있습니다.", + "title": "GitHub 스타 급상승 랭킹 / GitHub Risers", + "tagline": "총 스타 수가 아니라 하루에 늘어난 스타 수로 GitHub 저장소를 줄 세웁니다. AI가 맨 앞이고 개발자 도구, 보안, Web / 프론트엔드, 인프라, 디자인 / 크리에이티브, 데이터가 뒤따릅니다. 하루 두 번 갱신합니다.", + "website": "웹사이트", + "links": "[{website}]({site}) · [작동 방식]({how}) · [팩트](docs/FACTS.md) · [지난 랭킹]({index}) · [최신]({latest})", + "top_note": "여기에는 랭킹마다 상위 10개만 싣습니다. 상위 20개 전체는 [{latest}]({latest})에 있습니다.", + "faq_title": "자주 묻는 질문", + "q1": "GitHub Risers가 뭔가요?", + "a1": "총 스타 수가 아니라 하루에 늘어난 스타 수로 GitHub 저장소를 줄 세운 랭킹입니다. AI가 메인이고 카테고리가 여섯 개 더 있습니다. 데이터는 GitHub API에서 스크립트로 만듭니다.", + "q2": "GitHub Trending과 뭐가 다른가요?", + "a2": "GitHub Trending은 GitHub 공식 페이지입니다. GitHub Risers는 독립적인 오픈 소스 프로젝트로, 규칙을 공개하고 5개 언어를 지원하며 갱신 때마다 기록을 남깁니다. GitHub와는 관련이 없습니다.", + "q3": "얼마나 자주 갱신하나요?", + "a3": "하루 두 번, 베이징 시간 0시와 로스앤젤레스 시간 0시입니다. 실행할 때마다 보관합니다.", + "more": "더 보기", + "star_ask": "도움이 됐다면 다른 사람도 찾을 수 있도록 저장소에 스타를 눌러 주세요.", + "cite": "인용 방법: [CITATION.cff](CITATION.cff)를 보세요.", + "stamp": "{ts}(UTC) 갱신, 하루 두 번(베이징 0시, 로스앤젤레스 0시).", + "footer": "숫자를 만드는 방법과 참여 방법: [{how}]({how}). 신규 저장소 규칙: [docs/NEW_ARRIVALS.md](docs/NEW_ARRIVALS.md). 카테고리: [docs/CATEGORIES.md](docs/CATEGORIES.md).", + "doc_title": "GitHub Risers 작동 방식", + "doc_back": "← 랭킹으로 돌아가기", "intro": "총 스타 순 목록에서는 오래된 대형 프로젝트가 계속 상위를 차지하고, 지금 뜨는 프로젝트는 묻힙니다. GitHub Risers는 하루 평균 늘어난 스타 수(최근 7·30·365일)로 순위를 매기고 카테고리별로 보여 주며, AI가 메인 랭킹입니다. 각 카테고리는 최근 7일 안에 만들어진 저장소의 신규 랭킹, 주·월·연 증가 랭킹, 마지막으로 총 스타 순입니다. 모든 수치는 GitHub API에서 가져옵니다. 분류 규칙: [docs/CATEGORIES.md](docs/CATEGORIES.md).", "cat_title": "카테고리", "schedule": "하루 두 번 갱신: 베이징 시간 0시(UTC+8)와 로스앤젤레스 시간 0시(America/Los_Angeles, 서머타임 반영). 갱신할 때마다 시간대별로 따로 보관합니다.", diff --git a/tools/i18n_pipeline.py b/tools/i18n_pipeline.py index e690c07..86bbc60 100644 --- a/tools/i18n_pipeline.py +++ b/tools/i18n_pipeline.py @@ -5,8 +5,8 @@ never fails the update): 1. translate every description in the new-repos ranking that has no current translation - (data/newcomer_i18n.json, keyed by repo; `src` must match the live description, so - anything already translated is skipped) -> zh-Hans, zh-Hant, ja, ko (+ en if the source + (data/translation_library.json, keyed by repo + hash of the source text + language: a hit costs + no model call) -> zh-Hans, zh-Hant, ja, ko (+ en if the source contains CJK text). 2. polish rewrite the project blurbs (data/projects.json), the translated new-repo descriptions and, only on request, the category descriptions in a short, plain, lead-with-the-point @@ -28,6 +28,7 @@ from __future__ import annotations import argparse +import datetime as dt import hashlib import json import os @@ -43,6 +44,8 @@ ROOT = Path(__file__).resolve().parents[1] STATE_PATH = ROOT / "data/polish_state.json" +LIB_REL = "data/translation_library.json" +GLOSSARY_REL = "data/glossary.json" LANGS = ("en", "zh-Hans", "zh-Hant", "ja", "ko") TOP_N = 20 POLISH_VERSION = 1 # bump to re-polish everything after changing the style prompt @@ -59,11 +62,29 @@ "ja": "Japanese (日本語, plain 常体 style: 〜する/〜できる, not です・ます)", "ko": "Korean (한국어, plain 해라체 style: ~한다 / ~할 수 있다)", } -GLOSSARY = ( - "Fixed terms: star = 星标 (zh-Hans) / 星號 (zh-Hant); stars per day = 星标/天; " - "agent = 智能体 (zh-Hans) / 代理 (zh-Hant) / エージェント (ja) / 에이전트 (ko). " - "Product, repo, company and model names stay exactly as written." -) +BASE_RULES = "Product, repo, company and model names stay exactly as written." + + +def load_glossary(root: Path) -> dict[str, Any]: + path = root / GLOSSARY_REL + return json.loads(path.read_text("utf-8")) if path.exists() else {"terms": [], "keep": []} + + +def glossary_for(texts: list[str], langs: list[str], glossary: dict[str, Any]) -> str: + """Only the glossary terms that occur in `texts`, for `langs`: keeps the prompt (and token bill) small.""" + blob = "\n".join(texts).lower() + lines = [] + for t in glossary.get("terms", []): + if re.search(r"(? list[dict[str, Any]]: return out -def translation_gaps(cache: dict[str, dict[str, str]], items: list[dict[str, Any]]) -> list[dict[str, Any]]: - """[{id, src, langs}] for descriptions with no current translation, only the languages that lack one.""" +def translation_gaps(lib: dict[str, Any], items: list[dict[str, Any]]) -> list[dict[str, Any]]: + """[{id, src, langs}] for descriptions whose current text (repo + source hash) lacks languages in the library.""" gaps = [] for it in items: desc = (it.get("description") or "").strip() if not desc: continue - entry = cache.get(it["name"]) - have = entry if entry and entry.get("src") == it.get("description") else {} - langs = [l for l in nci.required_langs(it["description"]) if not have.get(l, "").strip()] + langs = nci.missing_langs(lib, it["name"], it["description"]) if langs: gaps.append({"id": it["name"], "src": it["description"], "langs": langs}) return gaps @@ -283,23 +302,38 @@ def left(self) -> bool: # ----------------------------------------------------------------------------- stage 1: translate def translate(root: Path, items: list[dict[str, Any]], runner: Runner, budget: Budget, - log: Callable[[str], None] = print, limit: int | None = None, dry_run: bool = False) -> dict[str, int]: - path = root / "data/newcomer_i18n.json" - cache = nci.load(path) - gaps = translation_gaps(cache, items) + log: Callable[[str], None] = print, limit: int | None = None, dry_run: bool = False, + today: str | None = None) -> dict[str, int]: + """Fill the translation library for the ranked descriptions. A hit (same repo + source hash) costs nothing.""" + path = root / LIB_REL + lib = nci.load(path) + today = today or dt.date.today().isoformat() + hs = nci.hit_stats(lib, items) + gaps = translation_gaps(lib, items) + _log_library(hs, len(gaps), log) + touched = False + for it in items: # entries that were used today stay alive for --prune-days + if it.get("description") and not nci.missing_langs(lib, it["name"], it["description"]): + touched |= nci.touch(lib, it["name"], it["description"], today) + if touched and not dry_run: + nci.save(lib, path) if limit is not None: gaps = gaps[:limit] - stat = {"todo": len(gaps), "translated": 0, "rejected": 0, "errors": 0} + stat = {"total": hs["total"], "hits": hs["hits"], "partial": hs["partial"], "new": hs["new"], + "todo": len(gaps), "translated": 0, "rejected": 0, "errors": 0, "calls": 0} if dry_run or not gaps: return stat + glossary = load_glossary(root) streak = 0 for batch in _chunks(gaps, BATCH): if not budget.left(): log("translate: time budget used up; the rest waits for the next run") break + glos = glossary_for([g["src"] for g in batch], sorted({l for g in batch for l in g["langs"]}), glossary) prompt = TRANSLATE_PROMPT.format(items=json.dumps(batch, ensure_ascii=False), - langs=", ".join(LANGS), glossary=GLOSSARY) + langs=", ".join(LANGS), glossary=glos) try: + stat["calls"] += 1 reply = llm.extract_json(runner.ask(prompt)) streak = 0 except llm.LLMError as e: @@ -315,54 +349,65 @@ def translate(root: Path, items: list[dict[str, Any]], runner: Runner, budget: B if not isinstance(got, dict): stat["rejected"] += 1 continue - entry = cache.get(g["id"]) - entry = dict(entry) if entry and entry.get("src") == g["src"] else {"src": g["src"]} - ok = True for lang in g["langs"]: bad = check_translation(g["src"], got.get(lang)) if bad: log(f"translate: {g['id']} [{lang}] rejected: {bad}") - ok = False else: - entry[lang] = got[lang].strip() - if all(entry.get(l, "").strip() for l in nci.required_langs(g["src"])): - stat["translated"] += 1 - else: + nci.put(lib, g["id"], g["src"], lang, got[lang].strip(), today) + if nci.missing_langs(lib, g["id"], g["src"]): stat["rejected"] += 1 - if len(entry) > 1: - cache[g["id"]] = entry - _write_json(path, cache) # save after every batch so a later failure loses nothing + else: + stat["translated"] += 1 + nci.save(lib, path) # save after every batch so a later failure loses nothing return stat +def _log_library(hs: dict[str, int], to_send: int, log: Callable[[str], None]) -> None: + log(f"translate: library {hs['hits']}/{hs['total']} hits ({_pct(hs['hits'], hs['total'])}), " + f"{hs['partial']} partial, {hs['new']} new -> {to_send} to send to the model, 0 calls for the hits") + + +def _pct(a: int, b: int) -> str: + return f"{100 * a / b:.0f}%" if b else "n/a" + + # ----------------------------------------------------------------------------- stage 2: polish def _polish_jobs(root: Path, items: list[dict[str, Any]], targets: tuple[str, ...], - state: dict[str, Any]) -> list[dict[str, Any]]: - """Texts that still need polishing: {key, kind, name, lang, text}.""" + state: dict[str, Any], counts: dict[str, int] | None = None) -> list[dict[str, Any]]: + """Texts that still need polishing: {key, kind, name, lang, text}. `counts` gets candidates/skipped.""" jobs: list[dict[str, Any]] = [] + counts = counts if counts is not None else {} + counts.update(candidates=0, skipped=0) done = state["items"] - def add(kind: str, name: str, lang: str, text: str) -> None: + def add(kind: str, name: str, lang: str, text: str, extra: dict[str, Any] | None = None) -> None: key = f"{kind}|{name}|{lang}" + if not text.strip(): + return + counts["candidates"] += 1 rec = done.get(key) if rec and rec.get("sha") == sha(text) and rec.get("v") == POLISH_VERSION: if rec.get("ok") or rec.get("fails", 0) >= MAX_FAILS: + counts["skipped"] += 1 return if text.strip(): - jobs.append({"key": key, "kind": kind, "name": name, "lang": lang, "text": text}) + jobs.append({"key": key, "kind": kind, "name": name, "lang": lang, "text": text, **(extra or {})}) if "newcomers" in targets: - cache = nci.load(root / "data/newcomer_i18n.json") + lib = nci.load(root / LIB_REL) for it in items: - if it.get("suspicious"): + if it.get("suspicious") or not it.get("description"): continue # suspected cracked/pirated repos stay literal; polish must not make them sound better - entry = cache.get(it["name"]) - if not entry or entry.get("src") != it.get("description"): + entry = nci.lookup(lib, it["name"], it["description"]) + if not entry: continue for lang in LANGS: if entry.get(lang, "").strip(): - add("newcomer", it["name"], lang, entry[lang]) + # keyed by repo + source hash + language: a changed source is a new, unpolished entry + add("newcomer", f"{it['name']}@{nci.src_hash(it['description'])}", lang, entry[lang], + {"repo": it["name"], "src": it["description"]}) if "projects" in targets: for p in json.loads((root / "data/projects.json").read_text("utf-8")): for lang in LANGS: @@ -380,11 +425,11 @@ def _apply(root: Path, accepted: list[dict[str, Any]]) -> None: for a in accepted: by_kind.setdefault(a["kind"], []).append(a) if "newcomer" in by_kind: - path = root / "data/newcomer_i18n.json" - cache = nci.load(path) + path = root / LIB_REL + lib = nci.load(path) for a in by_kind["newcomer"]: - cache[a["name"]][a["lang"]] = a["new"] - _write_json(path, cache) + nci.put(lib, a["repo"], a["src"], a["lang"], a["new"]) + nci.save(lib, path) for kind, fname, key in (("project", "data/projects.json", "name"), ("category", "data/categories.json", "id")): if kind in by_kind: path = root / fname @@ -399,10 +444,15 @@ def polish(root: Path, items: list[dict[str, Any]], runner: Runner, budget: Budg targets: tuple[str, ...] = DEFAULT_TARGETS, log: Callable[[str], None] = print, limit: int | None = None, dry_run: bool = False) -> dict[str, int]: state = load_state(root / "data/polish_state.json") - jobs = _polish_jobs(root, items, targets, state) + glossary = load_glossary(root) + counts: dict[str, int] = {} + jobs = _polish_jobs(root, items, targets, state, counts) + log(f"polish: {counts['skipped']}/{counts['candidates']} texts already polished or given up on (skipped), " + f"{len(jobs)} to send to the model") if limit is not None: jobs = jobs[:limit] - stat = {"todo": len(jobs), "polished": 0, "unchanged": 0, "rejected": 0, "errors": 0} + stat = {"todo": len(jobs), "polished": 0, "unchanged": 0, "rejected": 0, "errors": 0, + "skipped": counts["skipped"], "candidates": counts["candidates"]} if dry_run or not jobs: return stat # group by language so each prompt is one language; small batches keep replies reliable @@ -418,7 +468,8 @@ def polish(root: Path, items: list[dict[str, Any]], runner: Runner, budget: Budg stop = True break payload = [{"id": str(i), "lang": LANG_NAMES[lang], "text": j["text"]} for i, j in enumerate(batch)] - prompt = POLISH_PROMPT.format(items=json.dumps(payload, ensure_ascii=False), glossary=GLOSSARY) + prompt = POLISH_PROMPT.format(items=json.dumps(payload, ensure_ascii=False), + glossary=glossary_for([j["text"] for j in batch], [lang], glossary)) try: reply = llm.extract_json(runner.ask(prompt)) streak = 0 @@ -483,14 +534,19 @@ def ready(backend: str, model: str) -> Any | None: return runners[(backend, model)] if do_translate: - gaps = translation_gaps(nci.load(root / "data/newcomer_i18n.json"), items) + lib = nci.load(root / LIB_REL) + gaps = translation_gaps(lib, items) if not gaps: - result["translate"] = {"todo": 0} - log("translate: nothing to do, every displayed description already has a current translation") + hs = nci.hit_stats(lib, items) + result["translate"] = {"todo": 0, **hs, "calls": 0} + log(f"translate: library {hs['hits']}/{hs['total']} hits ({_pct(hs['hits'], hs['total'])}), " + "nothing new, 0 model calls") elif dry_run: result["translate"] = {"todo": len(gaps)} + _log_library(nci.hit_stats(lib, items), len(gaps), log) elif (r := ready(translate_backend, translate_model)) is None: result["translate"] = {"todo": len(gaps), "skipped": True} + _log_library(nci.hit_stats(lib, items), len(gaps), log) else: result["translate"] = translate(root, items, r, budget, log, limit) log(f"translate: {result['translate']}") diff --git a/tools/local_daily.sh b/tools/local_daily.sh index 7f13104..6f03ce6 100755 --- a/tools/local_daily.sh +++ b/tools/local_daily.sh @@ -70,7 +70,7 @@ if [ -z "$(git status --porcelain)" ]; then echo "No changes." exit 0 fi -git add data rankings latest README*.md +git add data rankings latest README*.md docs/HOW_IT_WORKS*.md git commit -m "chore(data): daily star update $(date -u +%F)" if [ "$PUSH" = 1 ]; then git push origin main diff --git a/tools/newcomer_i18n.py b/tools/newcomer_i18n.py index 88b5a80..0b9667e 100644 --- a/tools/newcomer_i18n.py +++ b/tools/newcomer_i18n.py @@ -1,94 +1,226 @@ #!/usr/bin/env python3 -"""Translations of the new-repo descriptions (data/newcomer_i18n.json). +"""Translation library for the new-repo descriptions (data/translation_library.json). -The "hottest new repos" ranking shows each repo's own GitHub description. This cache maps a repo -full name to {"src": , "": , ...}. -A translation is used only when `src` still equals the current description; otherwise the original -text is shown (it never shows a translation of a text that has since changed). Entries are added by -tools/i18n_pipeline.py during the scheduled update (Cursor CLI, key from the CURSOR_API_KEY secret) or by hand. +The "hottest new repos" ranking shows each repo's own GitHub description. The library stores its +translations keyed exactly by repo + hash of the source text + language: + { "version": 2, + "entries": { "owner/repo": { "": { "src": "", "seen": "YYYY-MM-DD", + "zh-Hans": "...", "zh-Hant": "...", "ja": "...", "ko": "...", "en": "..." } } } } + +* Hit = the (repo, source hash) entry has the language: the stored text is used, no model is involved. +* Miss = the source text is new or changed: only then a model is asked, and only for the missing languages. +* Older versions of a description stay in the library (a description that changes back is a hit again); + `seen` is the last day the entry was used (refreshed at most weekly) so `--prune-days N` can drop dead ones. +* The original text is shown for any language without a hit; a translation of a text that has since changed is never shown. + +Entries are added by tools/i18n_pipeline.py during the update (or by hand). Usage: - python tools/newcomer_i18n.py list repos in the current ranking that lack a translation - python tools/newcomer_i18n.py --strict same, but exit 1 if anything is missing or stale + python tools/newcomer_i18n.py list repos in the current ranking that lack a translation, and the hit rate + python tools/newcomer_i18n.py --strict same, but exit 1 if a primary (AI) description is missing + python tools/newcomer_i18n.py --prune-days N drop entries not used for N days (and write the file) """ from __future__ import annotations import argparse +import datetime as dt +import hashlib import json import re from pathlib import Path from typing import Any ROOT = Path(__file__).resolve().parents[1] -CACHE_PATH = ROOT / "data/newcomer_i18n.json" +CACHE_PATH = ROOT / "data/translation_library.json" +VERSION = 2 +SEEN_REFRESH_DAYS = 7 # Languages every entry must have. "en" is optional and only expected when the source has CJK text. REQUIRED = ("zh-Hans", "zh-Hant", "ja", "ko") _CJK = re.compile(r"[\u3040-\u30ff\u3400-\u9fff\uac00-\ud7af]") +_COMMENT = ("Translation library for new-repo descriptions, keyed by repo + sha256(source)[:12] + language. " + "Used by tools/newcomer_i18n.py and tools/i18n_pipeline.py; see docs/I18N_PIPELINE.md.") +Library = dict[str, Any] -def load(path: Path = CACHE_PATH) -> dict[str, dict[str, str]]: - return json.loads(path.read_text("utf-8")) if path.exists() else {} +def src_hash(text: str) -> str: + return hashlib.sha256(text.encode("utf-8")).hexdigest()[:12] -def pick(cache: dict[str, dict[str, str]], name: str, description: str, lang: str) -> str: - """The translation of `description` into `lang` if a current one exists, else the original.""" - entry = cache.get(name) - if entry and entry.get("src") == description and entry.get(lang, "").strip(): - return entry[lang] - return description + +def empty() -> Library: + return {"_comment": _COMMENT, "version": VERSION, "entries": {}} + + +def from_legacy(old: dict[str, dict[str, str]], seen: str | None = None) -> Library: + """Convert the version-1 shape {repo: {"src": ..., lang: text}} into a library.""" + lib = empty() + for name, entry in old.items(): + if name.startswith("_") or not isinstance(entry, dict) or "src" not in entry: + continue + slot = {k: v for k, v in entry.items()} + if seen: + slot["seen"] = seen + lib["entries"].setdefault(name, {})[src_hash(entry["src"])] = slot + return lib + + +def load(path: Path = CACHE_PATH) -> Library: + if not path.exists(): + return empty() + data = json.loads(path.read_text("utf-8")) + if "entries" not in data: # version-1 file: still readable + return from_legacy(data) + data.setdefault("entries", {}) + return data + + +def save(lib: Library, path: Path = CACHE_PATH) -> None: + lib["_comment"], lib["version"] = _COMMENT, VERSION + lib["entries"] = {n: dict(sorted(v.items())) for n, v in sorted(lib["entries"].items())} + path.write_text(json.dumps(lib, ensure_ascii=False, indent=2) + "\n", "utf-8") + + +def lookup(lib: Library, name: str, description: str) -> dict[str, str] | None: + return (lib.get("entries", {}).get(name) or {}).get(src_hash(description)) + + +def get(lib: Library, name: str, description: str, lang: str) -> str | None: + entry = lookup(lib, name, description) + text = (entry or {}).get(lang, "") + return text if text.strip() else None + + +def put(lib: Library, name: str, description: str, lang: str, text: str, today: str | None = None) -> None: + slot = lib["entries"].setdefault(name, {}).setdefault(src_hash(description), {"src": description}) + slot[lang] = text + if today: + slot["seen"] = today + + +def touch(lib: Library, name: str, description: str, today: str) -> bool: + """Mark an entry as used today (at most once per SEEN_REFRESH_DAYS). True if the library changed.""" + slot = lookup(lib, name, description) + if slot is None: + return False + last = slot.get("seen") + if last: + try: + if (dt.date.fromisoformat(today) - dt.date.fromisoformat(last)).days < SEEN_REFRESH_DAYS: + return False + except ValueError: + pass + slot["seen"] = today + return True + + +def prune(lib: Library, today: str, keep_days: int) -> int: + """Drop entries unused for more than keep_days (entries without `seen` are kept). Returns how many.""" + cutoff = dt.date.fromisoformat(today) - dt.timedelta(days=keep_days) + gone = 0 + for name in list(lib["entries"]): + for h, slot in list(lib["entries"][name].items()): + try: + old = bool(slot.get("seen")) and dt.date.fromisoformat(slot["seen"]) < cutoff + except ValueError: + old = False + if old: + del lib["entries"][name][h] + gone += 1 + if not lib["entries"][name]: + del lib["entries"][name] + return gone + + +def pick(lib: Library, name: str, description: str, lang: str) -> str: + """The stored translation of `description` into `lang` if there is a hit, else the original.""" + return get(lib, name, description, lang) or description def required_langs(description: str) -> tuple[str, ...]: return REQUIRED + (("en",) if _CJK.search(description) else ()) -def problems(cache: dict[str, dict[str, str]], items: list[dict[str, Any]]) -> list[str]: - """One line per repo in the ranking whose description is untranslated (missing) or stale.""" +def missing_langs(lib: Library, name: str, description: str) -> list[str]: + """Languages of `description` that still need a translation (all required ones if there is no entry).""" + entry = lookup(lib, name, description) or {} + return [l for l in required_langs(description) if not entry.get(l, "").strip()] + + +def problems(lib: Library, items: list[dict[str, Any]]) -> list[str]: + """One line per repo in the ranking whose description has no (complete) translation for its current text.""" out = [] for it in items: desc = it.get("description") or "" if not desc: continue - entry = cache.get(it["name"]) - if entry is None: - out.append(f"{it['name']}: missing (all languages)") - elif entry.get("src") != desc: - out.append(f"{it['name']}: stale (description changed since it was translated)") - else: - lacking = [l for l in required_langs(desc) if not entry.get(l, "").strip()] - if lacking: - out.append(f"{it['name']}: missing {', '.join(lacking)}") + lacking = missing_langs(lib, it["name"], desc) + if len(lacking) == len(required_langs(desc)): + known = lib.get("entries", {}).get(it["name"]) + out.append(f"{it['name']}: " + ("changed since it was translated" if known else "missing (all languages)")) + elif lacking: + out.append(f"{it['name']}: missing {', '.join(lacking)}") return out -def main(argv: list[str] | None = None) -> int: - ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) - ap.add_argument("--strict", action="store_true", help="exit 1 if any translation is missing or stale") - args = ap.parse_args(argv) - stats = json.loads((ROOT / "data/stats.json").read_text("utf-8")) - new = stats.get("newcomers") or {} - items = [] - primary_items = [] - if new.get("ok"): +def hit_stats(lib: Library, items: list[dict[str, Any]]) -> dict[str, int]: + """Counts over the ranked descriptions: total, full hits (every language stored), partial, new.""" + total = hits = partial = new = 0 + for it in items: + desc = (it.get("description") or "").strip() + if not desc: + continue + total += 1 + lacking = missing_langs(lib, it["name"], it["description"]) + if not lacking: + hits += 1 + elif len(lacking) < len(required_langs(it["description"])): + partial += 1 + else: + new += 1 + return {"total": total, "hits": hits, "partial": partial, "new": new} + + +def ranked_items(new: dict[str, Any] | None) -> tuple[list[dict[str, Any]], list[dict[str, Any]]]: + """(all ranked items, items of the primary AI category) from stats['newcomers'] (either shape).""" + items: list[dict[str, Any]] = [] + primary: list[dict[str, Any]] = [] + if new and new.get("ok"): if "categories" in new: for cid, block in (new.get("categories") or {}).items(): if block.get("ok"): chunk = block.get("items") or [] items.extend(chunk) if cid == "ai": - primary_items = chunk + primary = chunk else: - items = new.get("items") or [] - primary_items = items - bad = problems(load(), items) + items = primary = new.get("items") or [] + return items, primary + + +def main(argv: list[str] | None = None) -> int: + ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + ap.add_argument("--strict", action="store_true", help="exit 1 if a primary (AI) description lacks a translation") + ap.add_argument("--prune-days", type=int, help="drop library entries not used for N days and write the file") + args = ap.parse_args(argv) + lib = load() + if args.prune_days is not None: + gone = prune(lib, dt.date.today().isoformat(), args.prune_days) + save(lib) + print(f"pruned {gone} entries unused for more than {args.prune_days} days") + stats = json.loads((ROOT / "data/stats.json").read_text("utf-8")) + items, primary_items = ranked_items(stats.get("newcomers")) + bad = problems(lib, items) + hs = hit_stats(lib, items) + n_entries = sum(len(v) for v in lib["entries"].values()) + print(f"library: {n_entries} entries for {len(lib['entries'])} repos; ranked now: {hs['hits']}/{hs['total']} hits") if bad: print(f"{len(bad)} of {len(items)} new-repo descriptions need a translation " - f"(add them to data/newcomer_i18n.json):") + f"(tools/i18n_pipeline.py --translate adds them):") print("\n".join(f" - {line}" for line in bad)) else: print(f"all {len(items)} new-repo descriptions are translated") # --strict only gates the primary (AI) category so daily runs across many categories stay usable - strict_bad = problems(load(), primary_items) if args.strict else [] + strict_bad = problems(lib, primary_items) if args.strict else [] if args.strict and strict_bad: print(f"--strict: {len(strict_bad)} primary (AI) descriptions still need a translation") return 1 diff --git a/tools/polish_local.sh b/tools/polish_local.sh index 318ebf1..e94335c 100755 --- a/tools/polish_local.sh +++ b/tools/polish_local.sh @@ -73,7 +73,7 @@ if [ -z "$(git status --porcelain)" ]; then echo "No changes." exit 0 fi -git add data README*.md latest rankings +git add data README*.md docs/HOW_IT_WORKS*.md latest rankings git commit -m "chore(i18n): polish copy via agy ($MODEL)" if [ "$PUSH" = 1 ]; then git push diff --git a/tools/render_readme.py b/tools/render_readme.py index 0a047ee..4bfcccb 100755 --- a/tools/render_readme.py +++ b/tools/render_readme.py @@ -8,6 +8,7 @@ import argparse import json +import re import sys from pathlib import Path from typing import Any @@ -20,7 +21,13 @@ from i18n import LANGS, S # noqa: E402 ROOT = Path(__file__).resolve().parents[1] -TOP_N = archive.TOP_N +TOP_N = archive.TOP_N # rows in the full lists (latest/, rankings/) +README_TOP = 10 # rows per board in the README; the full top 20 is in latest/ +REPO = "jammyfu/github-risers" +SITE = "https://jammyfu.github.io/github-risers/" +SOCIAL_IMAGE = ".github/social-preview.png" +# Anchors of docs/FAQ.md (owned by the GEO work, checked by a test); only linked, never generated here. +FAQ_ANCHORS = ("what-is-github-risers", "is-it-the-same-as-github-trending", "how-often-is-it-updated") def switcher(lang: str) -> str: @@ -30,6 +37,16 @@ def switcher(lang: str) -> str: return " | ".join(parts) +def how_name(lang: str) -> str: + """File name (inside docs/) of the generated 'how it works' page for a language.""" + return "HOW_IT_WORKS.md" if lang == "en" else f"HOW_IT_WORKS.{lang}.md" + + +def anchor(heading: str) -> str: + """GitHub's #fragment for a heading: lower-case, punctuation dropped, spaces to hyphens.""" + return re.sub(r"[^\w\- ]", "", heading.lower()).replace(" ", "-") + + def fmt_int(n: int) -> str: return f"{n:,}" @@ -122,19 +139,19 @@ def category_block(cat: dict, st: list[dict], projects: list[dict], cats: dict, new_block = newcomers_root # legacy shape from older snapshots if new_block is not None: - out += [f"### {s['new']}", "", s["new_intro"], ""] + out += [f"### {s['new']}", ""] if not new_block.get("ok"): out += [s["new_failed"].format(error=new_block.get("error", "?")), ""] elif not new_block.get("items"): out += [s["new_none"], ""] else: - out += [new_table(new_block["items"][:TOP_N], lang, tr), ""] + out += [new_table(new_block["items"][:README_TOP], lang, tr), ""] if new_block.get("ok") and any(not q["ok"] for q in new_block.get("queries", [])): bad = sum(1 for q in new_block["queries"] if not q["ok"]) out += [s["new_partial"].format(failed=bad, total=len(new_block["queries"])), ""] for key in ("week", "month", "year"): - ranked = core.rank(cat_projects, key)[:TOP_N] + ranked = core.rank(cat_projects, key)[:README_TOP] out += [f"### {s[key]}", ""] if ranked: table, young = growth_table(ranked, key, metas, cats, lang) @@ -144,7 +161,7 @@ def category_block(cat: dict, st: list[dict], projects: list[dict], cats: dict, else: out += [s["none"], ""] - ranked_total = core.rank(cat_projects, "total")[:TOP_N] + ranked_total = core.rank(cat_projects, "total")[:README_TOP] out += [f"### {s['total']}", ""] if ranked_total: out += [total_table(ranked_total, metas, cats, lang), ""] @@ -176,7 +193,7 @@ def leaders(stats: dict, projects: list[dict], cat_id: str, newcomers_block: dic return out -def tops_table(stats: dict, projects: list[dict], cats: dict, lang: str) -> str: +def tops_table(stats: dict, projects: list[dict], cats: dict, lang: str, link: bool = False) -> str: s = S[lang] metas = {p["name"]: p for p in projects} root = stats.get("newcomers") or {} @@ -200,49 +217,92 @@ def tops_table(stats: dict, projects: list[dict], cats: dict, lang: str) -> str: p = led["total"] cells.append(_leader_cell(p["name"], metas[p["name"]]["url"], f"{fmt_int(p['stars'])} ★", lang) if p else s["none"]) mark = f" ★ {s['primary_mark']}" if cat.get("primary") else "" - lines.append(f"| **{cat['name'][lang]}**{mark} | " + " | ".join(cells) + " |") + name = cat["name"][lang] + label = f"[{name}](#{anchor(name)})" if link else name # the row name jumps to that category's boards + lines.append(f"| **{label}**{mark} | " + " | ".join(cells) + " |") return "\n".join(lines) +def badges(stats: dict, lang: str) -> str: + """Three badges, no more: licence, CI, last update.""" + day = stats["generated_at"][:10].replace("-", "--") # shields.io: "--" is a literal hyphen + return " ".join([ + "[![MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)", + f"[![CI](https://github.com/{REPO}/actions/workflows/ci.yml/badge.svg)](https://github.com/{REPO}/actions/workflows/ci.yml)", + f"[![updated](https://img.shields.io/badge/updated-{day}-brightgreen.svg)](latest/{archive.rankings_name(lang)})", + ]) + + +def faq_block(lang: str) -> list[str]: + s = S[lang] + out = [f"## {s['faq_title']}", ""] + for i, anchor_ in enumerate(FAQ_ANCHORS, 1): + out += [f"### {s[f'q{i}']}", "", f"{s[f'a{i}']} [{s['more']}](docs/FAQ.md#{anchor_})", ""] + return out + + def render(lang: str, projects: list[dict], stats: dict, cats: dict, tr: dict | None = None) -> str: + """The README: headline, image, one sentence, this round's #1s, quick answers, then the boards (top 10).""" s = S[lang] st = stats["projects"] + how = f"docs/{how_name(lang)}" + latest = f"latest/{archive.rankings_name(lang)}" out: list[str] = [switcher(lang), ""] out += [ - f"# {s.get('title', 'GitHub Risers')}", "", - f"> {s['tagline']}", "", - s["intro"], "", - s["updated"].format(ts=stats["generated_at"].replace("T", " ").replace("Z", "")), - s["schedule"], - s["shown"].format(n=TOP_N, total=len(projects)), "", - s["history"].format(index=f"rankings/{archive.index_name(lang)}", - latest=f"latest/{archive.rankings_name(lang)}"), "", - f"## {s['tops_title']}", "", s["tops_intro"], "", - tops_table(stats, projects, cats, lang), "", - f"
{s['cat_title']}", "", - "| | |", "|---|---|", + f"# {s['title']}", "", + f'{s[', "", + badges(stats, lang), "", + s["tagline"], "", + s["stamp"].format(ts=stats["generated_at"].replace("T", " ").replace("Z", "")[:16]), "", + s["links"].format(website=s["website"], site=SITE, how=how, index=f"rankings/{archive.index_name(lang)}", + latest=latest), "", + f"## {s['tops_title']}", "", + tops_table(stats, projects, cats, lang, link=True), "", + s["top_note"].format(latest=latest), "", ] - for c in ordered_categories(cats): - mark = f" ★ {s.get('primary_mark', 'primary')}" if c.get("primary") else "" - out.append(f"| {c['name'][lang]}{mark} | {c['desc'][lang]} |") - out += ["", "
", ""] - + out += faq_block(lang) newcomers_root = stats.get("newcomers") for cat in ordered_categories(cats): out += category_block(cat, st, projects, cats, newcomers_root, lang, tr) missing = [p for p in st if not p.get("ok")] - out += [f"## {s['missing_title']}", ""] - if missing: - out += [s["missing_intro"], ""] + if missing: # only shown when something is actually missing + out += [f"## {s['missing_title']}", "", s["missing_intro"], ""] out += [f"- `{p['name']}` — {p['error']}" for p in missing] out.append("") - else: - out += [s["missing_none"], ""] + out += ["---", "", s["star_ask"], "", s["cite"], "", s["footer"].format(how=how), ""] + return "\n".join(out) + + +def _docs_links(text: str) -> str: + """Links written relative to the repo root, rewritten for a page that lives in docs/.""" + text = re.sub(r"\]\(docs/", "](", text) + return re.sub(r"\]\(((?:data|rankings|latest)/)", r"](../\1", text) + +def render_docs(lang: str, projects: list[dict], cats: dict) -> str: + """docs/HOW_IT_WORKS*.md: everything the README no longer carries (intro, schedule, methodology, contributing).""" + s = S[lang] + sw = " | ".join(f"**{label}**" if code == lang else f"[{label}]({how_name(code)})" + for code, (_f, label) in LANGS.items()) + out: list[str] = [ + sw, "", f"# {s['doc_title']}", "", + f"[{s['doc_back']}](../{LANGS[lang][0]})", "", + s["intro"], "", + s["schedule"], "", + s["shown"].format(m=README_TOP, n=TOP_N, total=len(projects)), "", + s["history"].format(index=f"rankings/{archive.index_name(lang)}", latest=f"latest/{archive.rankings_name(lang)}"), "", + s["tops_intro"], "", + f"## {s['cat_title']}", "", + "| | |", "|---|---|", + ] + for c in ordered_categories(cats): + mark = f" ★ {s.get('primary_mark', 'primary')}" if c.get("primary") else "" + out.append(f"| {c['name'][lang]}{mark} | {c['desc'][lang]} |") + out += ["", f"## {s['new']}", "", s["new_intro"], ""] out += [f"## {s['method_title']}", ""] + [f"- {m}" for m in s["method"]] + [""] out += [f"## {s['contrib_title']}", "", s["contrib"], ""] - return "\n".join(out) + return _docs_links("\n".join(out)) def main(argv: list[str] | None = None) -> int: @@ -252,17 +312,18 @@ def main(argv: list[str] | None = None) -> int: projects = json.loads((ROOT / "data/projects.json").read_text("utf-8")) cats = {c["id"]: c for c in json.loads((ROOT / "data/categories.json").read_text("utf-8"))} stats = json.loads((ROOT / "data/stats.json").read_text("utf-8")) - tr = newcomer_i18n.load(ROOT / "data/newcomer_i18n.json") + tr = newcomer_i18n.load(ROOT / "data/translation_library.json") stale = [] for lang, (fname, _label) in LANGS.items(): - text = render(lang, projects, stats, cats, tr) - path = ROOT / fname - if args.check: - if not path.exists() or path.read_text("utf-8") != text: - stale.append(fname) - else: - path.write_text(text, "utf-8") - print(f"wrote {fname}") + for rel, text in ((fname, render(lang, projects, stats, cats, tr)), + (f"docs/{how_name(lang)}", render_docs(lang, projects, cats))): + path = ROOT / rel + if args.check: + if not path.exists() or path.read_text("utf-8") != text: + stale.append(rel) + else: + path.write_text(text, "utf-8") + print(f"wrote {rel}") if args.check: stale += archive.stale_latest_and_index(ROOT) else: diff --git a/tools/update_stars.py b/tools/update_stars.py index 14db7a1..eaf8aa3 100755 --- a/tools/update_stars.py +++ b/tools/update_stars.py @@ -222,7 +222,7 @@ def main(argv: list[str] | None = None) -> int: for block in (new.get("categories") or {}).values(): if block.get("ok"): items.extend(block.get("items") or []) - gaps = newcomer_i18n.problems(newcomer_i18n.load(ROOT / "data/newcomer_i18n.json"), items[:archive.TOP_N * 7]) + gaps = newcomer_i18n.problems(newcomer_i18n.load(ROOT / "data/translation_library.json"), items[:archive.TOP_N * 7]) if gaps: print(f"{len(gaps)} new-repo descriptions have no up-to-date translation " "(shown in the original language); run: python3 tools/newcomer_i18n.py")