원문 캡처 · github.com
원문 캡처 · github.com

HN Comments Counter는 Chrome·Firefox용 브라우저 확장 프로그램이다. The Old Reader RSS 피드에 있는 Hacker News 링크 옆에 댓글 수를 표시하고, 설정에 따라 상위 댓글도 피드에서 보여준다.

스크린샷

이 확장 프로그램은 The Old Reader에서 Hacker News를 읽을 때 댓글 수와 토론 맥락을 함께 확인하려는 이용자를 위한 도구다. 제작자는 공식 Hacker News API에서 댓글 수를 가져와 주황색 배지로 표시하고, 점수가 높은 댓글을 최대 10개까지 피드에 보여준다고 설명한다. 표시할 댓글 수는 0~10개로 설정할 수 있으며, 0으로 설정하면 댓글 수만 표시한다. 기본값은 댓글 3개다.

확장 프로그램은 The Old Reader에서 news.ycombinator.com/item?id=... 형식의 Hacker News 링크를 찾아 공식 HN Firebase API에서 댓글 수를 가져온다. 댓글 표시가 켜져 있으면 점수순으로 상위 댓글을 불러온다. 스크롤 중 새 게시물이 로드되는지도 감지하며, 이미 처리한 링크는 중복 처리하지 않는다. 댓글은 활동량과 최신성도 고려해 정렬하고, HTML을 제거한 뒤 읽기 쉽게 텍스트를 줄인다.

설정은 브라우저의 확장 프로그램 메뉴에서 변경할 수 있으며, 설정 변경은 열려 있는 탭에 즉시 적용된다. 제작자 설명에 따르면 확장 프로그램은 메모리에 API 응답을 10분간 캐시하고, 배지를 먼저 표시한 뒤 댓글을 불러온다. 스토리 데이터와 댓글은 각각 5개씩 묶어 병렬로 가져오며, 스크롤 감지에는 디바운스를 적용한다. 스토리별로 분석하는 댓글은 처음 10개뿐이고, 표시하는 댓글 텍스트는 최대 300자로 제한한다. 디버그 로그는 기본적으로 꺼져 있다.

Chrome용 확장 프로그램은 make chrome을 실행하거나 릴리스를 내려받아 준비한다. Chrome에서 chrome://extensions/를 열고 오른쪽 위의 개발자 모드를 켠 다음, ‘압축해제된 확장 프로그램을 로드’를 선택해 dist/chrome/ 폴더를 지정한다. 내려받은 ZIP 파일을 압축 해제해 선택할 수도 있다.

Firefox용은 make firefox를 실행하거나 릴리스를 내려받는다. Firefox에서 about:debugging#/runtime/this-firefox를 열고 ‘임시 부가 기능 불러오기’를 선택한 뒤 dist/firefox/ 안의 manifest.json을 지정한다. ZIP 파일도 선택할 수 있다.

확장 프로그램을 설치하지 않으려면 저장소의 bookmarklet.js 코드를 복사해 브라우저 북마크의 URL로 붙여 넣는다. 북마크 이름은 예를 들어 ‘HN Counter’로 지정한다. The Old Reader에 접속한 뒤 해당 북마크를 클릭하면 작동한다.

빌드에는 make와 zip이 필요하다.

text
make all # Build both Chrome and Firefox extensions
make chrome # Build Chrome extension only
make firefox # Build Firefox extension only
make clean # Remove build artifacts

빌드 결과물은 Chrome·Firefox용 ZIP 패키지인 dist/hn-comments-chrome.zip, dist/hn-comments-firefox.zip과 압축을 풀어 놓은 dist/chrome/, dist/firefox/ 디렉터리다.

기술 구성은 Chrome의 Manifest V3와 Firefox의 Manifest V2, 브라우저 간 호환을 위한 경량 API 폴리필, 공식 Hacker News Firebase API, 동적 콘텐츠 감지를 위한 MutationObserver, Promise 기반 async/await다. 공개 API를 사용하며 인증은 필요하지 않다. 제작자는 서비스에 부담을 주지 않도록 요청 빈도를 제한한다고 설명한다.

개인정보와 관련해 제작자는 확장 프로그램이 theoldreader.com에서만 실행되고 공식 HN API에만 요청을 보내며, 댓글 수 표시 설정만 로컬에 저장한다고 밝혔다. 데이터 수집이나 추적, 외부 서비스 이용은 없다고 설명한다. 라이선스는 MIT다.