Migrate to Netlify Today

Netlify announces the next evolution of Gatsby Cloud. Learn more

ContactSign Up
Community Plugin
View plugin on GitHub

gatsby-remark-obsidian-syntax

Gatsby 플러그인으로, Obsidian 마크다운 문법을 Gatsby 사이트에서 사용할 수 있게 해주는 remark 플러그인입니다.

설치

npm install gatsby-remark-obsidian-syntax
# 또는
yarn add gatsby-remark-obsidian-syntax

기능

이 플러그인은 다음과 같은 Obsidian 문법을 지원합니다:

  • highlight: ==highlight== → <span class="obsidian-highlight">highlight</span>
  • tag: #tag → <a class="obsidian-tag" href="/tags/tag">#tag</a>
  • internalLink: [[internal-link]] → <a class="obsidian-internal-link" href="/pages/internal-link">internal-link</a>
  • internalLink|customText: [[internal-link|custom-text]] → <a class="obsidian-internal-link" href="/pages/internal-link">custom-text</a>
  • 이미지: ![[이미지.png]] → <img class="obsidian-image" src="/assets/이미지.png" alt="이미지.png" />

사용법

gatsby-config.js 설정

// gatsby-config.js
module.exports = {
  plugins: [
    {
      resolve: `gatsby-transformer-remark`,
      options: {
        plugins: [
          {
            resolve: `gatsby-remark-obsidian-syntax`,
            options: {
              // 해시태그를 URL로 변환하는 함수
              linkTag: (hashTag) => `/tags/${hashTag.replace(/^#/, '')}`,
              
              // 내부 링크를 URL로 변환하는 함수
              linkPage: (page) => `/pages/${page}`,
              
              // 이미지 경로를 URL로 변환하는 함수
              linkImage: (filename) => `/assets/${filename}`,
              
              // (선택 사항) 커스텀 CSS 클래스명 지정
              className: {
                highlight: 'custom-highlight',     // 기본값: 'obsidian-highlight'
                tag: 'custom-tag',                 // 기본값: 'obsidian-tag'
                internalLink: 'custom-page-link',  // 기본값: 'obsidian-internal-link'
                embedImage: 'custom-image'         // 기본값: 'obsidian-image'
              }
            },
          },
        ],
      },
    },
  ],
};

CSS 스타일링

플러그인은 다음 클래스를 사용하여 변환된 Obsidian 요소에 스타일을 적용할 수 있습니다.

/* 하이라이트 스타일링 */
.obsidian-highlight {
  background-color: yellow;
  padding: 0 2px;
}

/* 해시태그 스타일링 */
.obsidian-tag {
  color: #0366d6;
  text-decoration: none;
}

/* 내부 링크 스타일링 */
.obsidian-internal-link {
  color: #8b5cf6;
  text-decoration: none;
}

/* 이미지 스타일링 */
.obsidian-image {
  max-width: 100%;
  border-radius: 4px;
}

옵션

플러그인은 다음과 같은 옵션을 사용합니다.

옵션 타입 필수 설명
linkTag 함수 예 해시태그를 URL로 변환하는 함수
linkPage 함수 예 내부 링크를 URL로 변환하는 함수
linkImage 함수 예 이미지 경로를 URL로 변환하는 함수
className 객체 아니오 각 요소에 적용할 CSS 클래스명 (기본값 제공됨)

예제

마크다운 입력

안녕하세요, 이것은 Obsidian 문법 예시입니다.

==중요한 내용==은 하이라이트로 표시됩니다.

#개츠비 #마크다운 #옵시디언 태그도 지원합니다.

내부 링크: [[관련페이지]]

이미지: ![[screenshot.png]]

HTML 출력

<p>안녕하세요, 이것은 Obsidian 문법 예시입니다.</p>

<p><span class="obsidian-highlight">중요한 내용</span>은 하이라이트로 표시됩니다.</p>

<p><a class="obsidian-tag" href="/tags/개츠비">#개츠비</a> <a class="obsidian-tag" href="/tags/마크다운">#마크다운</a> <a class="obsidian-tag" href="/tags/옵시디언">#옵시디언</a> 태그도 지원합니다.</p>

<p>내부 링크: <a class="obsidian-internal-link" href="/pages/관련페이지">관련페이지</a></p>

<p>이미지: <img class="obsidian-image" src="/assets/screenshot.png" alt="screenshot.png" /></p>

커스텀 클래스명 사용 예

// gatsby-config.js
{
  resolve: `gatsby-remark-obsidian-syntax`,
  options: {
    linkTag: (hashTag) => `/tags/${hashTag.replace(/^#/, '')}`,
    linkPage: (page) => `/pages/${page}`,
    linkImage: (filename) => `/assets/${filename}`,
    className: {
      highlight: 'custom-highlight',
      tag: 'custom-tag',
      internalLink: 'custom-page-link',
      embedImage: 'custom-image'
    }
  }
}

위 설정의 HTML 출력:

<p><span class="custom-highlight">중요한 내용</span>은 하이라이트로 표시됩니다.</p>

<p><a class="custom-tag" href="/tags/gatsby">gatsby</a> <a class="custom-tag" href="/tags/markdown">markdown</a></p>

<p>내부 링크: <a class="custom-page-link" href="/pages/관련페이지">관련페이지</a></p>

<p>이미지: <img class="custom-image" src="/assets/screenshot.png" alt="screenshot.png" /></p>

기여

이슈와 풀 리퀘스트는 환영합니다! 기여하기 전에 이슈를 먼저 생성해주세요.

라이선스

MIT 라이선스

© 2026 Gatsby, Inc.