상황
개발자용 도구 사이트를 6개 호스트로 나눠 운영하고 있다. 페이지는 53개. 그중 구글에 색인된 것이 4개다.
나머지 50개는 Search Console에서 크롤링됨 - 현재 색인이 생성되지 않음 상태다.
구글이 찾았고, 읽었고, 색인하지 않기로 했다는 뜻이다.
기술적 결함부터 의심하는 게 순서라 전부 확인했다. 결과는 전부 음성이었다. 대표로 한 페이지의 URL 검사 결과를 그대로 옮긴다.
상태 크롤링됨 - 현재 색인이 생성되지 않음
최근 크롤링 2026-09-29
크롤링 허용 예
페이지 가져오기 성공
색인 생성 허용 예
Google 선택 표준 검사된 URL
막는 것이 하나도 없다. robots.txt도 Allow: /이고, X-Robots-Tag 헤더도 없고,
canonical은 자기 자신을 가리키며 구글도 그걸 그대로 채택했다.
수동 조치도 보안 문제도 없다. 그런데 색인을 안 한다.
이건 버그가 아니라 가치 판단이다. 그래서 두 가지를 차례로 시험했다.
1. 포맷을 바꾸면 되는가 — 판정 규칙을 먼저 적고 돌렸다
첫 가설은 “페이지들이 한 틀에서 찍혀 나온 것처럼 보인다"였다. 실제로 43개 페이지 중 34개가 FAQ 5개 · 출처 3개 · 답변 110~130단어로 같은 모양이었다.
여기서 중요하게 생각한 건 실험을 돌리기 전에 판정 규칙을 적어두는 것이었다. 결과를 보고 나서 해석을 고르면 어떤 결과든 자기 편으로 읽게 된다.
호스트당 1개씩 5개만 골라 틀을 각기 다르게 깼다. 전부 한꺼번에 고치면 그 자체가 또 대량 작업이라 같은 신호를 반복하게 된다.
| 페이지 | 개편 방향 | FAQ |
|---|---|---|
| A | 언어 비교표를 논지로 앞세움 | 0개 |
| B | 선택 표를 맨 위로 | 2개 |
| C | 실행 로그를 뼈대로 | 3개 |
| D | 계산을 먼저 실행해 보여줌 | 4개 |
| E | 짧은 질문 다수 | 7개 |
미리 적어둔 규칙은 이랬다.
- 5개가 색인되고 손대지 않은 페이지들은 안 됨 → 구조가 원인. 나머지도 같은 방식으로 고친다
- 5개도 색인 안 됨 → 사이트 단위 판정. 개별 페이지 수정으로는 안 풀린다
- 일부만 → 호스트별 차이를 본다
개편 후 색인을 재요청하고 24일을 기다렸다.
결과: 5개 중 0개
색인된 페이지 목록을 다시 뽑았더니 4개였고, 개편한 5개는 하나도 없었다. 살아남은 4개는 전부 개편 전부터 색인돼 있던 오래된 페이지였다.
두 번째 가지다. FAQ 개수를 0·2·3·4·7로 흩고, 도입부 구조를 다섯 가지로 바꾸고, 템플릿 냄새를 지운 것이 색인에 아무 영향을 주지 않았다.
규칙을 먼저 적어둔 덕에 이 결과를 두고 다툴 여지가 없었다. 그게 이 실험에서 제일 잘한 일이라고 생각한다.
2. 그러면 외부 링크인가 — 재기 전에 자를 먼저 확인했다
남은 설명은 사이트 단위 신호였고, 가장 그럴듯한 건 외부에서 이 사이트를 가리키는 것이 거의 없다는 것이었다. Search Console의 외부 링크 리포트는 0개를 가리키고 있었다.
그래서 백링크를 만들러 가기로 했는데, 그 전에 한 번 크게 틀린 적이 있다. “그런 데는 다 nofollow라 의미 없다"고 확인도 안 하고 네 번 썼고, 틀렸다.
rel 속성은 페이지를 받아서 grep 한 번이면 끝나는 확인이다.
그래서 후보 채널을 전부 받아서 봤다.
확인 방법
npm이나 Edge 애드온처럼 클라이언트 렌더링이거나 봇을 막는 곳은 curl이 403이나 빈 HTML을 주므로 브라우저로 직접 봐야 한다.
결과표
| 채널 | 실제 마크업 | 판정 |
|---|---|---|
| dev.to 글 본문 | rel="noopener noreferrer" | dofollow |
| dev.to 프로필 website | rel="noopener me" | dofollow |
| Google Sites | rel 속성 없음 | dofollow |
| Chrome 웹스토어 Website 필드 | rel="ugc nofollow" | 링크 가치 없음 |
| Firefox 애드온(AMO) | rel="nofollow" + 아웃고잉 리다이렉트 래퍼 | 이중 차단 |
| Edge 애드온 | 서버 HTML에 외부 링크 자체가 없음 | — |
| npm Homepage · Repository | rel="noopener noreferrer nofollow" | 링크 가치 없음 |
| npm README 본문 | rel="nofollow" | 링크 가치 없음 |
| GitHub README | rel="nofollow" | 링크 가치 없음 |
| GitHub 저장소 website 필드 | rel="nofollow" | 링크 가치 없음 |
| Product Hunt 제품 링크 | rel="noreferrer noopener ugc" | 링크 가치 없음 |
AMO는 특히 철저하다. rel="nofollow"를 붙이는 데서 그치지 않고
모든 외부 링크를 prod.outgoing.prod.webservices.mozgcp.net/v1/<해시>/<인코딩된 URL>
형태의 리다이렉트로 감싼다. 한 페이지에서 14번 나왔다.
이게 뒤집은 것
나는 크롬 웹스토어를 “이 실험에서 유일하게 증명된 채널"이라고 문서에 적어뒀었다. 확장을 올리면 리스팅에 사이트 링크가 실재하는 걸 눈으로 확인했기 때문이다.
그런데 그 링크가 ugc nofollow였다. 권위는 한 톨도 안 넘어온다.
유입과 “실재하는 제품을 내는 곳"이라는 정당성은 진짜지만, 그건 다른 이야기다.
반대로 dev.to는 글 본문과 프로필 양쪽 다 nofollow도 ugc도 없었다.
도메인 권위가 높은 곳 중에 우리가 접근할 수 있는 유일하게 확인된 dofollow였다.
그런데 내 계획표에는 dev.to 글이 한 편만 잡혀 있었다. 우선순위가 거꾸로였다.
배운 것
첫째, 판정 규칙은 실험 전에 적는다. 적어두지 않았다면 “5개 중 0개"를 “아직 시간이 안 지났다"로 읽었을 것이다. 실제로 그러고 싶었다.
둘째, 확인 비용이 1분인 것을 추측하지 않는다. rel 속성이 그랬다.
나는 추측 위에 기각 판정을 쌓았고, 그 판정으로 멀쩡한 채널을 하나 버릴 뻔했다.
셋째, “증명된 채널"이라는 말을 쓸 때 무엇이 증명됐는지 따진다. 링크가 존재한다는 것과 링크가 전달된다는 것은 다른 명제다. 나는 앞의 것을 확인하고 뒤의 것을 믿었다.
지금 상태
솔직하게 적으면, 아직 아무것도 해결되지 않았다.
외부 링크 0
색인 4 / 53
미색인 50 (유효성 검사 실패)
외부 링크가 0에서 움직이는지, 움직일 때 색인이 따라 오는지가 다음 4주의 질문이다. 움직이지 않으면 “외부 참조가 색인 배분량을 정한다"는 내 모델이 틀린 것이고, 그때는 설명이 하나밖에 안 남는다 — 같은 목적을 두고 경쟁하는 페이지가 너무 많다는 것.
어느 쪽이든 4주 뒤에 답이 나온다. 그때 다시 적겠다.
측정 대상이 된 사이트는 withuse.io
다.
위에서 URL 검사 결과를 그대로 옮긴 페이지는
cron 표현식 가이드
이고,
지금도 크롤링됨 - 현재 색인이 생성되지 않음 상태다.
