AI와 함께, 아무도 몰라주던 CSR SPA를 검색되게 만들기
이 기록은 AI가 제시한 답이 실제로는 절반쯤 틀렸고 그걸 하나씩 뒤집어 검증하면서 개선에 성공한 이야기입니다.
CSR로 만든 React 사이트가 몇 달째 검색에 안 걸리던 상황을 어떻게 개선했는지, 그리고 그 과정에서 AI를 어떤 방식으로 활용해야 실제로 도움이 되는지에 대한 기록입니다.
저는 React 기반으로 만들어진 신규 프로젝트를 시장에 선보이기 위해 새 회사에 입사하고 1년 6개월에 걸쳐 웹사이트를 개발했습니다. 열심히 만든 사이트인 만큼 사람들이 우리 사이트를 찾아주고 잘 사용해주면 좋겠다고 생각했죠. 피드백을 받고 개선할 생각에 설렜지만, 웬 걸. 사람들은 우리 사이트의 존재조차 몰랐습니다. 검색을 해도 잘 나오지 않으니깐요.
"어? 이 가게 언제 생겼지? 이런 가게가 있었네."
이런 경험을 종종 겪어보셨을 거예요. 사장님이 아무리 음식을 맛있게 만들어도 사람들은 그곳에 가게가 있는 줄 모른다면 소용이 없습니다. 웹사이트도 그렇다고 생각해요. 아무리 잘 만들어도 사이트가 알려지지 않으면 잘 만들었는지 못 만들었는지 아무도 알아주지 못합니다.
우리 프로그램을 잘 알리려면 마케팅도 잘 되어야 하지만, 프론트엔드로써 어떻게 해야할지 고민하게 되었고 문제를 해결하는 과정을 풀어봅니다.
"내가 더 할 수 있는 일이 있을까?"
론칭하기 전 성능도 챙기고 접근성도 챙기고 sitemap.xml, robots.txt, 네이버 서치어드바이저와 구글 서치콘솔 등록... 할 수 있는 건 모두 해두었어요.
Lighthouse SEO 점수를 돌려봐도 100점이 나왔고 프론트엔드가 할 수 있는 기술적 체크리스트는 다 통과했습니다.
그런데 네이버에 회사 이름을 쳐도 우리 사이트가 안 나옵니다. 구글도 마찬가지였고 두 달, 세 달이 지나도 그대로였어요.
원인은 어렴풋이 짐작은 했습니다. React가 CSR이기 때문에 SEO에 취약하기 때문이죠. og를 모두 채워도 크롤러는 빈 화면만 보기 때문이에요.
Q: sns 공유하기 기능 대부분이 og를 통해 공유되는데, 우리 사이트는 SSR을 안 쓴다. 어떻게 하지?
A: 좋은 질문입니다. CSR SPA에서 OG 태그 문제의 핵심은 크롤러(카카오톡, 페이스북, 트위터 봇 등)가 JS를 실행하지 않고 초기 HTML만 읽는다는 점입니다. react-helmet-async로 런타임에 태그를 주입해도 봇은 못 봅니다.
그렇다고 SEO 때문에 NextJS로 마이그레이션 하는 건 너무 크나큰 일이었어요.
그러는 동안 우리 사이트를 알리기 위한 일환으로 마케팅팀에서 우리 사이트를 알리는 이벤트를 준비 중이라는 얘기가 나왔어요. 사용자가 링크를 카톡·페이스북에 공유해야 하는 기능이 핵심이었죠.
이러한 공유 기능은 og만 채워넣어도 썸네일이 잘 뜨는 SNS가 있는 방면, CSR이라면 og를 아무리 채워도 안 뜨는 SNS도 있습니다. 크롤러(카카오톡 봇, 페이스북 봇, 심지어 상당수 검색 봇)는 JavaScript를 실행하지 않고 초기 HTML만 읽고 끝나거든요.
react-helmet-async로 런타임에 태그를 아무리 주입해도 이런 이슈를 해결하지 못하면 봇은 보지 못합니다.
결국 기술부채로 미뤄두었던 SEO를 어떻게든 개선해야겠다는 생각이 미쳤습니다. 이벤트가 개시되고 나면 기술부채는 점점 커질 테니까요.
저는 검색엔진최적화 경험이 다수 있고 이 경험을 살려 이 문제를 해결해보기로 했습니다.