블로그 목차, 이제 PHP DOM으로 뚝딱! 시간 절약 & 구글 랭킹 UP

블로그 목차, 이제 PHP DOM으로 뚝딱! 시간 절약 & 구글 랭킹 UP


블로그 목차 자동화: PHP DOM으로 SEO와 사용자 경험을 동시에 잡는 법! 여러분이 직접 만드신 PHP DOM 코드를 활용하여 블로그 목차를 자동으로 생성하고, 이것이 검색 엔진 최적화(SEO)와 사용자 경험에 어떻게 긍정적인 영향을 미치는지 자세히 알려드립니다.

블로그 글을 작성하고 발행할 때마다 항상 고민되는 부분이 바로 목차입니다. 목차는 독자가 글의 전체적인 흐름을 빠르게 파악하고 원하는 정보를 쉽게 찾아갈 수 있도록 돕는 중요한 요소죠. 그런데 매번 수동으로 목차를 만드는 건 여간 번거로운 일이 아닐 수 없습니다. 이럴 때 제가 사용하는 PHP DOM 기반의 목차 자동화 함수는 정말 큰 도움이 됩니다. 이 글에서는 Rankablog 에서 사용하는 코드를 바탕으로 목차가 왜 중요한지, 그리고 어떻게 여러분의 블로그에 적용할 수 있는지 알아보겠습니다.

목차

1. 왜 블로그 글에 목차가 필요할까요?

2. 내 PHP DOM 코드로 목차 자동화하기

3. 자주 묻는 질문

왜 블로그 글에 목차가 필요할까요?

숲길에서 'SEO'와 'UX'가 표시된 이정표를 보고 있는 한국 여성.
명확한 목차는 독자와 검색 엔진 모두를 위한 안내자입니다.

목차가 블로그 글에 미치는 긍정적인 영향은 크게 두 가지로 나눌 수 있습니다.

1. 검색 엔진 최적화(SEO)에 미치는 긍정적인 영향

구글과 같은 검색 엔진은 사용자가 정보를 얼마나 쉽게 찾을 수 있는지, 즉 사용자 경험(UX)을 매우 중요하게 생각합니다. 목차는 이 사용자 경험을 향상시키는 핵심 요소 중 하나이며, 이는 곧 SEO에도 긍정적인 영향을 미칩니다.

  • 사이트 링크(Sitelinks) 생성 가능성 증가: 구글은 목차를 활용하여 검색 결과에 '사이트 링크'를 표시할 수 있습니다. 이는 사용자가 검색 결과에서 바로 특정 섹션으로 이동할 수 있게 하여 클릭률(CTR)을 높이는 데 기여합니다.
  • 콘텐츠 구조 명확화: 목차는 검색 엔진 크롤러에게 글의 구조와 주요 내용을 명확하게 전달합니다. <h2>, <h3> 태그와 같은 제목 태그의 계층 구조가 목차를 통해 더욱 부각되며, 이는 검색 엔진이 글의 주제를 더 잘 이해하는 데 도움을 줍니다.
  • 키워드 노출: 목차 자체에 주요 키워드가 포함될 수 있어, 관련 검색어에 대한 가시성을 높일 수 있습니다.

2. 사용자 경험(UX) 향상

독자 입장에서 목차는 글을 읽는 경험을 훨씬 편리하고 효율적으로 만들어 줍니다.

  • 빠른 정보 탐색: 긴 글에서 원하는 정보를 찾기 위해 전체를 스크롤 할 필요 없이, 목차를 통해 한 번에 해당 섹션으로 이동할 수 있습니다.
  • 글의 개요 파악: 글을 읽기 전 목차를 훑어보면서 어떤 내용이 다뤄질지 미리 파악할 수 있어, 독자가 시간을 효율적으로 사용할 수 있습니다.
  • 가독성 증진: 잘 정리된 목차는 글이 체계적이라는 인상을 주어, 독자가 글을 더 신뢰하고 끝까지 읽게 만듭니다.


내 PHP DOM 코드로 목차 자동화하기

현대적인 사무실에서 노트북 화면에 목차 구조가 보이는 것을 보며 커피를 마시고 있는 한국 여성.
PHP DOM을 활용한 목차 자동화: 복잡한 코딩을 효율적인 결과로.

Rankablog에서 사용중인 PHP DOM 코드는 블로그 글에서 <h2> 태그의 내용을 효과적으로 추출하여 목차를 자동으로 생성하는 데 최적화되어 있습니다. 이 함수는 다음과 같은 과정을 통해 작동합니다.

PHP DOM 목차 생성 함수 분석

<?php
public function getH2Content(string $html) {
    // 1. DOMDocument 객체 생성: HTML 문서를 로드하고 파싱하는 데 사용됩니다.
    $dom = new DOMDocument();
    
    // 2. HTML 로드: 제공된 HTML 문자열을 DOMDocument에 로드합니다.
    // "<meta http-equiv="Content-Type" content="text/html; charset=utf-8">"를 추가하여 인코딩 문제를 방지하고,
    // @를 사용하여 HTML 파싱 중 발생할 수 있는 경고를 억제합니다.
    @$dom->loadHTML("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">" . $html); 

    // 3. DOMXPath 객체 생성: DOM 문서 내에서 XPath 쿼리를 실행하여 특정 요소를 찾기 위해 사용됩니다.
    $xpath = new DOMXPath($dom);
    
    // 4. 모든 <h2> 태그 선택: XPath 쿼리 '//h2'를 사용하여 문서 내의 모든 <h2> 요소를 선택합니다.
    $h2Nodes = $xpath->query('//h2');
    
    $h2Contents = [];
    // 5. <h2> 태그의 텍스트 콘텐츠 추출: 선택된 각 <h2> 노드를 반복하면서 그 안의 텍스트 내용을 가져옵니다.
    // trim() 함수로 앞뒤 공백을 제거하여 깔끔한 목차 항목을 만듭니다.
    foreach ($h2Nodes as $h2) {
        $h2Contents[] = trim($h2->textContent);
    }
    
    // 6. 추출된 <h2> 내용 반환: 모든 <h2> 제목이 포함된 배열을 반환합니다.
    return $h2Contents;
}
?>


이 함수를 사용하면 여러분이 작성한 블로그 글의 HTML을 입력으로 받아, 모든 <h2> 제목을 배열 형태로 반환해줍니다. 이제 이 배열을 가지고 실제 블로그에 목차를 추가하는 과정을 상상해봅시다.

목차 적용 예시

블로그 글에 목차 삽입 시나리오

만약 블로그 포스트의 HTML 내용이 다음과 같다고 가정해봅시다.

<div class="blog-post-content">
    <h2><strong>블로그 목차의 중요성</strong></h2>
    <p>목차는 독자와 검색 엔진 모두에게 중요합니다.</p>
    <h2><strong>PHP DOM으로 목차 자동화</strong></h2>
    <p>코드를 통해 목차를 효율적으로 만들 수 있습니다.</p>
    <h3>DOMDocument 사용법</h3>
    <h2><strong>SEO 효과 극대화</strong></h2>
    <p>구글 랭킹에 긍정적 영향을 줍니다.</p>
</div>

여러분의 getH2Content() 함수를 이 HTML에 적용하면 다음과 같은 결과가 반환됩니다.

<?php
$blogContentHtml = '<div class="blog-post-content">...</div>'; // 위 HTML 내용
$h2Titles = getH2Content($blogContentHtml);
print_r($h2Titles);
/* 결과:
Array
(
    [0] => 블로그 목차의 중요성
    [1] => PHP DOM으로 목차 자동화
    [2] => SEO 효과 극대화
)
*/
?>

이제 이 배열을 사용하여 블로그 글 상단에 동적으로 목차를 생성할 수 있습니다. 각 제목을 클릭하면 해당 <h2> 태그로 스크롤 되는 기능을 추가하면 완벽한 목차가 완성됩니다.


주의하세요!
목차를 만들 때는 <h2> 태그의 텍스트만 추출하고, 실제 블로그 글 내의 <h2> 태그에는 고유한 id 값을 부여하여 목차에서 해당 id로 바로 이동할 수 있도록 연결(앵커 링크)해주는 작업이 필요합니다. 이는 PHP 코드 내에서 또는 JavaScript를 사용하여 동적으로 처리할 수 있습니다.


자동 목차 생성의 핵심 이점

시간 절약: 수동 목차 생성 시간 대폭 감소
SEO 향상: 사이트 링크 노출 및 크롤링 효율 증대
사용자 경험: 편리한 정보 탐색과 높은 가독성 제공
자동화 예시:
getH2Content() 함수로 <h2> 제목 추출 후 동적 목차 생성


자주 묻는 질문

Q: <h3>나 다른 제목 태그도 목차에 포함할 수 있나요?
A: 네, 충분히 가능합니다. 여러분의 getH2Content 함수에서 $xpath->query('//h2') 부분을 $xpath->query('//h2|//h3|//h4') 와 같이 수정하면 <h2>, <h3>, <h4> 태그를 모두 가져올 수 있습니다. 이렇게 하면 더 세분화된 목차를 만들 수 있습니다.
Q: 목차 자동화는 모든 웹사이트에 적용할 수 있나요?
A: PHP로 서버 사이드에서 HTML을 생성하거나 처리하는 환경이라면 대부분 적용할 수 있습니다. 워드프레스나 다른 CMS 환경에서도 해당 테마나 플러그인에 통합하여 사용할 수 있는 경우가 많습니다.
Q: @$dom->loadHTML()에서 @를 사용하는 이유가 무엇인가요?
A: @는 PHP의 오류 제어 연산자로, 해당 표현식에서 발생하는 경고나 오류 메시지를 화면에 출력하지 않도록 합니다. loadHTML() 함수는 HTML 문서의 문법이 완벽하지 않을 때 경고를 발생시키는 경우가 많아, 이러한 경고가 사용자에게 노출되는 것을 막기 위해 사용됩니다. 하지만 실제 서비스에서는 libxml_use_internal_errors(true)libxml_clear_errors()를 사용하여 더 정교하게 오류를 처리하는 것이 권장됩니다.

여러분이 만드신 PHP DOM 함수는 시간을 절약하고 블로그의 가치를 높이는 훌륭한 도구입니다. 이 자동화된 목차 생성 기능을 통해 독자들에게 더 나은 경험을 제공하고, 궁극적으로는 검색 엔진에서의 순위 상승에도 기여할 수 있을 겁니다. 혹시 이 외에도 블로그 최적화에 대해 궁금한 점이 있으신가요?

관련글

태그: PHP DOM, 블로그 목차 자동화, SEO, 사용자 경험, DOMDocument, DOMXPath, 웹 최적화, 콘텐츠 전략, PHP 코드 활용, 검색 엔진 순위