LinkDigest - 링크를 저장하면 AI가 요약하고 매주 뉴스레터로 보내주는 서비스
스크린샷
스크린샷 4장 중 1번째
읽어야지 하고 저장해 둔 링크가 브라우저 북마크, 카톡 나에게 보내기, 메모 앱에 흩어져 있다가 결국 안 읽히는 경험, 다들 있으실 겁니다. LinkDigest는 이 문제를 "저장은 한 번의 탭으로, 정리는 AI가"라는 방식으로 해결합니다.
모바일 브라우저에서 공유 버튼을 누르면 앱 설치 없이 바로 LinkDigest에 저장됩니다(PWA Share Target). 저장된 링크는 AI가 본문을 읽고 한 줄 요약과 핵심 포인트를 뽑아 대시보드에 정리하고, 매주 한 번 그 주에 저장한 링크를 모아 이메일 뉴스레터로 보내줍니다. Slack이나 Telegram 웹훅으로 받을 수도 있습니다.(테스트 필요) 대시보드에서는 검색, 읽음/안 읽음 관리가 가능하고, 홈 화면에 PWA로 설치해 앱처럼 쓸 수 있습니다. 로그인은 Google 계정으로 가능합니다.
기술 스택
- Next.js 16(App Router), TypeScript, TailwindCSS v4·shadcn/ui
- DB: Supabase(PostgreSQL + RLS + Auth)
- 이메일 전송/ 스케줄러: Resend, Vercel, Cron 등
- 요약 모델: OpenAI·Anthropic·Google 중 선택하도록 프로바이더 추상화 계층을 추가
어떻게 만들었나요?
저장한 링크는 왜 안 읽힐까
출퇴근길에 괜찮은 글을 보면 일단 저장합니다. 그런데 저장 위치가 브라우저 북마크, 카톡, 노션, 메모 앱으로 제각각이고, 저장하는 순간 "나중에 읽을 것"이 되어 버려서 다시 열어보는 일이 거의 없었습니다.
문제를 둘로 나눠 봤습니다. 첫째, 저장이 귀찮다. 앱을 열고 붙여넣고 태그를 다는 순간 이미 안 하게 됩니다. 둘째, 저장한 뒤 아무 일도 안 일어난다. 링크는 쌓이는데 다시 꺼내볼 계기가 없습니다. 그래서 저장은 공유 버튼 한 번으로 끝내고, 저장 후에는 AI가 요약해서 매주 한 번 나에게 배달해 주는 구조를 잡았습니다.
설계: share → save → summarize → digest
파이프라인은 네 단계입니다.
- share: 모바일 브라우저 공유 시트에서 LinkDigest를 선택하면 PWA Share Target(/share)으로 URL이 넘어옵니다. 앱 설치가 필요 없다는 게 핵심입니다.
- save: Supabase PostgreSQL에 저장합니다. 모든 테이블에 RLS(Row Level Security)를 걸어 사용자별 데이터가 섞이지 않게 했습니다.
- summarize: Vercel Cron Job이 주기적으로 미처리 링크를 가져와 본문을 추출하고 LLM으로 한 줄 요약과 핵심 포인트를 만듭니다.
- digest: 매주 한 번 그 주에 저장된 링크를 모아 Resend로 이메일을 발송합니다.
요약 모델은 OpenAI·Anthropic·Google 중 어느 것이든 쓸 수 있도록 프로바이더 추상화 계층을 뒀습니다. 특정 API의 장애나 가격 변동에 서비스가 흔들리지 않게 하려는 목적이었습니다.
- 사용 도구
- Claude Code