인사이트 첫 글을 올리고 주소를 열어 봤습니다. 사이트에서는 잘 보였습니다. 그런데 검색창에서 제목을 찾아보니 나오지 않았습니다.
처음에는 무언가 잘못됐다고 생각했습니다. 조금 지나서야 사이트에 글을 올리는 일과 검색 서비스가 그 글을 발견하는 일은 별개라는 점을 다시 떠올렸습니다. 새 가게가 문을 열었다고 해서 길을 지나던 모든 사람이 그날 바로 알게 되는 것은 아닌 것과 비슷합니다.

글을 두 번 올리는 방법부터 떠올렸습니다
가장 먼저 든 생각은 우리 사이트에 글을 발행할 때 네이버 블로그에도 함께 올리는 것이었습니다. 네이버를 이용하는 사람이 많으니 자연스러운 생각이었습니다.
알아보니 네이버가 외부 프로그램에 제공하던 블로그 글쓰기 기능은 2020년에 종료됐습니다. 그렇다면 사람이 매번 글을 복사해 올릴 수도 있습니다. 다만 두 곳에서 제목이나 내용을 고칠 때마다 같은 작업을 반복해야 하고, 어느 쪽이 원문인지도 모호해질 수 있었습니다.
우리에게 필요한 것은 같은 글을 여러 곳에 쌓는 일이 아니었습니다. 원문은 이노자일 사이트에 두고, 새 글이 어디 있는지 검색 서비스에 알려 주는 일에 가까웠습니다.
새 글의 주소를 먼저 알려 주기로 했습니다
검색 서비스는 웹사이트를 돌아다니며 새로운 페이지를 찾습니다. 사이트 운영자가 그 방문 시점을 정할 수는 없습니다. 대신 새 글이 생기거나 기존 글이 바뀌었을 때 그 주소를 전달하는 방법이 있습니다. 이번에 사용한 방식은 IndexNow입니다.
이름은 낯설지만 하는 일은 단순합니다. 새 글을 발행하면 “이 주소에 변화가 있으니 확인해 주세요”라고 알립니다. 네이버도 이 방식을 지원합니다.

여기서 말하는 ‘알림’은 검색 결과에 글을 바로 올려 달라는 주문이 아닙니다. 우편물을 접수했다고 해서 받는 사람이 이미 읽었다고 말할 수 없는 것처럼, 주소가 전달됐다고 검색에 반영됐다고 볼 수는 없습니다. 실제로 방문하고 검색 결과에 포함할지는 검색 서비스가 결정합니다.
이 차이를 알고 나니 목표도 분명해졌습니다. 검색 순위를 약속하는 기능이 아니라, 새로 쓴 글이 발견될 기회를 놓치지 않게 하는 운영 기능이었습니다.
글이 사라질 때도 알려야 했습니다
처음에는 새 글이 발행될 때의 주소만 보내면 될 것 같았습니다. 운영 상황을 하나씩 떠올리자 경우가 늘었습니다.
이미 공개된 글을 수정할 수 있습니다. 글의 주소를 바꿀 수도 있습니다. 공개했던 글을 다시 초안으로 돌릴 수도 있습니다. 새 주소만 알리고 예전 주소를 잊으면 검색 결과에서 오래된 주소를 통해 들어온 사람이 없는 페이지를 보게 될 수 있습니다.
그래서 현재 글의 상태와 바로 이전에 공개됐던 상태를 함께 봤습니다. 새 글의 주소뿐 아니라 더는 사용하지 않는 옛 주소에도 변화가 생겼음을 알리기 위해서입니다. 한 번도 공개하지 않은 초안은 검색에 알릴 필요가 없었습니다.
이런 차이는 글을 실제로 운영해 보면 금방 만납니다. 화면에서 ‘발행’ 버튼이 잘 눌리는지만 확인해서는 놓치기 쉬운 부분이었습니다.
저장은 평소처럼, 알림은 뒤에서 처리했습니다
검색 서비스로 주소를 보내는 과정은 사이트 바깥에서 일어납니다. 상대편 서비스가 느리거나 일시적으로 응답하지 않을 수 있습니다.
그런 날에도 운영자가 쓴 글은 저장돼야 했습니다. 검색 알림 때문에 발행 화면이 오래 멈추거나 저장에 실패한다면 작업의 순서가 뒤바뀝니다.
글 저장을 먼저 처리하고 알림은 뒤에서 보내도록 했습니다. 알림을 보내지 못한 이유나 전달 오류는 기록에 남깁니다. 화면에서는 글이 잘 발행됐는데 검색 알림은 실패했다는 사실을 나중에 확인할 수 있도록 하기 위해서입니다.
글을 새로 쓰거나 고치거나 공개 상태를 바꾸는 경로가 여러 개여서, 알림을 각각의 버튼에 따로 붙이지도 않았습니다. 모두가 거치는 한 지점에 넣었습니다. 다음에 글을 바꾸는 방법이 하나 더 생기더라도 빠뜨릴 가능성을 줄이고 싶었습니다.
시험용 사이트가 보내는 알림은 막았습니다
기능을 만들면서 가장 오래 살핀 부분은 의외로 언제 보내지 말아야 하는가였습니다.
새 기능을 확인하는 시험용 사이트나 공개 전 미리보기 화면에도 글이 저장됩니다. 그 주소까지 검색 서비스에 알려 버리면 실제 방문자가 봐야 할 글과 시험용 글이 섞입니다.
처음에는 운영 환경이라는 표시와 필요한 설정값이 있는지만 확인했습니다. 별도로 점검해 보니 확인해야 할 경우가 더 있었습니다. 미리보기 사이트도 기술적으로는 운영 방식과 비슷하게 실행될 수 있기 때문입니다. 키가 우연히 빠져 있어서 알림이 나가지 않았을 뿐, 키가 들어오면 시험용 주소를 보낼 가능성이 있었습니다.
운영 사이트와 미리보기 사이트를 명확히 구분하도록 고쳤습니다. 한 가지 경우가 잘 되는 것만 보지 않고, 보내야 할 때와 보내면 안 될 때를 각각 확인했습니다.
실제 이용자가 보지 않는 화면이 검색에 알려질 수 있다는 점을 발견한 뒤에는, 기능을 추가할 때 성공하는 경우만 확인해서는 부족하다는 생각이 들었습니다.
검색 서비스가 사이트 주인을 확인할 방법도 필요했습니다
아무나 다른 사이트의 글 주소를 대신 알릴 수는 없습니다. 검색 서비스는 그 사이트가 알림을 보낼 권한이 있는지 확인합니다.
이를 위해 사이트의 정해진 위치에 확인용 파일을 보여 줍니다. 그 안의 값은 비밀번호가 아닙니다. 검색 서비스가 읽을 수 있도록 공개하는 값입니다. 다만 값을 여러 곳에 따로 적어 두면 나중에 바꿀 때 한쪽만 수정해 알림이 조용히 실패할 수 있습니다.
처음에는 설정을 옮기는 과정에서 같은 값이 잠시 두 곳에 있었습니다. 이후 한곳에서만 관리하도록 정리하고, 실제 사이트에서 확인용 파일이 제대로 열리는지도 확인했습니다.
검색 로봇에게 어느 화면을 읽어도 되는지 안내하는 파일도 함께 살폈습니다. 관리자나 비공개 화면은 제외하면서 공개 글은 읽을 수 있게 하는 기본적인 구분입니다.
전달됐다는 응답과 검색 노출은 다른 결과였습니다
준비를 마친 뒤 공개된 글 다섯 편의 주소를 전달했습니다. 검색 서비스가 요청을 접수했다는 응답도 확인했습니다.
여기까지는 알림 기능이 작동했다는 확인입니다. 다섯 편이 언제 검색 결과에 나타날지, 어떤 검색어에서 보일지는 아직 별개의 문제입니다. 며칠 뒤 다시 살펴보고, 나오지 않는다면 검색 서비스가 페이지를 읽을 수 있는지부터 확인해야 합니다.
검색 결과를 기다리는 동안에도 글의 제목과 설명, 주소, 이미지 설명을 정리했습니다. 검색 서비스가 찾아왔을 때 페이지의 내용을 이해할 단서가 있어야 하기 때문입니다. 이미 공개한 글에도 빠진 내용이 없는지 함께 확인했습니다.
이 과정은 검색 노출을 보장하는 비법과는 거리가 멀었습니다. 글을 찾기 쉬운 곳에 두고, 변화를 알려 주고, 실제로 읽을 수 있는 상태인지 확인하는 기본적인 운영에 가까웠습니다.
사이트를 만든 뒤의 일까지 제안서에 보였습니다
인사이트 기능을 처음 계획할 때는 글을 작성하고 발행하는 화면에 눈이 갔습니다. 운영을 시작하니 새 글이 검색에서 발견되는 과정, 주소를 바꿨을 때의 처리, 미리보기 화면의 분리까지 이어졌습니다.
제작 제안에서 ‘검색 최적화 포함’이라는 문장을 볼 때도 이제는 구체적인 범위를 생각하게 됩니다. 페이지 제목과 설명만 정리하는지, 새 글이 생기면 주소 목록이 갱신되는지, 검색 서비스에 변화를 알리는지, 공개 뒤 실제로 읽히는 상태까지 확인하는지에 따라 운영 경험이 달라집니다.
모든 사이트에 별도의 알림 기능이 필요한 것은 아닙니다. 사용하는 홈페이지 도구가 이미 처리할 수도 있고, 글을 거의 올리지 않는 사이트라면 우선순위가 낮을 수 있습니다. 글을 꾸준히 발행하는 자체 사이트라면 발행 이후의 경로도 함께 살펴볼 만했습니다.
새 글을 쓰는 일이 끝나면 사이트에는 글이 남습니다. 그 글이 독자를 만나기까지는 그 뒤에 작은 운영 과정이 더 있었습니다.