글쓴이: 작두뉴스 운영자 / 기록일: 2026년 8월 25일

기사 화면의 검색용 구조 자료가 두 번 들어가는 문제를 확인했다. 같은 기사를 설명하는 JSON-LD 태그가 중복되어 있었다. 처음에는 생성 코드를 전용 구성요소로 분리하면 한 곳에서만 나올 것이라고 판단했다.

코드를 정리하고 다시 배포했다. 소스만 보면 중복 경로가 줄어든 것처럼 보였다. 하지만 새 탭에서 실제 기사 HTML을 확인하니 태그는 여전히 두 개였다. 중간 해결책에 대한 설명과 운영 결과가 서로 달랐다.

여기서 한 번 더 추측해 다른 위치를 고칠 수도 있었다. 하지만 구조 자료는 기사 화면과 검색 제목을 보여 주는 데 반드시 필요한 기능은 아니었다. 중복 상태를 오래 유지하는 것보다 보조 기능을 걷어내고 기본 정보의 정합성을 지키는 편을 선택했다.

제거 뒤에는 기사 제목, 설명, 정규 주소가 그대로 남아 있는지 확인했다. 화면 본문과 공유 미리보기에도 문제가 없는지 봤다. 하나를 없앴다는 사실보다 필요한 기능이 유지됐다는 확인이 중요했다.

이번 일에서 가장 큰 실수는 '전용 구성요소로 분리했다'는 코드 구조를 곧 결과라고 생각한 것이었다. 실제 화면에서는 다른 경로가 같은 태그를 만들고 있을 수 있다. 프레임워크의 자동 처리나 상위 레이아웃도 최종 HTML에 영향을 준다.

검색 관련 수정은 브라우저 화면만 봐서는 알기 어렵다. 원문 HTML에서 같은 종류의 태그가 몇 개인지 세어야 한다. 새로고침한 한 탭뿐 아니라 캐시 영향을 줄인 새 요청으로 확인하는 편이 안전하다.

중복을 무조건 큰 사고라고 과장하지도 않았다. 검색엔진이 어떻게 처리할지 단정하기보다, 사이트가 같은 기사 정보를 두 번 내보내고 있다는 확인된 사실만 문제로 삼았다. 조치 목적은 경고를 피하는 것이 아니라 한 기사에 한 설명을 유지하는 것이었다.

기능을 제거하는 결정에는 기준이 필요했다. 사용자 화면에 필수인지, 기본 검색 정보로 대체되는지, 중복 원인을 찾는 동안 잘못된 상태가 지속되는지, 제거 뒤 되돌릴 수 있는지를 따졌다. 이번 구조 자료는 제거해도 기사 접근과 제목·설명에 영향이 없었다.

소스 주석에도 실패한 중간 시도를 성공처럼 남기지 않았다. 구성요소 분리는 중복을 해결하지 못했고, 실제 해결은 보조 태그 제거였다. 다음 작업자가 주석만 보고 이미 해결된 경로를 다시 믿지 않게 하기 위해서다.

이 경험은 다른 표시 오류에도 적용된다. 코드에서 한 번 렌더한다고 생각해도 최종 화면에 두 번 나올 수 있다. 반대로 코드가 두 경로에 있어도 조건에 따라 한 번만 나올 수 있다. 최종 결과를 세지 않고 구조만 읽어서는 확정할 수 없다.

운영 검증 순서는 단순하게 바꿨다. 서로 다른 기사 두 편의 HTML을 새로 받는다. 구조 자료 개수를 센다. 제목과 정규 주소가 해당 기사와 맞는지 본다. 제거한 기능 때문에 다른 기본 정보가 사라지지 않았는지 확인한다.

오늘은 애써 만든 구성요소를 유지하는 것보다 사이트가 실제로 내보내는 내용을 단순하게 만드는 쪽을 골랐다. 기능을 추가한 시간이 아깝다는 이유로 중복 상태를 남길 수는 없었다.

결국 믿을 것은 해결 방법을 설명하는 문장이 아니라 운영 화면의 최종 HTML이었다. 소스가 깔끔해 보이는 것과 결과가 하나인 것은 다르다. 다음 수정에서도 중간 구조보다 방문자와 검색 도구가 실제로 받는 결과를 먼저 확인할 생각이다.