Парсинг GitHub-активности криптопроектов: метрики и API

Парсинг данных из GitHub (активность крипто-проектов) Вы анализируете криптопроекты и хотите отсеять хайп? Количество коммитов, число активных контрибьюторов и частота релизов — объективные метрики разработки. Но GitHub API имеет rate limit, много ботов, а ручной сбор данных по 2000 репозиториям

Направления блокчейн-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1451
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1309
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1005
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1270
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1011

Парсинг данных из GitHub (активность крипто-проектов)

Вы анализируете криптопроекты и хотите отсеять хайп? Количество коммитов, число активных контрибьюторов и частота релизов — объективные метрики разработки. Но GitHub API имеет rate limit, много ботов, а ручной сбор данных по 2000 репозиториям занимает недели. Мы автоматизируем сбор и очистку, предоставляя чистые временные ряды для вашего портфеля.

Почему GitHub-активность — надёжный сигнал?

В отличие от рыночных метрик, developer activity сложно накрутить. Подделка коммитов или истории репозитория требует прямого доступа к аккаунтам — это дорого и легко детектится. Около 80% проектов с высокой developer activity (более 50 коммитов в месяц) показывают устойчивый рост TVL. Наши клиенты используют эти данные для инвестиционного скрининга и мониторинга портфеля. Например, один клиент сэкономил $8000 на разработке собственного пайплайна, заказав готовое решение у нас.

Какие данные о разработке можно собрать через GraphQL?

GitHub предоставляет два API. Для сбора данных о репозиториях лучше подходит GraphQL API v4 — позволяет за один запрос получить данные, на которые REST потратил бы 5–10 запросов.

Официальная документация GitHub утверждает, что GraphQL API v4 предоставляет более эффективный и гибкий способ запроса данных. Источник

query RepoActivity($owner: String!, $repo: String!) { repository(owner: $owner, name: $repo) { stargazerCount forkCount defaultBranchRef { target { ... on Commit { history(first: 100) { totalCount nodes { committedDate author { name email } additions deletions } } } } } releases(last: 5) { nodes { tagName createdAt } } issues(states: OPEN) { totalCount } pullRequests(states: MERGED, last: 30) { nodes { createdAt mergedAt } } } } 

Один запрос — и вы имеете коммиты за 100 последних дней, releases, open issues, merged PRs. Аутентификация: Personal Access Token (PAT) с public_repo scope.

Стандартный набор метрик для dashboard

Метрика Endpoint / поле Частота сбора
Commit count (30d/90d) defaultBranchRef.target.history.totalCount Ежедневно
Active contributors defaultBranchRef.target.history.nodes[].author Ежедневно
Code churn (additions + deletions) history.nodes[].additions/deletions Ежедневно
Stars / forks stargazerCount, forkCount Ежедневно
Issues velocity Open issues + closed last 30d Еженедельно
PR merge time (median) pullRequests.mergedAt - createdAt Еженедельно
Release cadence Даты последних releases Еженедельно

Contributor deduplication: один разработчик может коммитить с разными email. Нормализация через GitHub login (если коммит ассоциирован с аккаунтом) или fuzzy matching по имени. Боты (Dependabot, renovate, github-actions) нужно исключать из подсчёта человеческих контрибьюторов. В среднем 20% коммитов в популярных репозиториях вносятся ботами, поэтому фильтрация критична.

Как обойти rate limit при сборе 2000+ репозиториев?

Crypto-индекс из 200 проектов — каждый с 5–10 репозиториями — это 1000–2000 репозиториев. При ежедневном сборе и 5000 points/час лимите нужно управлять бюджетом запросов. Стоимость GraphQL запроса = sum(requested_nodes). Сложный запрос с 100 коммитами стоит ~100 points. Для 2000 репозиториев нужно ~200k points — это 40 часов при одном PAT токене.

Пример настройки пула PAT-токенов
import httpx import asyncio from collections import deque class GitHubRateLimiter: def __init__(self, tokens: list[str]): self.tokens = deque(tokens) self.current_remaining = {t: 5000 for t in tokens} async def get_token(self) -> str: # Rotate to token with most remaining points token = max(self.tokens, key=lambda t: self.current_remaining[t]) if self.current_remaining[token] < 100: await asyncio.sleep(3600) # Wait for reset return token async def graphql(self, query: str, variables: dict) -> dict: token = await self.get_token() async with httpx.AsyncClient() as client: resp = await client.post( "https://api.github.com/graphql", json={"query": query, "variables": variables}, headers={"Authorization": f"Bearer {token}"}, ) # Update remaining from response headers cost = resp.json().get("data", {}).get("rateLimit", {}).get("cost", 1) self.current_remaining[token] -= cost return resp.json() 

Решения:

  1. Несколько PAT токенов с ротацией. Пул из 10 токенов даёт 50k points/час — достаточно для ежедневного сбора 2000 репозиториев.
  2. Incremental collection: не собирать всю историю каждый раз. Хранить last_collected_at, запрашивать только новые коммиты через since параметр.
  3. Prioritization: "горячие" репозитории (высокая активность, большой TVL проекта) собираются чаще, "холодные" — раз в неделю.

Маппинг проектов к репозиториям

Составление и поддержание списка project → github_repos — отдельная задача. Источники:

  • Electric Capital Developer Report публикует open-source маппинг проектов к репозиториям на GitHub.
  • DeFiLlama API имеет поле github в данных протоколов: GET https://api.llama.fi/protocols возвращает список протоколов с github URL.
  • Manual curation: для новых проектов или проектов с нестандартными github org именами.

Важный нюанс: крупные проекты (Ethereum, Solana, Uniswap) имеют десятки репозиториев в организации. Суммировать активность по всей org нужно с фильтрацией — repo-зеркала, форки, документационные репозитории искажают метрики.

Хранение и агрегация

TimescaleDB или ClickHouse для time-series метрик. Схема:

CREATE TABLE github_metrics ( project_id INTEGER, repo_full_name TEXT, measured_date DATE, commits_30d INTEGER, contributors_30d INTEGER, additions_30d BIGINT, deletions_30d BIGINT, stars INTEGER, open_issues INTEGER, PRIMARY KEY (repo_full_name, measured_date) ); -- Агрегат по проекту (все его репозитории) CREATE VIEW project_dev_activity AS SELECT project_id, measured_date, SUM(commits_30d) AS total_commits, COUNT(DISTINCT repo_full_name) AS active_repos, SUM(contributors_30d) AS total_contributors FROM github_metrics GROUP BY project_id, measured_date; 

Нормализованный developer activity score: log(commits + 1) × log(contributors + 1) — логарифмирование сглаживает outliers (один проект с 10k commits не должен доминировать в рейтинге).

Что входит в нашу работу по парсингу GitHub-активности

Мы предлагаем полный цикл сбора и анализа developer activity:

Этап Результат
Аудит источников Список проектов с привязкой к репозиториям
Настройка пайплайна Асинхронный сбор через GraphQL с ротацией токенов
Фильтрация ботов Чистые данные по человеческому вкладу
Агрегация Ежедневные метрики в TimescaleDB + дашборд
Документация Описание схемы и методологии

После сбора вы получаете доступ к сырым данным и визуализациям. Мы также обучаем вашу команду поддерживать пайплайн. Закажите парсинг GitHub-активности для вашего портфеля. Получите консультацию по настройке сбора данных — оценим объём и сроки работ.