메뉴
HN
Hacker News 48일 전

AI 기반 X(트위터) 피드 필터링 확장 프로그램 'Bouncer'

IMP
5/10
핵심 요약

원하지 않는 게시물을 자연어로 차단할 수 있는 브라우저 확장 프로그램 및 iOS 앱입니다. 사용자가 '암호화폐', '참여 유도성 글', '분노 정치' 등 필터 주제를 일상 언어로 입력하면 다양한 AI 모델이 게시물을 분류해 실시간으로 숨겨줍니다. 로컬 모델 실행부터 클라우드 API 연동까지 지원하며 이미지 기반 필터링과 차단 사유 투명성 제공이 특징입니다.

번역된 본문

Bouncer: 당신의 피드를 치유하세요.

Bouncer는 AI를 사용하여 Twitter/X 피드에서 원하지 않는 게시물을 필터링하는 브라우저 확장 프로그램입니다. 자연어로 필터 주제를 정의하세요 — '암호화폐', '참여 유도성 글', '분노 정치' — 그러면 Bouncer가 게시물을 분류하고 일치하는 게시물을 실시간으로 숨깁니다.

Chrome 웹 스토어에서 설치 | iOS에서 설치

특징:

  • 자연어 필터 — 보고 싶지 않은 것을 당신의 말로 설명하세요
  • 다중 AI 백엔드 — GPU에서 로컬로 모델을 실행하거나 클라우드 API(OpenAI, Google Gemini, Anthropic, OpenRouter)를 사용하세요
  • 온디바이스 추론 — WebLLM을 통한 로컬 모델은 브라우저에서 완전히 실행되며 외부로 데이터가 전송되지 않습니다
  • 이미지 인식 필터링 — 멀티모달 모델은 텍스트뿐만 아니라 이미지를 기반으로 게시물을 분류할 수 있습니다
  • 추론 투명성 — 각 게시물이 필터링된 이유를 정확히 확인하세요
  • 테마 인식 UI — 라이트, 흐림, 다크 모드에 자동으로 적응합니다

지원 모델:

제공자 모델 필요 사항
로컬 (WebGPU) Qwen3-4B, Qwen3.5-4B, Qwen3.5-4B Vision WebGPU 지원 브라우저
OpenAI GPT-5 Nano, gpt-oss-20b API 키
Google Gemini 2.5 Flash Lite, 2.5 Flash, 3 Flash Preview API 키
Anthropic Claude Haiku 4.5 API 키
OpenRouter Nemotron Nano 12B VL (무료), Ministral 3B 계정
Imbue 기본 백엔드 없음 (내장)

로컬 모델은 한 번 다운로드되어 브라우저의 Cache Storage에 캐시됩니다.

빠른 시작:

Chrome / Edge (웹 스토어) Chrome 웹 스토어에서 Bouncer를 설치하세요.

Chrome / Edge (소스에서) cd Bouncer npm install npm run build chrome://extensions 열기 개발자 모드 활성화 '압축해제된 확장 프로그램 로드' 클릭 후 Bouncer/ 폴더 선택 twitter.com / x.com으로 이동 Bouncer 요소에서 '설정' 클릭 후 선호하는 제공자 API 키 추가 (또는 로컬 모델 활성화) 및 드롭다운에서 선호하는 모델 선택

iOS App Store에서 설치

작동 방식:

  1. MutationObserver가 Twitter 피드에서 새 게시물을 감시합니다
  2. Twitter 어댑터를 통해 게시물 텍스트, 이미지, 메타데이터가 추출됩니다
  3. 게시물이 대기열에 추가되어 선택한 AI 모델로 필터 주제에 대한 분류를 위해 전송됩니다
  4. 모델이 각 게시물에 대한 카테고리 일치 여부와 추론 이유를 반환합니다
  5. 일치하는 게시물은 페이드아웃 애니메이션으로 숨겨지고 필터링된 게시물 목록에 추가됩니다
  6. '필터링된 게시물 보기'를 클릭하여 숨겨진 게시물을 검토하고 각각이 필터링된 이유를 확인합니다
  7. 결과가 캐시되어 게시물을 다시 만나도 또 다른 추론 호출이 필요하지 않습니다.
원문 보기
원문 보기 (영어)
Bouncer Heal your feed. Bouncer is a browser extension that uses AI to filter unwanted posts from your Twitter/X feed. Define filter topics in plain language — "crypto", "engagement bait", "rage politics" — and Bouncer classifies and hides matching posts in real time. Install from the Chrome Web Store Install on iOS Features Natural language filters — describe what you don't want to see in your own words Multiple AI backends — run models locally on your GPU, or use cloud APIs (OpenAI, Google Gemini, Anthropic, OpenRouter) On-device inference — local models via WebLLM run entirely in your browser with zero data sent externally Image-aware filtering — multimodal models can classify posts based on images, not just text Reasoning transparency — see exactly why each post was filtered Theme-aware UI — adapts to light, dim, and dark modes automatically Supported Models Provider Models Requires Local (WebGPU) Qwen3-4B, Qwen3.5-4B, Qwen3.5-4B Vision WebGPU-capable browser OpenAI GPT-5 Nano, gpt-oss-20b API key Google Gemini 2.5 Flash Lite, 2.5 Flash, 3 Flash Preview API key Anthropic Claude Haiku 4.5 API key OpenRouter Nemotron Nano 12B VL (free), Ministral 3B Account Imbue Default backend None (built-in) Local models are downloaded once and cached in the browser's Cache Storage. Quick Start Chrome / Edge (Web Store) Install Bouncer from the Chrome Web Store. Chrome / Edge (from source) cd Bouncer npm install npm run build Open chrome://extensions Enable Developer mode Click Load unpacked and select the Bouncer/ folder Navigate to twitter.com / x.com Click "Settings" in the Bouncer element and add your preferred provider API key (or enable local models) and select your preferred model from the dropdown. iOS Install from the App Store How It Works A MutationObserver watches the Twitter feed for new posts Post text, images, and metadata are extracted via the Twitter adapter Posts are queued and sent to the selected AI model for classification against your filter topics The model returns a category match and reasoning for each post Matching posts are hidden with a fade-out animation and added to your filtered posts list Click View filtered to review hidden posts and see why each was filtered Results are cached so re-encountering a post doesn't require another inference call.