티스토리 블로그 자동으로 키워드 링크 매칭하기

2023. 11. 6. 14:34·개발/티스토리

티스토리와 같은 블로그에서 글을 쓰다보면 키워드에 지난 글 링크를 걸어야 할 때가 많다. 보통 이럴 때는 다음과 같은 과정을 거치게 된다.

  1. 키워드와 관련된 지난 글을 찾는다.
  2. 지난 글의 링크를 복사한다.
  3. 에디터로 돌아와 지난 글의 링크를 건다.

그런데 이는 키워드가 많아지면 상당히 귀찮은 일이 되며, 또 지난 번에 어떤 글을 썼는지 모두 기억하고 있기도 쉽지가 않다. 이를 자동으로 매칭할 수 있는 방법은 없을까?

 

다음 자바스크립트 코드를 사용하면 블로그 콘텐츠의 내용을 글자별로 뽑아 자동으로 링크를 걸 수 있다. 이를 위해서는 키워드와 이에 해당하는 링크를 매핑시켜줘야 하는데, 한 번 설정한 다음에는 각 본문에 처음으로 등장하는 해당 키워드가 링크 태그로 바뀌게 된다.

document.addEventListener("DOMContentLoaded", function () {
  console.log("DOM content loaded.");

  const articleContent = document.getElementById("article-content");
  const keywordPageMapping = {
    "블로그": "https://tistory.com",
    "원룸테이블": "https://oneroomtable.com",
    "발리": "https://oneroomtable.com/category/bali",
    "여행": "https://oneroomtable.com/travel"
  };

  const linkedKeywords = new Set();

  for (const keyword in keywordPageMapping) {
    const keywordRegex = new RegExp(escapeRegExp(keyword), "gi");
    const linkedKeyword = `${keyword}`;
    console.log(`Checking for keyword: ${keyword}`);

    articleContent.innerHTML = articleContent.innerHTML.replace(keywordRegex, matched => {
      console.log(`Found a match: ${matched}`);
      if (!linkedKeywords.has(keyword)) {
        linkedKeywords.add(keyword);
        console.log(`Linking keyword: ${keyword}`);
        return matched.replace(new RegExp(escapeRegExp(keyword), "gi"), linkedKeyword);
      }
      return matched;
    });
  }

  console.log("Finished processing keywords.");
  
  function escapeRegExp(string) {
    return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
  }
});

마지막에 있는 escapeRegExp는 문자열을 받아와서 해당 문자열 내의 문자들을 이스케이프(escape) 처리해 함수다. 예를 들어, escapeRegExp 함수를 사용하지 않고 문자 "."을 정규표현식으로 검색하려면 /\./과 같이 이스케이프 처리를 해야 한다. 그러나 위 함수를 사용하면 문자열 그대로 바로 검색이 가능하다.

 

이를 실제로 적용해보면 다음과 같은 결과물을 얻을 수 있다. 예상대로 첫번째 키워드에 지정해둔 링크가 잘 걸리고 있다.

 

See the Pen Untitled by Jeong (@jeongKR) on CodePen.

'개발 > 티스토리' 카테고리의 다른 글

티스토리에서 LazyLoading 구현하는 방법  (0) 2023.11.03
'개발/티스토리' 카테고리의 다른 글
  • 티스토리에서 LazyLoading 구현하는 방법
휘Hwi
휘Hwi
여행, 사진, 개발, 책 이야기를 기록하는 여행자 휘의 블로그 𓂍
마이리얼트립 프로모션 할인 🏝️
마이리얼트립 호텔 예약 배너
※ 배너를 클릭하여 상품 구매 시, 파트너스 활동에 대한 소정의 수수료를 지급받습니다. 구매자에게 추가로 부과되는 수수료는 없습니다.
  • 휘Hwi
    휘: 끝나지 않은 이야기
    휘Hwi
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 기록
        • 일상 에세이
        • 인사이트
        • 투자와 재테크
        • 코인 이야기
        • 아카이빙
        • 집무실 레터
        • 사랑에 대하여
        • 번역 이야기(完)
        • 프리랜서 일지(完)
      • 여행 N
        • 🌎 세계 여행기 S1 (完)
        • 🌊 삼삼한 여행기 (完)
        • 🚶 온더로드
        • 🇯🇵 일본
        • 🏝️ 발리
        • 🇻🇳 베트남 N
        • 🇱🇰 스리랑카
        • 🇮🇳 인도
        • 🇹🇭 태국
        • 🇸🇬 싱가포르
        • 🇦🇺 호주
        • 🇭🇰 홍콩
        • 🇰🇷 한국
        • 🍚 여행자의 한 끼
        • ℹ️ 여행 정보
      • 사진
        • 사진가
        • 사진 이론과 생각
        • 사진 관련 정보
      • 영상
        • 파이널컷 모션 공부
        • 고프로 GoPro
        • 영상 관련 정보
      • 책
        • 책 읽고 쓰기
      • 개발
        • 티스토리
        • Internet
        • HTML
        • CSS
        • JavaScript
        • Typescript
        • React
        • Node.js
        • Express
        • NestJS
        • Python
        • Django
        • MySQL
        • MongoDB
        • AWS
        • Deployment
        • Terminal
        • Git
        • Glossaries
        • Articles
        • Projects
        • TIL;
      • 미분류
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
휘Hwi
티스토리 블로그 자동으로 키워드 링크 매칭하기
상단으로

티스토리툴바