포트폴리오 사이트 SEO 메타 풀세트를 한 번에 정비
목차
포트폴리오 사이트의 SEO 메타 풀세트를 한 번에 몰아서 보강했다. keywords, robots, og:site_name, twitter:image:alt, 그리고 Person JSON-LD까지 — 단일 HTML 파일 하나에 꽤 많은 게 들어갔다.
왜 지금 이 작업이었나
포트폴리오 사이트는 기능 구현이 우선이다 보니 SEO는 늘 "나중에" 리스트에 머무는 경향이 있다. 그런데 검색 엔진 크롤러 입장에서 보면, 아무리 콘텐츠가 좋아도 메타 정보가 부실하면 올바르게 인덱싱되지 않는다. og:site_name 하나 빠진 것도 SNS 공유 시 미리보기가 어색하게 노출되는 원인이 되고, twitter:image:alt가 없으면 스크린 리더 접근성 문제로도 이어진다. "배포는 됐으니까 끝"이 아니라 크롤러와 유저 에이전트가 실제로 어떻게 소비하는지를 한 번 점검해야 할 시점이었다.
팀 리딩 경험상, 개인 프로젝트든 사내 서비스든 SEO 작업은 항상 한 덩어리로 묶어서 처리하는 게 낫다. 오늘 keywords 추가하고, 다음 주에 og 보강하고, 그다음에 JSON-LD 붙이고 — 이런 식으로 흩어지면 커밋 히스토리가 지저분해지고, 어느 시점 기준으로 "완성된 메타"인지 파악이 안 된다. 코드리뷰 맥락에서도 SEO 관련 변경은 한 PR에 묶어야 검토자가 전체 그림을 보고 누락 여부를 판단할 수 있다.
이번에 추가된 항목들
| 항목 | 역할 | 누락 시 영향 |
|---|---|---|
keywords |
검색 엔진 힌트 (현재는 랭킹 영향 미미하나 명시적 의도 표현) | 없어도 크리티컬하진 않지만 관례 |
robots |
크롤러 인덱싱/팔로우 정책 명시 | 미지정 시 엔진마다 기본값 상이 |
og:site_name |
SNS 공유 카드에서 사이트 이름 노출 | 공유 미리보기에 사이트명 빠짐 |
twitter:image:alt |
트위터 카드 이미지 대체 텍스트 | 접근성 이슈, 일부 클라이언트 경고 |
| Person JSON-LD | 구조화 데이터로 인물 정보 명시 | 구글 Knowledge Panel 연결 약화 |
특히 Person JSON-LD는 단순 메타태그와 결이 다르다. <meta>는 크롤러에게 "이런 정보가 있다"고 알려주는 수준이지만, JSON-LD 구조화 데이터는 "이 페이지의 주체가 누구인지, 어떤 속성을 가지는지"를 시맨틱하게 선언하는 것이다. 구글은 이를 기반으로 Knowledge Graph와 연결을 시도하고, 검색 결과 리치 스니펫 생성에도 활용한다.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Person",
"name": "...",
"url": "https://slecs.net",
"sameAs": [
"https://github.com/...",
"https://linkedin.com/in/..."
]
}
</script>
sameAs 배열이 핵심이다. 동일 인물임을 여러 플랫폼에 걸쳐 선언하면 검색 엔진이 흩어진 프로필들을 하나의 엔티티로 묶는 데 도움을 준다. 포트폴리오 사이트 특성상 이 연결이 제대로 안 되면 검색 시 본인 이름을 쳐도 다른 동명이인 결과가 먼저 뜨거나, 본인 프로필이 파편화되어 노출되는 상황이 생긴다.
단일 파일이라서 생기는 신중함
portfolio/index.html 하나가 변경 대상이었는데, 이 파일이 사이트의 유일한 엔트리포인트라는 점에서 변경 시 신경 쓸 게 있다. robots 메타 설정 하나를 잘못 쓰면 (noindex를 실수로 박으면) 전체 사이트가 검색에서 사라진다. 실제로 이런 사고는 꽤 흔하다 — 개발/스테이징 환경에 붙여두던 noindex를 프로덕션 빌드에 그대로 내보내는 케이스가 대표적이다. 멘토링할 때도 항상 강조하는 부분이다. robots 관련 메타나 헤더는 배포 전 반드시 더블체크할 것.
이번 작업은 반대 방향, 즉 제대로 된 값을 명시적으로 박아 넣는 쪽이었으니 문제는 없다. 하지만 단일 파일 사이트에서 <head> 블록 수정은 항상 그 긴장감을 유지하는 게 맞다.
SEO는 효과가 즉각 보이지 않아서 우선순위에서 계속 밀리기 쉽다. 그래도 한 번 제대로 깔아두면 이후에 신경 쓸 일이 줄어드는 작업이기도 하다. 이번 커밋처럼 한 번에 풀세트로 묶어서 처리한 게 결과적으로 맞는 방향이었다.
끝.
🛒 이 글과 어울리는 추천 상품
*위 링크는 쿠팡파트너스 활동의 일환이며, 일정액의 수수료를 제공받을 수 있습니다.
댓글 0
첫 댓글 달아줘.