블로그 SEO 신뢰도를 저자 페이지·조회수·스키마로 한번에 끌어올렸다
목차
SEO 관점에서 "신뢰도"를 올리는 작업을 한 번에 여러 레이어로 묶어 커밋했다.
E-E-A-T(Experience, Expertise, Authoritativeness, Trustworthiness)는 구글이 콘텐츠 품질을 평가할 때 쓰는 프레임워크인데, 단순히 메타 태그 몇 개 추가한다고 올라가는 게 아니다. 실제로 "이 글을 쓴 사람이 누구인지", "이 콘텐츠가 얼마나 읽히고 있는지"를 구조적으로 노출해야 크롤러와 독자 모두 납득한다. 그걸 한 번에 묶은 커밋이었음.
왜 이걸 지금 했나
블로그 글이 쌓이면서 콘텐츠 자체보다 "작성자 신뢰도"가 검색 노출에 발목을 잡고 있다는 판단이 들었다. 글 품질은 어느 정도 확보됐는데, 구글 Search Console에서 보면 일부 글이 인덱싱은 되지만 상위 노출이 안 되는 패턴이 계속 반복됐다.
구글이 공식적으로 밝힌 건 아니지만, author 정보가 Schema.org Person 타입으로 마크업돼 있고, 그 저자 페이지가 실제로 존재하며, 글 자체에 조회수/읽기 시간 같은 engagement 시그널이 있을 때 크롤러가 "살아있는 콘텐츠"로 더 긍정적으로 평가한다는 게 SEO 커뮤니티의 일반적인 합의다. 그 세 가지를 한 번에 치기로 했다.
작업 내용
변경된 파일 기준으로 역할을 정리하면 이렇다.
| 파일 | 역할 | 이번 변경 의미 |
|---|---|---|
PostMetrics.astro |
글 단위 지표 컴포넌트 | 조회수, 읽기 시간 등 engagement 시그널 신규 구현 |
Post.astro |
글 레이아웃 | PostMetrics 컴포넌트 주입 + author 메타 연결 |
[...slug].astro |
동적 라우트 | 글 페이지에서 author/metrics 데이터 파이프 연결 |
api/metric.ts |
metric API 엔드포인트 | 조회수 기록/조회 API 신규 추가 |
author/ssul-editor.astro |
저자 페이지 | Person schema 포함한 저자 프로필 페이지 생성 |
PostMetrics.astro는 단순 UI 컴포넌트가 아니라 api/metric.ts와 붙어서 동작한다. 페이지 로드 시 조회수를 +1 하고, 렌더링 시점에 현재 카운트를 표시하는 구조. Astro에서 서버사이드 API route를 같이 만들어야 했기 때문에 metric.ts가 함께 들어갔음.
// api/metric.ts — 대략적인 패턴
export async function POST({ request }) {
const { slug } = await request.json();
// slug 기반으로 카운트 증가 후 반환
const count = await incrementView(slug);
return new Response(JSON.stringify({ count }), {
headers: { 'Content-Type': 'application/json' }
});
}
저자 페이지(author/ssul-editor.astro)에는 Person schema를 직접 JSON-LD로 박았다. 구조는 이렇다.
{
"@context": "https://schema.org",
"@type": "Person",
"name": "...",
"url": "...",
"sameAs": ["..."]
}
sameAs 배열에 외부 프로필 링크를 넣으면 구글이 엔티티 연결을 더 잘 해준다. 이게 단순 마크업처럼 보이지만, 실제로 Knowledge Graph에 인물 엔티티로 연결되는 첫 단추다.
이 묶음을 하나의 커밋으로 친 이유
팀에서 코드리뷰할 때 "왜 이게 한 PR이에요?"라는 질문이 나올 법한 구조다. 실제로 세 가지 작업은 각각 독립적으로도 배포할 수 있다.
그럼에도 하나로 묶은 건, E-E-A-T 시그널은 부분 적용 시 효과가 반감되기 때문이다. 저자 페이지만 있고 글에 author 링크가 없으면 크롤러가 둘을 연결 못 한다. PostMetrics만 있고 저자 신뢰도가 없으면 engagement 수치 자체를 신뢰하지 않는다. 세 레이어가 같이 배포되어야 "이 저자가 이 글을 썼고, 이만큼 읽힌다"는 흐름이 완성된다.
이런 식으로 "기능 단위"가 아니라 "효과 단위"로 커밋을 묶는 판단을 할 때가 있다. 원자성은 기술적 원자성만이 아니라 의미적 원자성도 있다는 생각.
회고
아쉬운 점은 api/metric.ts의 어뷰징 처리를 이번에 같이 못 넣었다는 거다. 새로고침 반복이나 봇 트래픽을 어떻게 필터링할지가 빠진 상태라 카운트 신뢰도가 아직 낮다. 다음 사이클에서 IP 기반 dedup 또는 세션 기반 필터링을 붙이는 게 남은 숙제다.
그리고 Person schema를 하드코딩으로 박은 것도 나중엔 config로 빼야 한다. 저자가 늘어나면 author/ 아래 페이지마다 schema를 복붙하는 구조가 되는데, 그게 유지보수 지뢰가 될 거라는 걸 이미 알면서 일단 쳤다. 기술 부채를 인지하고 치는 것과 모르고 치는 것은 다르다고 생각하지만, 어쨌든 기록은 해두는 게 맞다.
끝.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.