블로그에 글이 실제로 몇 개인지, 검색엔진이 뭘 보고 있는지 확인하려면 `sitemap.xml`을 보면 됩니다.
**로그인하지 않고 밖에서** 알 수 있습니다.
## 결론부터
```bash
# URL 개수 세기
curl -s https://example.com/sitemap.xml| grep -c '<loc>'
# 실제 주소 보기
curl -s https://example.com/sitemap.xml | grep -o '<loc>[^<]*</loc>' | sed 's/<[^>]*>//g'
```
사이트맵은 **"이 사이트에 이런 페이지들이 있다"고 검색엔진에 알려주는 목록**입니다.
대부분의 블로그 서비스가 자동으로 만들어 줍니다.
## 함정 — 숫자를 그대로 믿으면 안 됩니다
### 1) 시스템 URL이 섞여 있습니다
블로그 서비스는 글이 하나도 없어도 이런 주소들을 사이트맵에 넣습니다.
```
https://example.com
https://example.com/category
https://example.com/tag
https://example.com/guestbook
```
**개수만 세면 "4개 있다"로 보이지만 실제 글은 0개입니다.**
그래서 **내용을 열어봐야** 합니다.
> 티스토리 기준으로 **시스템 URL이 4~6개 항상 포함**됩니다.
> **6개 이하면 실제 글은 0편**으로 보면 됩니다.
### 2) PC와 모바일이 중복으로 잡힙니다
```
https://example.com/entry/글제목
https://example.com/m/entry/글제목 ← 같은 글의 모바일 주소
```
`/m/` 이 붙은 게 모바일 버전입니다. **같은 글이 두 번 세어집니다.**
실제 글 수를 보려면 걸러야 합니다.
```bash
curl -s https://example.com/sitemap.xml \
| grep -o '<loc>[^<]*</loc>' | sed 's/<[^>]*>//g' \
| grep -v '/m/' | grep 'entry' | wc -l
```
### 3) 사이트맵이 여러 개로 나뉘기도 합니다
글이 많으면 **사이트맵 색인(index)** 을 쓰는 경우가 있습니다.
```xml
<sitemapindex>
<sitemap><loc>https://example.com/sitemap1.xml</loc></sitemap>
<sitemap><loc>https://example.com/sitemap2.xml</loc></sitemap>
</sitemapindex>
```
이럴 땐 하위 사이트맵을 각각 받아야 전체가 나옵니다. `<sitemapindex>` 태그가 보이면 이 경우입니다.
## 실전 — 여러 블로그 한 번에 점검
한 도메인에 여러 블로그를 붙여 쓰고 있다면 이렇게 봅니다.
```bash
for h in blog1 blog2 blog3; do
n=$(curl -s "https://$h.example.com/sitemap.xml" | grep -c '<loc>')
printf "%-24s URL %3d개 %s\n" "$h" "$n" \
"$([ "$n" -le 6 ] && echo '← 글 없음' || echo '')"
done
```
**어느 블로그가 비어 있는지 한눈에 드러납니다.**
저는 이 방법으로 **글이 0편인 블로그가 7개나 있다는 걸** 발견했습니다.
저는 사이트맵을 세어보고 나서야 **글이 하나도 없는 블로그를 7개나 운영하고 있었다**는 걸 알았습니다.
한 도메인에 블로그를 여러 개 붙여놨는데, 몇 년에 걸쳐 만들다 보니 어디에 뭐가 있는지 잊고 있었습니다. 관리 화면에서는 블로그 목록만 보이지 **각각에 글이 몇 개인지는 한눈에 안 보입니다.**
반복문으로 사이트맵 개수를 세어보니 결과가 명확했습니다. 글이 100편 넘는 곳은 하나뿐이었고, 나머지는 전부 시스템 URL만 4~5개 있는 **빈 껍데기**였습니다.
처음엔 "4개씩 있네"라고 읽었다가, 주소를 열어보고 나서야 그게 홈·카테고리·태그·방명록이라는 걸 알았습니다. **개수만 보면 안 되는 이유**를 그때 알았습니다.
## 글 제목만 뽑아보기
주소가 한글이면 URL 인코딩돼서 읽기 어렵습니다. 디코딩하면 제목이 보입니다.
```bash
curl -s https://example.com/sitemap.xml \
| grep -o '<loc>[^<]*entry[^<]*</loc>' | sed 's/<[^>]*>//g' | grep -v '/m/' \
| python3 -c "
import sys, urllib.parse
for line in sys.stdin:
print(urllib.parse.unquote(line.strip()).split('/entry/')[-1].replace('-',' '))
"
```
제목 목록이 쭉 나옵니다. **어떤 주제를 주로 썼는지** 파악할 때 유용합니다.
자기 블로그를 오래 운영하면 정작 뭘 썼는지 잊어버리는데, 이렇게 보면 정리가 됩니다.
## 사이트맵이 없거나 비어 있다면
```bash
curl -s -o /dev/null -w '%{http_code}\n' https://example.com/sitemap.xml
```
- `404` → 사이트맵이 없습니다. 블로그 설정에서 생성 여부를 확인하세요
- `200`인데 `<loc>`가 0개 → 글이 없거나 비공개 상태입니다
검색에 노출되려면 사이트맵이 있어야 하고, 검색엔진에 제출도 해야 합니다.
**워드프레스라면 SEO 플러그인이 자동 생성**해 주고, 블로그 서비스는 대부분 기본 제공합니다.
## 정리
- **`grep -c '<loc>'` 로 개수를 세되, 숫자를 그대로 믿지 마세요**
- **시스템 URL 4~6개가 항상 섞여 있습니다.** 6개 이하면 글 0편입니다
- **`/m/` 모바일 주소가 중복**으로 잡힙니다. 걸러야 실제 글 수가 나옵니다
- `<sitemapindex>` 가 보이면 **하위 사이트맵을 각각** 받아야 합니다
- 여러 블로그를 운영한다면 **반복문으로 한 번에 점검**하세요. 빈 것이 바로 드러납니다