TECH 으로 돌아가기
TECH HACKER NEWS 오늘 6분 읽기 26 READS

터미널에서 curl로 읽는 웹사이트, 어떻게 만드는가

웹 브라우저가 아니라 터미널에서 curl example.com 명령 한 줄로 읽을 수 있는 웹사이트가 있다. 색상과 서식이 입혀진 텍스트가 셸 화면에 그대로 출력되는 방식이다. 한 개발자가 자신의 블로그를 이런 '커스텀 터미널 버전'으로 제공한 경험을 정리하면서, 생각보다 많은 사람이 구현 방법을 궁금해했다고 전했다. 화려한 기능이 아니라 소소한 장난에 가깝지만, 웹 서버 설정과 ANSI 이스케이프 코드를 평소와 다른 방식으로 엮는다는 점에서 실무자에게도 들여다볼 만한 구석이 있다.

이 아이디어 자체는 새로운 것은 아니다. trinkey(curl trinkey.com)와 strongsand(curl proot.party)가 먼저 비슷한 사이트를 운영했고, 글쓴이는 이들에게서 영감을 받았다고 분명히 밝혔다. 다만 두 사이트의 curl 버전은 2026년 10월 14일 기준으로 모두 동작하지 않는 상태다. 또 한 가지 전제 조건이 있다. 윈도우 사용자는 기본값 그대로는 제대로 보기 어렵다. cmd.exe는 ANSI 이스케이프 코드가 기본으로 비활성화돼 있고, 파워셸은 curl을 Invoke-WebRequest의 별칭으로 처리하기 때문에 curl.exe를 명시적으로 호출해야 한다.

핵심은 ANSI 마크업 문서 생성

가장 흥미로운 부분은 클라이언트에 보낼 ANSI 서식 문서를 어떻게 만드느냐다. 글쓴이는 인덱스 페이지와 소개 페이지를 전부 손으로 작성했다. 앞서 언급한 두 사이트가 ratatui 같은 라이브러리로 실시간 생성하는 방식을 쓰는 것으로 추정되는 것과 대비된다. 수작업 방식은 라이브러리 방식보다 편의성은 떨어지지만, 페이지가 몇 개뿐이라면 오히려 더 빠른 선택일 수 있다.

방법은 단순하다. 핵심 이스케이프 코드인 ESC[(즉 \x1b[)를 Vim 레지스터에 담아 두고 필요할 때 붙여 넣으며, 그래픽 코드 종류는 위키백과 문서를 참고해 작성했다. 여기에 자신이 이미 운영하던 Gopher 버전 페이지를 레이아웃 기준으로 삼아 일관된 스타일을 실험적으로 다듬었다. 특별한 도구나 복잡한 파이프라인이 동원된 것은 아니다.

왜 '쉽다'고 말하기 어려운가

이 사례에서 눈에 띄는 점은 한두 페이지가 아니라 블로그 전체가 curl 버전으로 제공된다는 것이다. 이는 우연한 사전 작업 덕분이다. 4년도 더 전에 글쓴이는 자신이 쓰는 커스텀 마크업 언어 'Gemroff'에 ANSI 서식 평문 출력 기능을 넣어 두었다. 원래는 글을 쓰면서 터미널에서 초안을 미리 보려는 용도였는데, 이를 정적 사이트 생성기(SSG)에 연결하자 곧바로 모든 글의 curl 버전이 만들어졌다. 블로그 글용 래퍼 템플릿과 글 목록 인덱스 템플릿을 직접 작성하고, SSG에 몇 줄을 더한 것이 전부였다.

바로 이 지점이 '쉽다'고 단정하기 어려운 이유다. 글쓴이에게 쉬웠던 것은 그가 완전히 직접 만든 마크업 언어와 SSG를 쓰고 있었고, 수년 전에 적절한 설계 선택을 해둔 덕분이다. 그의 SSG는 애초에 사이트를 HTTP·Gemini·Gopher 세 방식으로 동시에 호스팅하기 위해 HTML 하나만이 아니라 여러 출력 형식을 모듈처럼 지원하도록 만들어져 있었다. 일반적인 SSG를 쓰는 환경에서는 같은 결과를 이렇게 적은 노력으로 얻기 어렵다. 다만 글쓴이도 지적하듯, 이건 몇 분 둘러보고 마는 재미용 장치이므로 손으로 쓴 페이지 몇 개만 제공해도 충분히 성립한다.

마지막 단계는 curl을 포함한 사용자 에이전트에게 터미널용 버전을 내보내는 것이다. 글쓴이는 Nginx 설정을 몇 줄 고치는 것으로 해결했고, 다른 서버에서도 비슷한 수준일 것이라고 봤다. 이때 그가 신경 쓴 기능은 두 가지다. 하나는 X-Original: true 같은 재정의 헤더를 두어, 평범하게 curl을 돌린 사용자가 원하는 가공되지 않은 HTTP 응답도 받을 수 있게 한 것이고, 다른 하나는 모든 것을 여전히 정적으로 서빙하도록 유지한 것이다.

정리하면 이 기법은 실용적 가치보다는 '웹 서버와 터미널을 잇는 틈새 발상'에 가깝다. 다만 콘텐츠 출력 형식을 HTML 하나로 못 박지 않고 여러 형식으로 모듈화해 두는 설계가 나중에 어떤 재미와 확장성을 열어주는지 보여주는 사례이기도 하다. 사내 문서나 CLI 친화적인 서비스에서 터미널 접근성을 고민한다면, 조건부 응답 헤더와 정적 서빙을 조합하는 이 단순한 패턴이 참고점이 될 수 있다.

SOURCE · HACKER NEWS
원문 전체 보기 → https://nytpu.com/gemlog/2026-03-18
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...