본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 05. 29. 03:24

LLM에 가공되지 않은 HTML을 입력하는 것은 토큰 세금입니다. 10개의 실제 페이지를 측정해 본 결과 중앙값 7.4배, 그리고 모든 정기

요약

LLM에 가공되지 않은 HTML을 직접 입력할 때 발생하는 토큰 낭비 문제를 실측 데이터로 분석합니다. 10개의 실제 웹 페이지를 대상으로 측정한 결과, HTML 대비 텍스트 추출 시 토큰 사용량이 중앙값 7.4배 절감됨을 확인했습니다.

핵심 포인트

  • Raw HTML 입력은 막대한 토큰 비용을 발생시키는 '토큰 세금'임
  • HTML을 마크다운이나 텍스트로 변환 시 토큰 효율성이 극대화됨
  • 실제 측정 결과 중앙값 7.4배의 토큰 절감 효과 확인
  • 반복적인 스크래핑 작업 시 비용 차이는 누적되어 큰 부담이 됨

현재 여러분에게 똑같은 말을 하는 게시물들이 파도처럼 밀려오고 있습니다. LLM에 가공되지 않은 HTML (Raw HTML)을 그대로 입력하지 말고, 먼저 마크다운 (Markdown)으로 변환하세요. 그것이 토큰 효율성 (Token-efficient)이 더 높습니다. AlterLab에는 이와 관련된 글이 다섯 개나 있습니다. "가공되지 않은 HTML은 LLM 컨텍스트가 죽으러 가는 곳이다"라는 유명한 글도 있습니다. searchcans라는 블로그는 HTML을 마크다운으로 변환하면 토큰을 "20-30%" 절감할 수 있다고 말합니다.

저는 그 글들을 대부분 읽어보았습니다. 그리고 여기서 저를 짜증 나게 만든 점이 있습니다.

재현 가능한 수치를 보여주는 글이 단 하나도 없었습니다. "더 효율적이다" — 얼마나 더? "우리의 벤치마크 (Benchmarks)에 따르면" — 어떤 벤치마크, 어떤 페이지, 어떤 토크나이저 (Tokenizer)? searchcans는 20-30%라고 말합니다. "컨텍스트가 죽으러 가는 곳"이라는 글은 측정값이 아니라 분위기 (Vibe)일 뿐입니다. AlterLab의 글들은 마크다운이 승리한다고 말한 뒤 관리형 추출 API (Managed extraction API)를 판매합니다. 그들 중 누구도 스크립트를 건네주며 _"당신의 페이지에서 직접 실행해 보세요"_라고 말하지 않습니다.

그래서 저는 지루한 일을 하기로 했습니다. 30줄짜리 측정기를 작성하여, 10개의 실제 공개 페이지를 대상으로 토큰을 세었습니다. 가공되지 않은 HTML (Raw HTML) 대 실제로 원했던 텍스트를 비교했습니다. 중앙값 배수는 7.4배였습니다. 편차는 엄청났습니다 — 군더더기를 제거한 테스트 페이지의 1.1배부터 뉴스 홈페이지의 47.8배까지 다양했습니다. 그리고 아무도 말하지 않는 부분은 이것입니다: 그 배수는 단 한 번만 발생하는 것이 아닙니다. 모든 정기 실행 (Scheduled run)마다 발생합니다.

저는 2,190회의 프로덕션 스크래퍼 (Production scraper) 실행 경험이 있습니다. 따라서 저에게 이것은 추상적인 개념이 아닙니다. 반복되는 작업에 붙는 배수는 반복되는 청구서입니다.

전체 과정을 보여드리겠습니다. 코드, 숫자, 수학, 그리고 "그냥 마크다운을 사용하세요"라는 말이 절반만 사실인 단 한 가지 지점까지 말입니다.

측정기 (복사해서 당신의 페이지에 실행해 보세요)

마법은 없습니다. 가져오기(Fetch)를 위한 requests, 텍스트를 추출하기 위한 BeautifulSoup, 그리고 세기 위한 tiktoken을 사용합니다. 중요한 유일한 점은 비율이 정직하도록 양쪽 모두에 _동일한 인코더 (Encoder)_를 사용하여 토큰을 세어야 한다는 것입니다.

#!/usr/bin/env python3
# 토큰 비용 측정기: 가공되지 않은 HTML 대 추출된 텍스트, 토큰 단위.
# stdlib + requests + bs4 + tiktoken. cl100k_base (GPT-4o 시대의 토크나이저).
...

그게 전부입니다. 30여 줄에 불과합니다. 여러분의 URL로 교체하기만 하면 5분 안에 직접 수치를 얻을 수 있으며, 이는 "Markdown이 HTML보다 낫다"라고 주장하는 그 어떤 포스트보다 더 실질적인 정보를 제공할 것입니다.

실제 결과값

다음은 제 실행 결과의 가공되지 않은 출력값입니다. 제가 실행한 날(2026-05-28)에 이 10개의 URL은 모두 HTTP 200을 반환했으며, 하나도 누락되지 않았습니다.

url                                                  tok_raw  tok_text   mult
https://en.wikipedia.org/wiki/Web_scraping             48975      6658    7.4
https://docs.python.org/3/library/json.html            32245      6271    5.1
...

중앙값(Median)은 7.4배입니다. 따라서 제가 지지하는 헤드라인 수치는 다음과 같습니다: 모델에 가공되지 않은 HTML (raw HTML)을 입력하는 것은 일반적인 페이지 기준으로 추출된 텍스트를 입력할 때보다 약 7배의 비용이 듭니다.

하지만 솔직히 말해서, 중앙값은 저 표에서 가장 흥미롭지 않은 수치입니다. 편차(spread)를 보십시오.

httpbin.org/html 페이지는 1.1배입니다. 이는 의도적으로 최소화된 테스트 페이지로, 거의 모든 것이 텍스트이며 마크업 (markup)은 거의 없습니다. 위키피디아(Wikipedia) 문서는 중앙값인 7.4배입니다. 그리고 BBC 뉴스 홈 페이지는 47.8배에 달합니다. 무려 47배입니다. 해당 페이지는 2,356개의 텍스트 토큰을 112,721개의 HTML 토큰이 감싸고 있습니다. 모델에 전송하게 될 내용의 98%는 스크립트 (scripts), 인라인 JSON 상태 블롭 (inline JSON state blobs), 트래킹 (tracking), 네비게이션 (navigation), 그리고 모든 카드에 찍혀 있는 동일한 보일러플레이트 (boilerplate)와 같은 구조물 (scaffolding)입니다.

따라서 누군가 "HTML은 대략 N배 더 많은 토큰을 사용한다"라고 말한다면, 정직한 답변은 다음과 같습니다: N은 여러분이 무엇을 스크래핑 (scraping) 하느냐에 전적으로 달려 있습니다. 깔끔한 문서 페이지인가요? 아마 3~5배 정도일 것입니다. 현대적이고 광고가 많으며 JavaScript 상태가 덤프된 뉴스나 이커머스 페이지인가요? 그렇다면 쉽게 두 자릿수 배율이 나옵니다. 단 하나의 수치를 신뢰하지 마십시오. 특히 제 수치를 신뢰하지 마십시오. 여러분이 실제로 스크래핑하는 페이지로 직접 측정하십시오. 그것이 이 작업의 핵심입니다.

제가 미리 솔직하게 말씀드리고 싶은 주의 사항이 하나 있습니다. 벤더(vendor)들이 게시물을 올릴 때 대충 얼버무리는 부분이기 때문입니다. 저는 GPT-4o 시대의 토크나이저(tokenizer)인 cl100k_base를 기준으로 계산했습니다. 최신 모델(GPT-5.x 제품군)은 다른 인코더(encoder)를 사용합니다. 그렇다면 배수가 달라질까요? 거의 그렇지 않습니다. 왜냐하면 배수는 _비율 (ratio)_이며, 분자(HTML)와 분모(텍스트) 모두 동일한 토크나이저에 의해 인코딩되기 때문입니다. 인코더를 바꾸면 양쪽 모두가 함께 이동합니다. 절대적인 토큰 수는 변하겠지만, 비율은 거의 변하지 않습니다. 토크나이저에 따라 ±15% 정도 차이가 날 것으로 보이지만, 솔직히 말씀드리면 이를 직접 비교하여 증명하기 위해 제 환경에 o200k_base를 로드할 수는 없었습니다. 따라서 ±15%는 측정값이 아닌 저의 추정치로 간주해 주십시오.

"마크다운을 사용하라"는 사람들이 건너뛰는 부분

이 지점이 바로 이 흐름 전체가 절반만 맞히고 멈춰 서 있는 부분이라고 생각합니다.

그들의 주장은 "HTML을 마크다운(markdown)으로 변환하면 토큰이 줄어듭니다"입니다. 맞는 말입니다. 하지만 이는 어려운 부분이 _형식 (format)_인 것처럼 은연중에 암시합니다. 그렇지 않습니다. 어려운 부분은 _무엇을 남기느냐_입니다.

그래서 저는 두 번째 측정을 수행했습니다. 동일한 페이지를 대상으로 하되, 이번에는 텍스트를 추출하기 _전_에 명백한 보일러플레이트(boilerplate) 태그들 — script, style, nav, header, footer, aside, noscript, svg, form — 를 제거했습니다.

BOILER = ["script", "style", "nav", "header",
          "footer", "aside", "noscript", "svg", "form"]
soup = BeautifulSoup(raw, "html.parser")
...

결과는 다음과 같습니다:

page                         get_text()   + drop boilerplate
wikipedia /Web_scraping       6,658 tok    6,234 tok   (-6%)
bbc.com/news                  2,356 tok    1,607 tok   (-32%)
...

MDN 문서 페이지의 경우, 단순한 텍스트 추출 방식은 42%의 추가 토큰을 낭비하게 만들었습니다. HTML을 이미 버린 _후_에도 42%나 남았던 것입니다. 태그를 제거한 후에도 살아남는 보일러플레이트가 바로 비용이 많이 드는 부분입니다. BBC 홈페이지에서는 또 다른 32%가 사라졌습니다.

그 부분은 마크다운 (Markdown) 관련 게시물들이 언급하지 않는 내용인데, 왜냐하면 그것이 판매 전략을 복잡하게 만들기 때문입니다. "그냥 마크다운으로 변환하세요"라고 하면 7배의 이득을 얻는 것처럼 보입니다. 하지만 나머지를 처리하는 과정은 당신의 페이지에서 무엇을 콘텐츠로 간주할지 결정하는 문제이며, 이는 어떤 관리형 API도 당신을 위해 완벽하게 대신해 줄 수 없는 사이트별 특화 작업입니다. 형식 (Format) 자체가 어려운 문제는 아니었습니다. 판단 (Judgment)이 어려운 문제입니다.

이제 이를 모든 실행 횟수에 곱해보세요

단순히 호기심으로 한 번 실행해 보는 사람보다 제가 왜 이 문제에 더 신경을 쓰는지 말씀드리겠습니다.

단일 페이지에서의 배수는 반올림 오차 수준에 불과합니다. 당신은 '몇 천 토큰 정도인데 누가 신경 쓰겠어'라고 생각할 것입니다. 저 또한 스크래퍼 (Scraper)가 1년 동안 정기적으로 실행되는 것을 보기 전까지는 정확히 그렇게 생각했을 것입니다.

저는 Apify에 게시된 32개의 액터 (Actors)를 통해 2,190회의 실행을 수행했습니다. 이는 제 대시보드에서 직접 추출한 생생한 누적 수치입니다 (apify.com/knotless_cadence, 2026년 5월 기준, 샘플이 아님). 제가 사용하는 Trustpilot 리뷰 스크래퍼 하나만 해도 962회의 실행을 기록했습니다. 프로덕션 환경의 스크래핑에 대해 아무도 경고해주지 않는 사실은 이것입니다: 작업은 첫 번째 실행이 아닙니다. 내일도, 모레도, 그다음 날에도 똑같은 작업이 다시 실행된다는 점입니다. 예약된 스크래퍼는 복리로 쌓이는 세금과 같습니다.

그럼 중앙값인 7.4배와 실제 가격을 사용하여 산술 계산을 해봅시다.

적당한 규모의 파이프라인을 가정해 보겠습니다: 실행당 500페이지, 하루에 1회 실행. 추출된 텍스트가 페이지당 약 4,000토큰이라고 가정합니다 (제 실행 결과의 텍스트 크기 중앙값에 근접함). 7.4배를 적용하면, 가공되지 않은 HTML은 약 29,600토큰입니다. 즉, 텍스트 대신 HTML을 입력값으로 넣는다면 페이지당 약 25,600개의 낭비되는 토큰을 전송하게 됩니다.

  • 25,600 낭비되는 토큰/페이지 × 500페이지 × 30회 실행 = 한 달에 3억 8,400만 개의 낭비되는 입력 토큰.

이제 가격을 매겨보겠습니다. OpenAI의 API 가격 페이지 (developers.openai.com/api/docs/pricing, 2026-05-28 조회 — 참고: GPT-4o는 더 이상 목록에 없으며, 현재 라인업은 GPT-5.x 제품군입니다)에 따르면, 입력 토큰 가격은 다음과 같습니다: gpt-5.4는 1M(백만) 토큰당 $2.50, gpt-5.4-mini는 1M 토큰당 $0.75, gpt-5.4-nano는 1M 토큰당 $0.20입니다. (가격은 변동될 수 있으니, 인용하기 전에 다시 확인하십시오.)

  • gpt-5.4: 384M × $2.50/1M = 월 $960 마크업으로 낭비됨 = 연간 약 $11,500.
  • gpt-5.4-mini: 월 $288 = 연간 약 $3,460.
  • gpt-5.4-nano: 월 $77 = 연간 약 $922.

그리고 제가 주장하지 않는 부분에 대해 명확히 하자면: 이것은 오직 토큰 (token) 비용만을 의미합니다. 스크래퍼 (scraper) 실행에 드는 컴퓨팅 (compute) 비용이나 스토리지 (storage) 비용이 얼마인지 말씀드리는 것이 아닙니다. 제가 증명할 수 없는 인프라 (infrastructure) 수치를 지어내지는 않을 것입니다. 배수는 측정된 것이고, 가격은 공개되어 있습니다. 실행당 페이지 수와 월간 실행 횟수는 여러분이 직접 대입해 보시면 됩니다. 저는 여러분의 청구서에 대한 판결이 아니라 계산기를 드린 것입니다.

하지만 그 형태를 주목하십시오. 페이지당 낭비되는 비용 — gpt-5.4 기준 $0.06 — 은 아무것도 아닌 것처럼 느껴집니다. 하지만 여러분의 실제 볼륨과 실제 일정에 곱해보면 그것은 연봉 수준이 됩니다. 그것이 바로 "토큰 카운터를 한 번 돌려봤다"와 "프로덕션 (production) 환경에서 스크래퍼를 운영한다" 사이의 격차입니다. 일회성 배수는 사소한 정보일 뿐입니다. 크론 스케줄 (cron schedule) 상의 배수는 예산입니다.

내가 실제로 할 일

프레임워크 (framework)도, 관리형 API (managed API)도 아닙니다. 세 가지 습관입니다.

토큰화 (tokenize)한 후가 아니라, 하기 전에 제거하십시오. 가공되지 않은 HTML에 get_text()를 사용하는 것은 게으른 기본 설정이며, 페이지에 따라 6~42%의 효율을 놓치게 만듭니다. script/style/nav/footer를 먼저 제거하십시오. 단 네 줄이면 됩니다.

누군가의 블로그 주장이 아니라, 여러분 자신의 페이지를 측정하십시오. 저의 중앙값은 7.4배입니다. 여러분은 깨끗한 문서 (docs)를 스크래핑하느냐, 아니면 비대해진 SPA (Single Page Application)를 스크래핑하느냐에 따라 3배가 될 수도, 30배가 될 수도 있습니다. 측정기는 바로 거기에 있습니다. 5분만 투자하십시오.

페이지가 아니라 일정을 주시하십시오. 중요한 결정은 "이 페이지 하나에 HTML을 쓸 것인가, 마크다운 (markdown)을 쓸 것인가"가 아닙니다. "내가 모델에 무엇을 보내는가, 여기에 몇 페이지를 곱하는가, 그리고 몇 번의 실행을 곱하는가"입니다. 반복되는 것을 최적화하십시오.

저는 머릿속에 있는 헤드라인을 확인하기 위해 깔끔하게 10배 정도 나올 것을 예상하고 측정기를 돌렸습니다. 결과는 중앙값 7.4배였고, 중앙값보다 더 많은 것을 가르쳐준 47.8배의 이상치 (outlier)가 나왔습니다. 숫자가 교훈은 아닙니다. 수치의 분포 (spread)가 교훈입니다. 그리고 여러분의 숫자가 무엇이든 간에, 여러분은 매일 밤 그 비용을 다시 지불하게 된다는 사실입니다.

Alexey Spinov 작성. 저는 프로덕션 스크래퍼 (production scrapers)를 운영하고 있습니다. 32개의 액터 (actors)를 통해 평생 2,190회의 실행을 수행했으며, 그중 962회는 Trustpilot 스크래퍼 (apify.com/knotless_cadence)를 사용했습니다. 이 포스트의 측정값과 두 가지 측정 방식은 2026-05-28에 라이브로 실행되었습니다. 모든 URL은 200 응답을 반환했으며, 출력 블록은 정제되지 않은 채 실행 결과에서 그대로 복사되었습니다.

공개 사항: 이 글은 AI 글쓰기 어시스턴트 (AI writing assistant)의 도움을 받아 초안을 작성했습니다. 코드, 측정값, 그리고 수치들은 제가 직접 실제 페이지에서 실행한 것이며, 생성된 것이 아닙니다.

대부분이 HTML 마크업 (HTML markup)인 LLM 비용을 지불하고 계시나요, 아니면 조용히 복리로 쌓여가는 스케줄 기반의 스크래퍼 (scraper)를 실행하고 계시나요? 저는 2,190회의 실행을 프로덕션 환경에서 수행했으며, 모델에 도달하기 전에 토큰 (tokens)을 계산합니다. 구조물 (scaffolding) 대신 깨끗한 텍스트를 전달하는 스크래핑-LLM 파이프라인 (scraping-to-LLM pipeline)을 원하신다면, 무엇을 스크래핑하고 있는지 알려주세요. 범위를 산정해 드리겠습니다 — spinov001@gmail.com.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0