XML 사이트맵 및 SEO: 알아야 할 사항
게시 됨: 2023-08-16XML 사이트맵은 6월에 18번째가 되었으며 본격적인 도입을 기념하여 XML 사이트맵의 작동 방식, 구축 방법 및 XML 사이트맵이 많은 SEO 이점을 제공하는 이유를 분석하고 있습니다.
XML 사이트맵이란 무엇입니까?
간단히 말해서 XML 사이트맵은 크롤링할 수 있는 웹사이트의 URL에 대해 검색 엔진에 알려주는 XML 형식의 프로토콜입니다.
XML 사이트맵은 다음과 같은 각 URL에 대한 정보를 공유하기 위한 것입니다.
- 마지막으로 업데이트된 날짜입니다.
- 변경 빈도.
- 웹사이트의 다른 URL과 관련하여 얼마나 중요한지.
XML 사이트맵을 사용하면 특정 URL이 격리된 경우 검색 엔진이 웹사이트를 더 효율적으로 크롤링할 수 있습니다.
SEO 전문가라면 이미 Yoast WordPress 플러그인에 내장된 XML 사이트맵을 사용하고 있을 것입니다. 그러나 놓칠 수 있는 추가 기능이 많이 있습니다.
동적 XML 사이트맵을 구축하는 방법
WordPress를 사용하는 경우 Yoast 및 RankMath와 같은 SEO 플러그인을 활용하여 동적 XML 사이트맵을 생성하십시오.
WordPress를 사용하지 않는 경우 다음 단계에 따라 동적 XML 사이트맵을 구축하십시오.
탐색 구조 이해
웹사이트의 모든 URL 목록을 모아 탐색 구조 및 콘텐츠 그룹화에 맞게 그룹화합니다.
개발자 팀과 협력
함께 그룹화된 URL 목록을 개발 팀과 공유하여 Python, PHP 또는 JavaScript를 사용하여 동적 XML 사이트맵을 만드는 데 도움을 받으세요.
다음은 Python을 사용하여 동적 XML 사이트맵을 코딩하는 방법의 예입니다.
import xml.etree.ElementTree as ET import datetime # List of URLs (replace these with your actual URLs) urls = [ "https://www.example.com/page1", "https://www.example.com/page2", "https://www.example.com/page3", # Add more URLs here ] # Create the root element urlset = ET.Element("urlset") urlset.set("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9") # Loop through URLs and create URL entries for url in urls: url_elem = ET.SubElement(urlset, "url") loc_elem = ET.SubElement(url_elem, "loc") loc_elem.text = url lastmod_elem = ET.SubElement(url_elem, "lastmod") lastmod_elem.text = datetime.datetime.now().isoformat() changefreq_elem = ET.SubElement(url_elem, "changefreq") changefreq_elem.text = "daily" # You can set this to the desired frequency priority_elem = ET.SubElement(url_elem, "priority") priority_elem.text = "0.5" # You can set this to a value between 0 and 1 # Create the XML tree tree = ET.ElementTree(urlset) # Save the XML to a file tree.write("sitemap.xml", encoding="utf-8", xml_declaration=True)
개발자와 함께 작업할 때 저는 Flask와 Python을 함께 활용하여 웹 사이트의 콘텐츠가 변경될 때마다 변경되는 진정한 동적 XML 사이트맵을 만들었습니다.
get_dynamic_urls()
와 같은 함수를 사용하여 웹사이트 콘텐츠를 기반으로 동적 사이트맵 경로를 정의할 수 있다면 모든 URL을 검색할 수 있어야 합니다.
@app.route('/sitemap.xml', methods=['GET']) def sitemap(): urls = get_dynamic_urls() # Replace with your dynamic URL retrieval logic urlset = ET.Element("urlset") urlset.set("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9") for url in urls: url_elem = ET.SubElement(urlset, "url") loc_elem = ET.SubElement(url_elem, "loc") loc_elem.text = url lastmod_elem = ET.SubElement(url_elem, "lastmod") lastmod_elem.text = datetime.datetime.now().isoformat() changefreq_elem = ET.SubElement(url_elem, "changefreq") changefreq_elem.text = "daily" priority_elem = ET.SubElement(url_elem, "priority") priority_elem.text = "0.5" xml_content = ET.tostring(urlset, encoding="utf-8") return xml_content, {'Content-Type': 'application/xml'}
여러 도메인 속성에서 코드를 공유하는 경우 HTML 페이지에서 파일이 올바르게 코딩되었는지 확인하세요.
예를 들어 CSS 및 JavaScript 파일은 <link>
및 <script>
태그를 사용하여 연결해야 합니다.
여러 도메인에서 코드를 공유하기 전에 공유 XML 사이트맵 규칙을 호스팅할 중앙 집중식 서버를 만들어야 합니다.
모든 규칙이 확인될 때까지 개발자와 함께 동적 XML 사이트맵의 여러 단계를 갖게 됩니다.
동적 URL이 실제로 검색되어 사이트맵 논리에 통합되는지 확인하는 것을 잊지 마십시오.
서버에 업로드
XML 사이트맵이 압축되면 동적 XML 사이트맵을 웹사이트의 루트 디렉토리에 업로드합니다.
검색 엔진에 제출
Google Search Console 및 Bing 웹마스터 도구를 통해 XML 사이트맵을 제출하여 검색 엔진에 XML 사이트맵에 대해 알리십시오.
지속적인 유지보수
XML 사이트맵은 단순히 "설정하고 잊어버리는" SEO 전략이 아닙니다. 웹사이트가 변경되면 XML 사이트맵을 업데이트하는 것이 중요합니다.
XML 사이트맵을 구축할 때 염두에 두어야 할 15가지 팁
1. XML 사이트맵은 순위 요소가 아닙니다.
X(이전의 Twitter)에서 XML 사이트맵을 사용하는 것이 순위 이점이 있는지 묻는 질문에 Google의 Gary Illyes는 다음과 같이 대답했습니다.
- "아니, 어쨌든 직접적인 건 아니야."
2. Google은 사이트맵 없이 페이지를 찾을 수 있습니다.
웹사이트가 작고 제대로 연결되어 있으면 사이트맵이 필요하지 않다고 Google의 Search Advocate인 Daniel Waisberg가 Google Search Console 교육 동영상에서 공유했습니다.
그러나 그는 다음과 같은 경우에 사이트맵이 특히 도움이 될 수 있다고 말했습니다.
- 사이트가 정말 큽니다.
- 사이트의 페이지는 격리되어 있습니다.
- 사이트가 새롭거나 빠르게 변경됩니다.
또한 Google의 John Muller가 X(이전의 Twitter)에서 XML 사이트맵을 갖는 것이 "심각한 웹사이트를 위한 최소한의 기준선"이라고 언급했다는 점에 유의하는 것이 중요합니다.
3. Google은 재처리하기 전에 XML 사이트맵이 변경되었는지 확인합니다.
Google은 파일을 다시 구문 분석하고 처리하는 데 리소스를 낭비하기 전에 XML 사이트 맵이 변경되었는지 확인한다고 Illyes는 확인했습니다.
그는 SEO 근무 시간에 언급했습니다.
- “URL 요소나 마지막 모드 등 사이트맵에서 무언가를 변경하는 즉시 사이트맵이 다시 구문 분석되고 일반적으로 재처리됩니다. 그렇다고 URL이 확실히 크롤링된다는 의미는 아닙니다. 물론 다른 URL과 마찬가지로 품질 평가를 받아야 합니다. URL이 더 이상 존재하지 않기 때문에 사이트맵에서 URL을 제거한다고 해서 자동으로 색인에서 삭제되거나 더 빨리 삭제될 수 있도록 크롤링 우선순위가 지정되는 것은 아닙니다.”
4. XML 사이트맵은 새로운 콘텐츠를 더 빠르게 인덱싱할 수 있습니다.
Mueller는 Google에 XML 사이트맵을 업데이트하면 새 콘텐츠의 색인을 더 빨리 생성하는 데 도움이 될 수 있다고 확인했습니다.
그는 다음과 같이 공유했습니다.
- “사이트맵을 핑하는 것은 robots.txt에 사이트맵을 제공하는 것과 약간 다릅니다. 핑하면 사이트맵 파일의 변경 사항에 적극적으로 플래그를 지정하는 것입니다. 새로운 콘텐츠를 신속하게 인덱싱하고 싶다면 좋은 습관입니다.”
5. XML 사이트맵은 UTF-8로 인코딩되어야 합니다.
XML 사이트맵이 UTF-8을 사용하지 않으면 검색 엔진에서 읽을 수 없습니다.
6. 파일 크기를 50MB(비압축) 또는 50,000 URL 미만으로 유지
XML 사이트맵에는 크기 제한이 있습니다. 사이트맵당 50,000개의 URL 또는 50MB(비압축) 미만으로 유지하십시오.
파일 크기가 더 크거나 URL이 더 많은 경우 여러 XML 사이트맵을 사용하십시오.
7. XML 사이트맵을 여러 개 가질 수 있습니다.
Google에서는 여러 사이트맵을 제출할 수 있습니다. 성능을 측정하기 위해 사이트맵을 웹사이트의 여러 섹션으로 분할하면 유용할 수 있습니다.
예를 들어 대규모 전자 상거래 웹사이트인 경우 XML 사이트맵을 제품 유형(예: 여성용 신발 대 남성용 신발)별로 분류할 수 있습니다.
또는 여러 언어를 사용하는 경우 <loc> XML 사이트맵과 관련된 hreflang을 원할 수 있습니다.
대체 언어가 있는 경우 최대 URL 50,000개에 포함되지 않습니다.
또는 동영상이나 이미지가 많은 경우 XML 사이트맵을 동영상 XML 사이트맵과 이미지 XML 사이트맵으로 분리할 수 있습니다.
XML 사이트맵이 여러 개 있어도 순위에 따른 이점은 없습니다.
8. XML 사이트맵이 여러 개인 경우 사이트맵 색인 파일을 사용해야 합니다.
대규모 사이트에 대한 XML 사이트맵이 여러 개 있는 경우 사이트맵 색인 파일을 제출하여 한 번에 많은 사이트맵을 제출할 수 있습니다.
9. lastmod 태그는 완벽해야 합니다.
<lastmod>
태그는 XML 사이트맵의 가장 중요한 부분 중 하나입니다.
예를 들어 구조화된 데이터는 XML 사이트맵의 <lastmod> 날짜를 활용합니다.
<lastmod>
태그는 또한 이전 콘텐츠를 새로 고쳤는지 또는 새 콘텐츠를 시작했는지 여부를 검색 엔진에 알립니다.
Mueller는 다음과 같이 말함으로써 이를 확인했습니다.
- "...타임스탬프 바닥글만 변경하는 경우 페이지도 기술적으로 변경되었지만 우선 순위를 지정해야 합니다. 아마도 그렇지 않을 것입니다."
Bing은 심지어 XML 사이트맵의 lastmod
태그에 대해 다음과 같이 공식 입장을 밝혔습니다.
- "XML 사이트맵의 경우 사이트맵에 포함할 수 있는 가장 중요한 태그 중 하나는 "lastmod" 태그입니다."
10. XML 사이트맵에는 모두 자체적으로 표준화된 200개의 상태 URL만 포함되어야 합니다.
활성 URL, 200개 상태, 색인 생성 가능 및 자체 정규화만 유지해야 합니다.
404 또는 301 리디렉션된 페이지를 계속 표시하면 검색 엔진이 XML 사이트맵 크롤링을 완전히 중지할 수 있습니다.
Mueller는 X(이전의 Twitter)에 대한 댓글에 다음과 같이 응답했습니다.
- “URL이 유효하지 않은 경우 사이트맵 파일 가져오기를 중지하지만 콘텐츠를 반환하거나 리디렉션하는 경우(권장 사항) 계속 시도합니다. 전체 사이트맵 파일은 사이트에서 가져온 모든 URL의 아주 작은 부분에 불과하기 때문에 문제를 일으키지 않아야 합니다.”
11. 검색 엔진은 XML 사이트맵을 매일 확인할 수 있습니다.
Microsoft의 Fabrice Canel은 Microsoft가 XML 사이트맵을 매일 확인한다고 공유했습니다.
Mueller는 Google이 빈도(일명 <lastmod>
태그)를 기반으로 XML 사이트맵을 확인한다고 공유했습니다.
12. 페이지 속도는 XML 사이트맵에 간접적으로 영향을 미칩니다.
우리 모두는 페이지 속도가 SEO 노력에 얼마나 중요한지 알고 있습니다. 그러나 성능이 느린 웹사이트가 XML 사이트맵에 어떤 영향을 줍니까?
Mueller는 다음과 같이 페이지 속도가 XML 사이트맵에 영향을 미치지 않아야 함을 확인했습니다.
- “시간이 초과되지 않는 한 괜찮을 것입니다. 불필요한 서버 부하를 방지하기 위해 최신 버전을 캐시할까요?”
사실 저는 검색 엔진이 웹사이트를 크롤링하여 주요 순위 변동을 일으킬 때 XML 사이트맵이 로드되지 않는 느린 성능의 웹사이트에서 작업했습니다.
웹사이트가 제대로 로드되지 않으면 XML 사이트맵에 간접적인 영향이 있습니다.
이것이 Gzip 압축을 사용하여 파일 크기를 줄이고 로딩 시간을 단축하는 것이 중요한 이유입니다.
13. XML 사이트맵에서 <priority> 태그 제거
Illyes는 XML 사이트맵의 <priority>
태그를 "a bag of noise"에 비유했습니다.
따라서 우선순위에 따라 XML 사이트맵에서 URL을 크롤링하기 위해 검색 엔진에 의존하고 있다면 오랜 시간을 기다려야 할 것입니다.
XML 사이트맵에서 이 태그를 제거하는 것이 좋습니다.
14. 탐색 구조 문제가 있는 경우 XML 사이트맵을 HTML 사이트맵과 페어링합니다.
HTML 사이트맵에 대한 감정은 항상 엇갈렸습니다.
Mueller는 HTML 사이트맵이 "절대 필요하지 않아야 한다"고 말했습니다.
그는 계속했다:
- “수년에 걸쳐 HTML 사이트맵에 대한 마음을 바꿨습니다. 절대 필요하지 않아야 합니다. 크고 작은 사이트에는 항상 명확한 탐색 구조가 있어야 합니다. HTML 사이트맵이 필요하다고 생각되면 대신 사이트 아키텍처를 개선하는 데 시간을 할애하십시오. HTML 사이트맵은 HTML 로딩 스피너가 있는 동일한 저장소에 맞습니다.”
<iframe src="https://mastodon.social/@johnmu/109477617298107922/embed" class="mastodon-embed" width="400" allowfullscreen="allowfullscreen"></iframe><script src="https://mastodon.social/embed.js" async="async"></script>
기업 수준에서 대규모 웹 사이트에서 작업할 때 웹 사이트 탐색 구조에는 여러 계층의 의사 결정자가 있는 경우가 많습니다. 그리고 종종 SEO 모범 사례가 고려됩니다.
웹사이트 탐색 및 내부 링크 계층 구조에 확신이 들 때까지 XML 사이트맵을 HTML 사이트맵과 연결합니다.
15. robots.txt 파일에 모든 XML 사이트맵을 포함하는 것을 잊지 마십시오.
robots.txt 파일의 링크로 XML 사이트맵(모두)을 포함하는 것을 잊지 마십시오.
다음은 예입니다.
robots.txt 파일에서 이것들이 어디로 가야 하는지 걱정하지 마십시오. robots.txt 파일의 XML 사이트맵 위치에는 영향이 없습니다.
뮬러는 다음과 같이 확인했습니다.
XML 사이트맵은 검색 엔진용 웹사이트의 청사진입니다.
새 웹 페이지를 시작하든 복제 페이지에 표준 태그를 추가하든 관계없이 XML 사이트맵은 연중무휴로 업데이트해야 합니다.
그러나 주의해서 그렇게 하십시오.
편집증에 빠지면 안 되지만 XML 사이트맵은 검색 엔진을 위한 집의 청사진입니다.
따라서 Google Search Console 및 Bing 웹마스터 도구에 XML 사이트맵을 제출하는 것을 잊지 마십시오.
이 기사에 표현된 의견은 게스트 작성자의 의견이며 반드시 검색 엔진 랜드가 아닙니다. 교직원 저자는 여기에 나열됩니다.