Jekyll 네이버 신디케이션 핑 보내기

22 March 2018


unity

네이버 웹마스터 도구를 사용하면 사이트맵, RSS 이외에도 신디케이션 핑이라는 도구가 있다. 신디케이션은 웹사이트가 보유한 콘텐츠를 다른 웹사이트가 이용할 수 있게 하는 방식이라고 적혀있는데, 그냥 쉽게 말해서 다른 방식의 사이트맵이라고 생각하면 될 것 같다.

로봇이 웹사이트 수집을 하는 횟수가 많을 수록 검색결과에 표시될 가능성이 높아지는데 SEO 작업이 끝났을 경우에 한해서 네이버 웹사이트 도구는 웹사이트 수집을 일일 50회 로 제한하고 있기 때문에 보다 적극적으로 내 사이트를 수집을 하게 하겠다! 하는 분들은 신디케이션 핑을 사용하여 추가로 수집을 요청하면 된다.

naver webmaster syndication ping

네이버 신디케이션 핑 개념도

위의 그림에서 보이는 것처럼 신디케이션 핑은 소유확인을 완료한뒤 사용할 수 있으며 네이버에서 하라는데로 XML 파일을 만들어 요청하면 되는데 문제는 이 XML을 네이버 형식에 맞게 만들어주는 연동 플러그인이 생각보다 많이 없다. 현재는 텍스트큐브워드프레스가 연동 플러그인을 지원하고 있으며 네이버 가이드에서도 호스팅 업체에서 지원하지 않을 경우 알아서 하라는 식이다. Jekyll을 사용하는 필자의 블로그도 얘들이 플러그인을 지원해줄리 만무하니 결국 직접 작성을 해보기로 했다.

sticker
목마른자가 우물을 파야하는법..

Syndication XML 만들기

  • xml 파일명과 위치는 별다른 제약이 없다. 원하는데로 작성해주면 된다.
  • 포스트(entry)는 최대 100개까지 작성할 수 있다고 한다.
  • 자세한 작성법은 네이버가 제공하는 신디케이션 사용자 가이드을 참고하자.
  • 상단에 layout:null을 기입해야 Jekyll에서 제공하는 Variable들을 사용할 수 있다.
  • sitename, author, email등은 config.yml에 저장되어 있는 변수들이다. 해당 파일에 변수가 정의되어 있지 않으면 공백으로 출력된다.
---
layout: null
---
<feed xmlns="http://webmastertool.naver.com">
  <!-- 피드 문서를 담고있는 카테고리 URL -->
  <id>{{- '/' | absolute_url -}}</id>
  <!-- 피드 문서를 나타내는 제목 -->
  <title>Syndication Document</title>
  <!-- 작성자 정보 -->
  <author>
    <name>{{- site.author -}}</name>
    <url>{{- '/' | absolute_url -}}</url>
    <email>{{- site.email -}}</email>
  </author>
  <!-- 신디케이션 문서 작성 시간 -->
  <updated>{{- site.time | date_to_xmlschema -}}</updated>
  <!-- 웹사이트 정보 -->
  <link rel="site" href="{{- '/' | absolute_url -}}" title="{{- site.sitename -}}"/>
  <!-- 포스팅 정보 (최대 100개, 50MB 이하로 제한) -->
  {% for post in site.posts limit:100 %}
  <entry>
    <id>
      {{ post.url | prepend: site.baseurl | prepend: site.url }}
    </id>
    <title>
      <![CDATA[ {{ post.title | xml_escape }} ]]>
    </title>
    <author>
      <name>{{- site.author -}}</name>
    </author>
    <updated>{{ post.date | date_to_xmlschema }}</updated>
    <published>{{ post.date | date_to_xmlschema }}</published>
    <link rel="via" href="{{- '/' | absolute_url -}}" title="{{- site.sitename -}}"/>
    <!-- 포스트 내용 HTML -->
    <content type="html">
    <![CDATA[
    {{ post.content }}
    ]]>
    <!-- 포스트 내용 TEXT -->
    </content>
    <summary type="text">
    <![CDATA[
    {{- post.excerpt | strip_html | truncatewords: 100 -}}
    ]]>
    </summary>
    <!-- 포스트 카테고리 -->
    <category term="category" label="category"/>
  </entry>
  {%- endfor -%}
  <!-- 삭제된 포스팅 정보 -->
  <!--
  <deleted-entry ref="http://www.syndi-example.com/bbs/board.php?bo_table=search_info&id=11" when="2016-06-26T00:10:05+09:00"/>
  -->
</feed>
naver webmaster syndication ping

신디케이션 핑 제출

naver webmaster syndication ping

신디케이션 핑 수집 현황

작성한 XML을 신디케이션 핑 제출 페이지에 들어가 제출해주면 수집이 되는 것을 확인할 수 있다.

기존 방식과 신디케이션 핑의 차이점

  • 신디케이션 핑을 실제로 적용해보니 기존 방식과는 차이가 몇가지 있는데 내용을 추가한다.
    1. 적용이 빠름 : 단 한번의 핑으로 몇 분만에 검색 결과가 반영된다
    2. 검색결과 Description이 신디케이션 entry의 summary text로 전부 바뀜, 결과적으로 깔끔해졌다
    3. 블로그 카테고리로 올라갔던 포스트들이 싹 내려갔고 이미지 수집도 없어졌다

PS. Jekyll 변수 무효 처리를 안했더니 모든 포스팅을 다 긁어와서 순간 페이지가 엄청나게 길어졌다 ㅡㅡ;; 변수처리 무효화는 { % raw % }코드{ % endraw % } 였다 잊지말자.. ㅠ