홈 / n8n 워크플로 템플릿 / 매일 GitHub 인기 저장소 스크랩

매일 GitHub 인기 저장소 스크랩

Scrape Today's Github Trend 13 Top Repositories

GitHub 트렌딩 페이지에서 상위 저장소를 자동으로 스크랩하고 처리하여 작성자, 제목, 설명, URL과 같은 주요 세부 정보를 추출합니다.

수동 실행노드 7개개발자 도구github스크래퍼개발자

워크플로 소개

오늘날의 GitHub 트렌딩 리포지토리 워크플로우 분석 스크랩

이 n8n 워크플로우 템플릿은 GitHub 트렌딩 페이지(https://github.com/trending)에서 구조화된 데이터를 자동으로 스크랩하고 추출하도록 설계되었으며, 특히 현재 날짜의 상위 리포지토리를 대상으로 합니다. HTML 파싱 기능을 활용하여 GitHub의 공개 HTML 구조를 탐색하고, 관련 리포지토리 요소를 분리하며, 원시 스크랩된 콘텐츠를 작성자, 이름, 설명 및 직접 URL을 포함한 깨끗하고 사용 가능한 리포지토리 세부 정보 목록으로 변환합니다.

워크플로우 기능

워크플로우는 수동으로 시작되어 GitHub 트렌딩 페이지의 HTML 콘텐츠를 가져오고, 리포지토리 목록을 포함하는 메인 컨테이너를 분리하며, 개별 리포지토리 카드를 추출하고, 주요 메타데이터(리포지토리 경로, 프로그래밍 언어, 설명 등)를 파싱한 다음, 각 항목을 author, title, url, 타임스탬프가 찍힌 created_at과 같은 풍부한 필드가 포함된 표준화된 JSON 객체로 최종적으로 포맷합니다. 출력은 최대 25개의 트렌딩 리포지토리 목록(GitHub에서 표시하는 대로)으로, 데이터베이스 삽입, 알림, 다른 도구와의 통합 등 후속 작업에 사용할 준비가 되어 있습니다.

주요 기능 및 역량

  • API 없는 웹 스크래핑: 공개 HTML을 직접 스크랩하여 GitHub API 토큰의 필요성을 우회합니다.
  • 동적 데이터 추출: CSS 선택자를 사용하여 GitHub의 레이아웃이 약간 변경되어도 리포지토리 요소를 안정적으로 타겟팅합니다.
  • 구조화된 출력: 구조화되지 않은 HTML을 정규화된 필드가 있는 일관된 JSON 레코드로 변환합니다.
  • 수동 트리거: "워크플로우 테스트" 버튼을 통한 주문형 실행을 위해 설계되었으며, 예약 또는 임시 실행에 이상적입니다.
  • 텍스트 정리: 가독성과 일관성을 높이기 위해 공백 제거 및 추출된 텍스트 정리 옵션을 포함합니다.
  • URL 구성: 스크랩된 경로에서 유효한 GitHub 리포지토리 URL을 동적으로 구축합니다.

주요 노드 및 목적

  1. '워크플로우 테스트' 클릭 시 (manualTrigger)

    • 테스트 또는 실행 중에 워크플로우를 수동으로 트리거하는 진입점 역할을 합니다.
  2. Github 트렌드 요청 (httpRequest)

    • https://github.com/trending으로 HTTP GET 요청을 보내 트렌딩 페이지의 원시 HTML을 검색합니다.
  3. 상자 추출 (html 노드)

    • 전체 HTML 응답을 파싱하고 트렌딩 리포지토리의 메인 목록을 포함하는 첫 번째 <div class="Box">의 콘텐츠를 추출합니다.
  4. 모든 리포지토리 추출 (html 노드)

    • 추출된 "Box" HTML을 처리하고 returnArray: true를 사용하여 각 <article class="Box-row"> 요소(개별 리포지토리를 나타냄)를 HTML 스니펫 배열로 분리합니다.
  5. 목록으로 변환 (splitOut 노드)

    • 리포지토리 HTML 스니펫 배열을 개별 항목으로 분할하여 후속 노드에서 항목별 처리를 가능하게 합니다.
  6. 리포지토리 데이터 추출 (html 노드)

    • 각 리포지토리 HTML 스니펫에 대해 세 가지 주요 정보를 추출합니다.
      • repository: <a class="Link"> 요소의 작성자/리포 경로.
      • language: <span class="d-inline-block">의 프로그래밍 언어.
      • description: <p> 태그의 간략한 프로젝트 설명.
  7. 결과 변수 설정 (set 노드)

    • 추출된 데이터를 변환하고 풍부하게 만듭니다.
      • repository를 author와 title로 분할합니다.
      • 리포지토리 경로를 사용하여 유효한 url을 구성합니다.
      • {{$now}}를 사용하여 created_at 타임스탬프를 추가합니다.
      • 원본 description을 유지합니다.
      • includeOtherFields: "="를 통해 다른 모든 필드를 유지합니다.

사용 사례 및 이점

  • 개발자 연구: 새롭거나 떠오르는 오픈 소스 프로젝트를 빠르게 발견합니다.
  • 자동 모니터링: 경쟁 분석 또는 영감을 얻기 위해 일일 트렌드를 추적합니다.
  • 콘텐츠 집계: 트렌딩 리포지토리를 대시보드, 뉴스레터 또는 내부 도구에 공급합니다.
  • 교육 목적: n8n의 시각적 자동화를 사용하여 웹 스크래핑 기술을 배웁니다.
  • 저비용 대안: 공개 데이터에 대해 공식 GitHub API의 속도 제한 또는 인증 요구 사항을 피합니다.

단계별 워크플로우 로직

  1. 트리거: 사용자가 "워크플로우 테스트"를 클릭하여 수동 트리거를 활성화합니다.
  2. 페이지 가져오기: httpRequest 노드가 https://github.com/trending의 전체 HTML을 검색합니다.
  3. 컨테이너 분리: Extract Box 노드가 div.Box를 사용하여 기본 트렌딩 섹션을 캡처합니다.
  4. 리포지토리 카드 추출: Extract all repositories 노드가 모든 article.Box-row 요소를 선택하고 repositories 필드 아래의 HTML 문자열 배열로 반환합니다.
  5. 항목으로 분할: Turn to a list 노드가 repositories 배열을 개별 워크플로우 항목으로 변환하여 병렬 또는 순차 처리를 가능하게 합니다.
  6. 메타데이터 파싱: 각 리포지토리 항목에 대해 Extract repository data 노드가 CSS 선택자를 적용하여 다음을 추출합니다.
    • 리포지토리 경로 (예: "n8n-io/n8n")
    • 언어 배지 텍스트
    • 설명 단락
  7. 풍부화 및 표준화: Set Result Variables 노드가 다음을 수행합니다.
    • 리포지토리 경로를 author와 title로 분할합니다.
    • 클릭 가능한 GitHub URL을 구축합니다.
    • 현재 타임스탬프를 추가합니다.
    • 모든 필드를 정리하고 균일한 구조로 할당합니다.
  8. 출력: 최종 출력은 내보내기, 저장 또는 추가 자동화를 위해 준비된 구조화된 리포지토리 객체 목록입니다.

이 워크플로우는 n8n의 네이티브 HTML 파싱 및 데이터 조작 노드를 사용하여 효율적인 노코드 웹 스크래핑을 보여주며, 공개적으로 사용 가능한 GitHub 데이터에서 실행 가능한 인사이트를 제공합니다.

사용 방법: JSON을 다운로드한 뒤 n8n에서 “파일에서 가져오기”를 선택하세요.