Sitemap과 RSS는 구글을 포함한 검색 엔진이 웹사이트의 콘텐츠를 효율적으로 발견하고 이해하는 데 중요한 역할을 한다, 그런데 이미 개발사 혹은 블로그 카테고리단에서 자체적으로 RSS atom sitemap 을 알아서 다 작성해버리니 마땅히 할게 없지만, seo 를 파고들면 구글 도 Rss 와 sitemap 선에서 나름의 구조를 가지고 있다.
구글 SEO에 최적화된 Sitemap XML 구조
Sitemap의 주된 목적은 검색 엔진에게 웹사이트에 있는 모든 중요한 페이지의 존재를 알리고, 각 페이지의 마지막 수정일, 변경 빈도, 상대적인 중요도 등에 대한 정보를 제공. 결국 검색 엔진이 웹사이트를 보다 효과적으로 크롤링하고 색인화하는 데 도움을 줌.
핵심 최적화 요소 및 구조:
<urlset>: XML 파일의 최상위 요소로, 현재 파일을 Sitemap 프로토콜 표준으로 정의합니다. (네임스페이스 지정 필수: xmlns="http://www.sitemaps.org/schemas/sitemap/0.9")
<url>: Sitemap에 포함될 개별 페이지의 정보를 담는 요소입니다. <urlset> 안에 여러 개가 포함됩니다.
<loc> (필수): 해당 페이지의 전체 URL을 명시합니다.
최적화:
절대 경로 사용: https://www.example.com/page.html 처럼 전체 URL을 사용해야 합니다.
정식 URL (Canonical URL) 사용: 동일한 내용의 페이지가 여러 URL로 접근 가능하다면, 구글이 색인화하길 원하는 정식 URL 하나만 포함해야 합니다.
Redirecting URL 미포함: 리다이렉션되는 URL은 포함하지 않습니다. 최종 착지 URL을 포함해야 합니다.
Noindexed 페이지 미포함: noindex 메타 태그나 HTTP 헤더로 색인 제외된 페이지는 Sitemap에 포함하지 않습니다.
오류 페이지 미포함: 404 오류 등을 반환하는 페이지는 포함하지 않습니다.
<lastmod> (권장): 해당 페이지의 콘텐츠가 마지막으로 수정된 날짜를 나타냅니다.
최적화:
정확한 날짜 사용: 콘텐츠가 실제로 변경되었을 때만 날짜를 업데이트합니다. (HTML 템플릿 변경 같은 사소한 변경보다는 본문 콘텐츠 변경 시 업데이트)
W3C Datetime 형식 사용: YYYY-MM-DD, YYYY-MM-DDThh:mm:ss+hh:mm 등의 형식을 따릅니다. (예: 2023-10-27 또는 2023-10-27T10:00:00+00:00)
구글 크롤링 우선순위 힌트: lastmod 정보는 구글이 해당 페이지를 다시 크롤링해야 할지 판단하는 데 중요한 힌트를 줍니다. 정확하게 관리하면 크롤링 리소스를 효율적으로 사용할 수 있습니다.
<changefreq> (선택적, 덜 중요): 페이지의 변경 빈도에 대한 예상 값을 제공합니다. (always, hourly, daily, weekly, monthly, yearly, never)
구글의 입장: 구글은 이 값을 힌트로만 사용하며, lastmod 정보를 더 중요하게 봄.
너무 자주 변경되지 않는 페이지에 대해 정확한 값을 사용하면 좋지만, 필수적인 최적화 요소는 아님.
<priority> (선택적, 덜 중요): 사이트 내 다른 URL에 대한 상대적인 중요도를 0.0부터 1.0까지의 값으로 나타냅니다. (기본값: 0.5)
구글의 입장: 이 값은 검색 결과 순위에 영향을 주지 않음. 단지 구글이 사이트 내 페이지 중 어떤 페이지를 먼저/더 자주 크롤링할지 결정하는 데 미약한 힌트만 제공. 모든 페이지의 우선순위를 1.0으로 설정하는 것은 의미가 없다. 사이트 내에서 정말 중요한 몇몇 페이지에만 높은 값을 사용하는 것이 좋다. (공지글 같은거. 혹은 자체적으로 sitemap을 돌리기 위한 링크게시글)
Google SEO를 위한 추가 Sitemap 최적화 가이드라인:
파일 크기 및 URL 개수 제한 준수: Sitemap 파일 하나는 압축하지 않았을 때 50MB를 넘거나 50,000개 이상의 URL을 포함할 수 없습니다. 이를 초과하는 경우 Sitemap Index 파일(sitemapindex)을 사용하여 여러 개의 Sitemap 파일을 묶어야 합니다.
Sitemap Index 파일 사용 (sitemapindex): 여러 개의 Sitemap 파일을 관리할 때 사용하며, 각각의 Sitemap 파일(<sitemap>)의 위치(<loc>)를 알려줍니다. 대규모 사이트에 필수적입니다.
올바른 위치: 사이트의 루트 디렉토리에 배치하는 것이 일반적입니다. (https://www.example.com/sitemap.xml) 이렇게 하면 해당 Sitemap 파일에 나열된 모든 URL을 포함할 수 있습니다. 하위 디렉토리에 배치하면 해당 디렉토리 이하의 URL만 포함할 수 있다는 제약이 있습니다.
Search Console 제출: Google Search Console에 Sitemap URL을 제출하여 구글이 이를 인식하고 처리하도록 합니다. 제출 후 Search Console에서 오류 보고서를 확인하며 관리해야 합니다.
다양한 콘텐츠 타입 Sitemap: 이미지, 동영상, 뉴스 콘텐츠가 중요하다면, 각각의 콘텐츠 타입을 위한 확장 Sitemap (Image Sitemap, Video Sitemap, News Sitemap)을 별도로 생성하고 Sitemap Index 파일에 포함하거나 별도로 제출하는 것이 좋습니다. 각 확장 Sitemap은 구글이 해당 콘텐츠를 더 잘 이해하도록 돕는 추가 메타데이터를 포함합니다.
XML 형식 유효성 검사: 생성된 Sitemap XML 파일이 Sitemap 프로토콜 표준을 준수하는지 유효성 검사 도구를 통해 확인합니다.
동적 생성: 웹사이트의 콘텐츠가 자주 변경/추가된다면, Sitemap을 수동으로 관리하기 어렵습니다. CMS 플러그인이나 서버 스크립트를 통해 Sitemap을 동적으로 생성하도록 자동화하는 것이 효율적입니다.
최적화된 Sitemap XML 구조 예시 (단일 파일):
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>https://www.example.com/</loc>
<lastmod>2023-10-26T14:30:00+00:00</lastmod>
<changefreq>daily</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://www.example.com/products/product-a</loc>
<lastmod>2023-10-27T09:00:00+00:00</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://www.example.com/blog/latest-post</loc>
<lastmod>2023-10-27T15:00:00+00:00</lastmod>
<changefreq>hourly</changefreq>
<priority>0.9</priority>
</url>
<!-- 필요한 다른 URL들을 추가 -->
</urlset>
2. 구글 SEO에 최적화된 RSS XML 구조
RSS (Really Simple Syndication)의 주된 목적은 웹사이트의 최신 콘텐츠(주로 블로그 게시물, 뉴스 기사, 팟캐스트 에피소드 등)를 구독자나 다른 플랫폼에 신속하게 배포하는 것입니다. 구글은 RSS 피드를 주로 신선한 콘텐츠를 빠르게 발견하고 Google News나 Discover와 같은 서비스에 노출시키는 데 활용합니다. RSS는 Sitemap처럼 웹사이트의 모든 페이지를 색인화하는 목적이 아닙니다.
핵심 최적화 요소 및 구조 (RSS 2.0 기준):
<rss>: XML 파일의 최상위 요소로, RSS 버전 및 네임스페이스를 정의합니다. (version="2.0")
<channel>: RSS 피드 자체에 대한 정보를 담는 요소입니다. <rss> 안에 하나만 포함됩니다.
<title> (필수): 피드의 제목 (사이트 제목 등).
<link> (필수): 피드가 속한 웹사이트의 URL.
<description> (필수): 피드에 대한 설명.
<pubDate> (권장): 피드의 콘텐츠가 마지막으로 발행된 날짜/시간. (RFC 822 형식 사용 예: Fri, 27 Oct 2023 15:00:00 KST)
<language> (권장): 피드의 언어 코드 (예: ko-kr, en-us).
<item>: 피드에 포함될 개별 콘텐츠 항목을 담는 요소입니다. <channel> 안에 여러 개가 포함됩니다.
<title> (필수): 콘텐츠 항목의 제목 (예: 블로그 게시물 제목).
<link> (필수): 해당 콘텐츠 항목의 전체 URL.
최적화: 해당 콘텐츠의 정식 URL을 사용해야 합니다. Sitemap과 마찬가지로 리다이렉션되거나 noindex된 URL은 피해야 합니다.
<description> (필수): 콘텐츠 항목에 대한 요약 또는 전체 내용.
최적화: 구글이 내용을 빠르게 이해하도록 돕습니다. 관련 키워드를 포함하되 스팸성으로 작성하지 않아야 합니다. 전체 내용을 제공하는 것이 구글 Discover 등에 노출될 가능성을 높일 수 있습니다. (CData 섹션 사용 가능)
<pubDate> (권장): 해당 콘텐츠 항목이 발행된 날짜/시간.
최적화: 콘텐츠의 신선도를 판단하는 중요한 요소입니다. 정확한 발행 시간을 RFC 822 형식으로 제공해야 합니다.
<guid> (권장, 구글에 중요): 해당 콘텐츠 항목을 고유하게 식별하는 값.
최적화: 가장 중요할 수 있는 요소 중 하나입니다. 이 값이 변경되면 구글은 새로운 콘텐츠로 인식할 수 있습니다. 영구적인 고유 식별자여야 합니다.
isPermaLink="true" 사용 시: guid 값을 해당 콘텐츠의 link URL과 동일하게 설정하고 isPermaLink="true" 속성을 추가합니다. URL이 변경되지 않는다면 가장 간단하고 효과적인 방법입니다.
isPermaLink="false" 사용 시: URL이 변경될 가능성이 있다면, 내부적으로 생성한 고유 ID (예: 데이터베이스 ID)를 사용하고 isPermaLink="false" 속성을 추가합니다. 이 ID는 콘텐츠가 삭제되거나 URL이 변경되어도 동일해야 합니다.
구글은 이 guid 값을 통해 특정 콘텐츠가 이미 피드에 포함되었는지, 아니면 새로운 콘텐츠인지 판단합니다.
<author> (권장): 콘텐츠 작성자.
<category> (권장): 콘텐츠의 카테고리/태그.
Google SEO를 위한 추가 RSS 최적화 가이드라인:
신선한 콘텐츠 유지: RSS 피드는 최신 콘텐츠 목록을 제공하므로, 새로운 블로그 게시물이나 뉴스 기사가 발행될 때마다 신속하게 업데이트되어야 합니다.
완전한 콘텐츠 제공 (선택적): <description>에 요약 대신 전체 콘텐츠를 포함하거나 <content:encoded> (Atom Feed의 경우)와 같은 확장 태그를 사용하여 전체 콘텐츠를 제공하는 것이 구글 Discover 등에서 더 나은 사용자 경험을 제공하고 노출 기회를 늘릴 수 있습니다. (단, 저작권 및 콘텐츠 전략 고려)
정확한 <pubDate>: 발행 시간을 정확하게 기록하여 구글이 콘텐츠의 최신성을 정확하게 파악하도록 합니다.
고유한 <guid> 관리: 각 item이 고유한 guid를 갖도록 합니다. isPermaLink 속성을 올바르게 사용하여 URL 기반 GUID 또는 내부 ID 기반 GUID를 명확히 합니다.
Search Console 제출 (제한적): RSS 피드 자체를 Sitemap처럼 Search Console에 직접 제출하는 기능은 제공되지 않습니다. 구글은 다양한 경로(웹페이지의 <link rel="alternate" type="application/rss+xml"> 태그, Search Console에서 Sitemap 제출 시 자동 발견 등)를 통해 RSS 피드를 발견합니다. 특히 Google News 발행인은 News Publisher Center를 통해 RSS 피드를 관리합니다.
발견 가능성 확보: 웹사이트의 <head> 섹션에 RSS 피드의 위치를 알리는 <link rel="alternate"> 태그를 추가하여 검색 엔진과 사용자가 RSS 피드를 쉽게 발견하도록 합니다.
<link rel="alternate" type="application/rss+xml" title="사이트명 - RSS Feed" href="https://www.example.com/feed.xml" />
SEO에 최적화 한 RSS XML 구조 예시 (RSS 2.0):
<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:webfeeds="http://webfeeds.org/rss/1.0">
<channel>
<title>My Example Blog</title>
<link>https://www.example.com/blog/</link>
<description>Latest posts from my example blog.</description>
<pubDate>Fri, 27 Oct 2023 15:30:00 KST</pubDate>
<language>ko-kr</language>
<lastBuildDate>Fri, 27 Oct 2023 15:30:00 KST</lastBuildDate>
<item>
<title>Optimizing Sitemaps and RSS for SEO</title>
<link>https://www.example.com/blog/seo-sitemap-rss-optimization</link>
<pubDate>Fri, 27 Oct 2023 15:30:00 KST</pubDate>
<guid isPermaLink="true">https://www.example.com/blog/seo-sitemap-rss-optimization</guid>
<description><![CDATA[
This post details how to optimize your Sitemap and RSS feeds for Google SEO, focusing on structure and key elements... (요약 또는 전체 내용)
]]></description>
<!-- 전체 내용을 포함하고 싶다면 content:encoded 사용 가능 -->
<!-- <content:encoded><![CDATA[ ... 전체 HTML 내용 ... ]]></content:encoded> -->
<category>SEO</category>
<category>Development</category>
</item>
<!-- 필요한 다른 최신 글 item들을 추가 -->
</channel>
</rss>
Sitemap vs RSS (Google SEO 관점)
Sitemap:
목적: 모든 색인 가능한 페이지를 구글에 알리고, 사이트 구조 및 페이지 중요도/업데이트 정보를 제공하여 크롤링 및 색인 효율성 향상.
대상: 정적 페이지, 제품 페이지, 카테고리 페이지, 블로그 글 등 모든 중요한 URL.
핵심 요소: <loc>, <lastmod> (중요), <changefreq>, <priority> (참고).
구글 사용: 크롤링/색인 발견, 우선순위 힌트.
제출: Google Search Console 필수.
RSS:
목적: 최신 콘텐츠를 신속하게 배포하여 구독자나 다른 플랫폼(Google News, Discover 등)에 빠르게 노출.
대상: 블로그 글, 뉴스 기사 등 주로 신선한 콘텐츠 타입.
핵심 요소: <link>, <pubDate>, <guid> (매우 중요), <title>, <description>.
구글 사용: 최신 콘텐츠 발견, Google News/Discover 노출 기여.
제출: 직접 제출 기능 제한적 (Search Console 자동 발견, News Publisher Center).
구글의 가이드라인과 각 XML 태그의 SEO적 의미를 정확히 이해하고, 웹사이트의 특성(콘텐츠 업데이트 빈도, 페이지 수, 콘텐츠 타입 등)에 맞춰 최적의 구조를 구현하는 것이 중요하다. 특히 <lastmod>와 <pubDate>의 관리, <guid>의 고유성 유지는 구글이 콘텐츠의 신선도를 판단하고 효율적으로 처리하는 데 핵심적인 요소로 작용할 수 있으나, 이런 사소한 부분까지 챙기기엔 너무 시간이 많이 들어갈듯.
결국 이런 방법은 ai를 통해 일괄 처리하는 것이 가장 효과적인 방법이 아닐까 싶다.