Парсинг 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 на розробці власного пайплайна, замовивши готове рішення у нас. Замовлення такого пайплайна обходиться від $500, що значно дешевше самостійної розробки.

Які дані про розробку можна зібрати через GraphQL?

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

Офіційна документація GitHub стверджує, що GraphQL API v4 надає більш ефективний та гнучкий спосіб запиту даних. Джерело: https://docs.github.com/en/graphql

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 / поле Частота збору
Кількість комітів (30d/90d) defaultBranchRef.target.history.totalCount Щоденно
Активні контриб'ютори 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% комітів у популярних репозиторіях вносяться ботами, тому фільтрація критична. Наш алгоритм фільтрації ботів має точність 98%, що на 15% краще стандартних рішень.

Обхід rate limit при зборі 2000+ репозиторіїв

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

Кроки для налаштування збору:

  1. Отримайте кілька Personal Access Token (PAT) з scope public_repo.
  2. Реалізуйте ротацію токенів через пул — це дозволяє використовувати до 10 токенів, збільшуючи ліміт до 50k points/год.
  3. Впровадьте інкрементальний збір: зберігайте last_collected_at і запитуйте тільки нові коміти через параметр since.
  4. Пріоритезуйте „гарячі“ репозиторії (висока активність, великий TVL) для щоденного збору, „холодні“ — раз на тиждень.
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: token = max(self.tokens, key=lambda t: self.current_remaining[t]) if self.current_remaining[token] < 100: await asyncio.sleep(3600) 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}"}, ) cost = resp.json().get("data", {}).get("rateLimit", {}).get("cost", 1) self.current_remaining[token] -= cost return resp.json() 

Маппінг проектів до репозиторіїв

Складання та підтримка списку 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. Наш пайплайн у 10 разів швидший за ручний збір. Вартість послуги від $500.

Завдяки цьому рішенню один клієнт з крипто-хедж-фонду скоротив час аналізу на 70% і отримав точні метрики без зайвих витрат.

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

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