{"adoption": {"forks": 663, "observed_at": "2026-08-28T04:08:32.226123+00:00", "stars": 4008}, "canonical_url": "https://ross.abutalabs.com/products/v2rayaggregator", "card": {"archived": false, "artifact_type": "service", "description": "Collect Lots of Shadowsocks, ShadowsocksR, Trojan, Vmess from Public Sources & Filter Best Nodes By Speed", "domain": ["censorship-circumvention", "privacy", "networking", "self-hosted"], "enriched": true, "function": ["web-scraping", "etl", "scheduling", "data-generation", "monitoring"], "health_score": 80, "homepage": null, "language": "Python", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["mahdibland/V2RayAggregator"], "name": "mahdibland/V2RayAggregator", "platform": ["python", "cloud", "cli"], "pushed_at": "2026-08-26T13:36:03+00:00", "repo": "mahdibland/V2RayAggregator", "stars": 4008, "tags": ["v2ray", "clash", "shadowsocks", "proxy-aggregator", "github-actions", "free-nodes", "speed-test", "gfw-circumvention", "trojan", "vmess", "automation"], "topics": ["airport", "clash", "gfw", "nodes", "proxies", "scientific-internet-access", "shadowsocks", "shadowsocksr", "ss", "ssr", "trojan", "vmess", "best-nodes", "china-censorship", "clash-config", "freeairport", "freenodes", "v2ray", "free-proxies", "node"], "urls": [], "use_cases": ["aggregate free v2ray and shadowsocks nodes from public sources", "get a clash subscription of speed-tested free proxies", "filter free proxy nodes by speed automatically", "collect trojan and vmess nodes without duplicates", "schedule automatic proxy node updates via github actions", "find working free nodes for censorship circumvention"], "what_it_is": "A Python-based automation that aggregates free proxy nodes (Shadowsocks, SSR, Trojan, Vmess) from public sources, deduplicates them, and speed-tests them via GitHub Actions to publish the best nodes in multiple formats. It outputs subscription files in YAML, Clash, V2Ray, and Base64 formats for use with proxy clients.", "when_to_avoid": ["you need reliable, paid proxy service quality or guaranteed availability", "you require nodes tested from your own regional network perspective, since speed tests run from GitHub's US-based runners", "you need a self-hosted proxy server rather than an aggregator of existing nodes"], "when_to_choose": ["you want continuously updated, speed-ranked free proxy subscriptions in multiple client formats", "you need automated collection and deduplication of public proxy sources with zero infrastructure beyond GitHub Actions"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/v2rayaggregator", "repo": "mahdibland/V2RayAggregator", "role": "main", "score": 67}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.226123+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:24:02.754317+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28d5a1c57e535224de683c8919729456f3b976f46c4563cbaae9a56195bb2682", "fetched_at": "2026-08-28T04:08:32.226123+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mahdibland/V2RayAggregator"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.226123+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:24:02.754317+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28d5a1c57e535224de683c8919729456f3b976f46c4563cbaae9a56195bb2682", "fetched_at": "2026-08-28T04:08:32.226123+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mahdibland/V2RayAggregator"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:24:02.754317+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28d5a1c57e535224de683c8919729456f3b976f46c4563cbaae9a56195bb2682", "fetched_at": "2026-08-28T04:08:32.226123+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mahdibland/V2RayAggregator"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.226123+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.226123+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.226123+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:24:02.754317+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28d5a1c57e535224de683c8919729456f3b976f46c4563cbaae9a56195bb2682", "fetched_at": "2026-08-28T04:08:32.226123+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mahdibland/V2RayAggregator"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.226123+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.226123+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:24:02.754317+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28d5a1c57e535224de683c8919729456f3b976f46c4563cbaae9a56195bb2682", "fetched_at": "2026-08-28T04:08:32.226123+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mahdibland/V2RayAggregator"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.226123+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.226123+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.226123+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:24:02.754317+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28d5a1c57e535224de683c8919729456f3b976f46c4563cbaae9a56195bb2682", "fetched_at": "2026-08-28T04:08:32.226123+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mahdibland/V2RayAggregator"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.226123+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.226123+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:24:02.754317+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28d5a1c57e535224de683c8919729456f3b976f46c4563cbaae9a56195bb2682", "fetched_at": "2026-08-28T04:08:32.226123+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mahdibland/V2RayAggregator"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:24:02.754317+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28d5a1c57e535224de683c8919729456f3b976f46c4563cbaae9a56195bb2682", "fetched_at": "2026-08-28T04:08:32.226123+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mahdibland/V2RayAggregator"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:24:02.754317+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28d5a1c57e535224de683c8919729456f3b976f46c4563cbaae9a56195bb2682", "fetched_at": "2026-08-28T04:08:32.226123+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mahdibland/V2RayAggregator"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:24:02.754317+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "28d5a1c57e535224de683c8919729456f3b976f46c4563cbaae9a56195bb2682", "fetched_at": "2026-08-28T04:08:32.226123+00:00", "kind": "readme", "missing": false, "url": "https://github.com/mahdibland/V2RayAggregator"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1433, "days_push": 7, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 67, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}