Giter Site home page Giter Site logo

jojoldu / markdown-tistory Goto Github PK

View Code? Open in Web Editor NEW
276.0 12.0 53.0 1.82 MB

작성된 마크다운의 내용과 이미지를 본인 티스토리에 업로드하는 프로젝트

Home Page: https://www.npmjs.com/package/markdown-tistory

JavaScript 70.55% CSS 15.09% HTML 14.35%

markdown-tistory's Introduction

markdown-tistory

node npm npm npm

PC에 작성된 마크다운 파일을 티스토리 OAuth API를 통해 HTML, 이미지, 구글 광고로 변환하여 포스팅해주는 스크립트

티스토리

1. Install

현재 nodejs 6.9.2 버전에서 개발되어있기에 6.x 버전 이상을 사용하길 권장드립니다.

기존의 npm 패키지 설치와 동일하게 아래와 같은 커맨드로 설치가 가능합니다.

npm install -g markdown-tistory

2. Usage

기본적으로 OAuth 키가 발급 되어야 사용 가능합니다.
가장 먼저 키 발급을 해주세요

2-1. 키 발급

먼저 티스토리 API로 이동하여 임시 클라이언트를 등록합니다.

(주의 : 서비스 URL 과 callback 경로에는 꼭 스크린샷처럼 http://localhost:5000/callback 으로 적어주세요.)

티스토리 API

등록 후 발급되는 client id와 secret key를 사용할 예정이니 메모장에 복사하시고

티스토리 클라이언트

명령 프롬프트(윈도우), 터미널(맥/리눅스)을 열어 markdown-tistory init 에디터 명령어를 입력하여, 값을 등록합니다.

아래중 하나의 에디터는 설치되어 있어야 합니다.

  • sublime
    • Sublime Text
  • atom
    • Atom Editor
  • code
    • Visual Studio Code
  • vim
  • emacs

PC에 설치된 에디터의 종류에 따라 입력하시면 됩니다.

예제)

markdown-tistory init code

오픈 된 파일에는 다음과 같은 값을 등록하시면 됩니다. (스크린샷은 Visual Studio Code 에디터 입니다.)

blog_json

  • blogName : 본인의 블로그 주소 (ex: jojoldu.tistory.com의 jojoldu를 입력하시면 됩니다.)
  • clientId : API에 등록한 client id
  • secretKey : API에 등록한 secret key
  • adsenseCode : 구글광고 코드

해당 파일 저장후, AccessToken을 발급 받겠습니다.
아래의 명령어를 입력합니다.

markdown-tistory token

브라우저가 열려 다음과 같이 OAuth2 인증이 등장합니다.

oauth

허가하기를 클릭하시면 터미널에 다음과 같이 성공 메세지가 출력됩니다.

issue_token

이제 인증키는 모두 발급 받았습니다.

티스토리 AccessToken은 1개월의 유효기간을 갖고 있습니다.
한달이 지나서 키가 만료되었다는 메세지가 보이면 다시 키를 발급(markdown-tistory token) 받으시면 됩니다.

2-2. 글 등록

마크다운 파일 위치를 지정하면 지정된 위치의 해당 파일을,
위치를 지정하지 않으면 현재 위치에서 해당 파일을 찾아 포스팅합니다.

  1. 현재 위치의 마크다운 파일
markdown-tistory write
  1. 절대주소로 마크다운 파일 지정
markdown-tistory write /Users/woowahan/Documents/git/markdown-tistory/README.md
  1. 현재 터미널 위치의 상대주소로 마크다운 파일 지정
markdown-tistory write ./README.md

비공개로 포스팅 되니, 본인 블로그의 관리자 페이지로 이동하여 게시글을 공개로 전환하시면 됩니다.

2-3. 등록된 글 수정

글 수정은 포스팅 ID가 꼭 필요합니다.

postid

(여기서 379가 포스팅Id입니다.)

markdown-tistory update 파일위치 포스팅ID

만약 파일위치를 입력하지 않으시면, 현재 위치의 마크다운 파일이 선택됩니다.

markdown-tistory update 포스팅ID

2-4. 블로그 정보 수정

이미 만들어진 blog.json 정보를 수정하고 싶다면 아래의 명령어를 사용하시면 됩니다.

('blog.json' 은 유저 홈 디렉토리에 생성이 됩니다.)

markdown-tistory show 에디터

생성된 blog.json이 지정한 에디터에 오픈됩니다.

2-5. 구글 애드센스

본인의 구글 애드센스코드를 미리 등록해야만 변환이 됩니다.
먼저 아래 명령어를 입력합니다.

markdown-tistory ad 에디터

ad.txt파일이 하나 생성되어 에디터로 표시됩니다.
아래처럼 본인의 애드센스 코드를 입력합니다.

('ad.txt' 은 유저 홈 디렉토리에 생성이 됩니다.)

ad_txt

저장후, 마크다운 파일 본문에 [[ad]] 를 추가하면 포스팅시에 자동으로 구글광고가 해당 영역에 추가됩니다.

마크다운 작성

ad_markdown

티스토리 반영

ad_tistory

아직 구글 애드센스 계정이 없으시다면 링크를 참고하여 가입해주세요.

3. 주의사항

  • 티스토리에서 5MB 이상의 이미지는 허용하지 않습니다.

    • 400에러가 발생하며 업로드가 안되니 웬만하면 5MB 이하로 맞춰주세요.
  • 문장의 첫 글자에 코드 문법이 있으면 파싱 에러가 발생합니다.

    • 띄어쓰기 한번을 해주세요
  • 티스토리에 직접 github-markdown.css 파일을 추가하기를 권장드립니다.

  • sudo를 통해 명령어를 실행하면 이후 에디터에서 저장이 안됩니다

    • init, token등 에디터를 통해 수정하는 기능들은 sudo 없이 실행해주세요
  • 게시글의 제목은 마크다운 파일명을 기준으로 합니다.

  • mac에서 토큰 발급 시 시스템 환경설정 > 공유 > AirPlay 수신 모드 해제 후 진행해주세요. (관련이슈)

4. Release Note

  • 0.1.6

    • 포스팅 수정 기능 추가
    • Promise -> async/await로 코드 개선
  • 0.1.5

    • 마크다운 파일 내에 이미지 경로만 있어도 정상 업로드 되도록 수정
  • 0.1.2

    • 파일명만 입력할 경우 현재 위치로 이미지 경로 인식못하는 버그 수정
  • 0.1.1

    • 구글 애드센스 자동 추가
  • 0.1.0

    • 전체코드 리팩토링

      • 콜백 -> Promise
      • Mocha 테스트 코드 추가
      • 도메인 Layer 분리
    • 마크다운 파일명으로 작성하기 기능 추가

      • 마크다운 파일명을 write와 함께 입력하면 해당 마크다운 파일을 티스토리에 작성
    • 이미지 상대경로외에 절대경로 검색 기능 추가

      • 기존에 마크다운 파일 위치를 기준으로만 가능했던 이미지 등록이 절대주소도 가능하도록 수정
    • 마크다운 CSS 적용 스크립트 제거

      • 해당 스크립트로 인해 RSS가 깨짐
      • 티스토리에 직접 CSS 파일 추가하기를 권장
  • 0.0.8

    • 별도의 css 추가없이 마크다운 스타일 적용
    • blog.json & token.json 홈 디렉토리에 생성 및 읽기로 변경 (업데이트시마다 init 했던 점 수정)
  • 0.0.7

    • 오타수정 (secrete -> secret)
  • 0.0.6

    • multi markdown의 테이블 문법 적용
    • 텍스트 내부에 code 블럭 문법 오류 수정
  • 0.0.5

    • 컬러 console 효과
    • http, https 등의 이미지 주소는 컨버팅 대상에서 제외
    • 이미지 주소 찾지 못하는 경우 해당 이미지 제외하고 다음 프로세스 진행되도록 기능 수정
  • 0.0.4

    • 기본기능 및 npm 등록

TO DO

  • 등록된 게시글 마크다운 파일로 다운로드 기능
  • 이글루스 블로그 추가

참고

markdown-tistory's People

Contributors

cozzin avatar eschocolat avatar glqdlt avatar jojoldu avatar violetbeach avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

markdown-tistory's Issues

대표 이미지 추가 방법

안녕하세요.
markdown-tistory를 사용해서 포스팅을 진행하는 와중에 궁금한 게 생겨 이슈로 남깁니다.

1번

현재 명령어를 통해 글의 내용에 노출되지 않는 대표 이미지 설정하는 방법을 모르겠습니다.
때문에 tistory에서 직접 글 수정 -> 완료 버튼 클릭 -> 대표 이미지 설정 -> 발행 과정을 거치고 있는데요.

하지만 tistory에서 직접 글 수정을 진행하게 되면 정상적으로 들여쓰기가 적용된 코드문이 다음과 같이 평문으로 출력되게 됩니다.

public enum ExampleEnum {     APPLE('apple'),     BANNA('banana'),      private String value;      public ExampleEnum(String value) {      this.value = value;     }     ... }

글을 직접 수정할 때 서식이 기본 모드로 변경되기 때문이라고 추측하고 있습니다.
때문에 tistory에서 직접 글 수정을 진행하고 싶지 않습니다.

write command를 통해 글을 포스팅할 때, 글의 내용에는 노출되지 않는 대표 이미지를 설정하는 방법이 있나요?

2번

1번의 과정을 거치고 update command를 통해 정상적으로 들여쓰기가 적용된 글로 수정할 수 있습니다.
하지만 해당 명령어를 통해 글 수정시, 대표 이미지가 초기화됩니다.

update command를 통해 글을 수정하더라도 대표 이미지가 초기화되지 않는 방법이 있나요?

markdown-tistory init 에디터에서 Promise 에러?

안녕하세요
티스토리에 글 쓰려고 설치해서 사용해보려고 하는데요.
Git Clone하고 npm install -g markdown-tistory로 설치해주고
(설치후 메세지에 to-markdown이 Deprecated 되고 Turndown으로 바뀌었다고 되서 이슈가있나 했지만 to-markdown 3.1.1이 설치가 되기는 해서 넘어갔습니다. 나중에 Turndown 설치해도 안되네요)
Open API등록하고 markdown-tistory init code로 VSCode 등록하려는데 Promise에러가 나네요 ㅠㅠ
제가 뭐 놓친것이 있을까요??

(master) % markdown-tistory init code                 ~/Tistory/markdown-tistory
(node:71754) UnhandledPromiseRejectionWarning: Not detected
(node:71754) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
(node:71754) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Airplay 켜진채로 토근발급 시 5000 port 이슈 공유

안녕하세요! 마크다운으로 티스토리 블로그 관리해보고 싶어서 사용하려고 하는데요ㅎㅎ
포트가 이미 사용되고 있다는 에러 메세지가 나와서 이슈 공유 차원에서 등록합니다.
readme에 간단히 추가해도 괜찮을 것 같아요

user@MacBook-Pro cozzin.tistory.com % markdown-tistory token
node:events:371
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::5000
    at Server.setupListenHandle [as _listen2] (node:net:1305:16)
    at listenInCluster (node:net:1353:12)
    at Server.listen (node:net:1440:7)
    at Function.listen (/usr/local/lib/node_modules/markdown-tistory/node_modules/express/lib/application.js:618:24)
    at startCallbackServer (/usr/local/lib/node_modules/markdown-tistory/lib/token-manager.js:100:9)
    at Object.exports.saveAccessToken (/usr/local/lib/node_modules/markdown-tistory/lib/token-manager.js:94:5)
    at /usr/local/lib/node_modules/markdown-tistory/lib/index.js:186:26
Emitted 'error' event on Server instance at:
    at emitErrorNT (node:net:1332:8)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  code: 'EADDRINUSE',
  errno: -48,
  syscall: 'listen',
  address: '::',
  port: 5000
}

5000 port를 점유하고 있는 해당 PID로 계속 kill 해봐도 다시 살아나고 있어서 문제가 되었습니다.

user@MacBook-Pro cozzin.tistory.com % sudo lsof -i :5000
COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ControlCe 479 user   20u  IPv4 0xfc5038e54f070395      0t0  TCP *:commplex-main (LISTEN)
ControlCe 479 user   21u  IPv6 0xfc5038e55424ad7d      0t0  TCP *:commplex-main (LISTEN)
ControlCe 479 user   37u  IPv6 0xfc5038e55e898b3d      0t0  TCP localhost:commplex-main->localhost:62339 (ESTABLISHED)
Whale\x20 783 user   38u  IPv6 0xfc5038e55424fffd      0t0  TCP localhost:62339->localhost:commplex-main (ESTABLISHED)
user@MacBook-Pro cozzin.tistory.com % sudo kill -9 479
user@MacBook-Pro cozzin.tistory.com % sudo lsof -i :5000
COMMAND     PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ControlCe 40193 user   20u  IPv4 0xfc5038e55d580e35      0t0  TCP *:commplex-main (LISTEN)
ControlCe 40193 user   21u  IPv6 0xfc5038e55424a69d      0t0  TCP *:commplex-main (LISTEN)
user@MacBook-Pro cozzin.tistory.com % sudo kill -9 783  
user@MacBook-Pro cozzin.tistory.com % sudo lsof -i :5000
COMMAND     PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ControlCe 40193 user   20u  IPv4 0xfc5038e55d580e35      0t0  TCP *:commplex-main (LISTEN)
ControlCe 40193 user   21u  IPv6 0xfc5038e55424a69d      0t0  TCP *:commplex-main (LISTEN)
user@MacBook-Pro cozzin.tistory.com % sudo kill -9 40193
user@MacBook-Pro cozzin.tistory.com % sudo lsof -i :5000
COMMAND     PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
ControlCe 40399 user   20u  IPv4 0xfc5038e55c088e55      0t0  TCP *:commplex-main (LISTEN)
ControlCe 40399 user   21u  IPv6 0xfc5038e55424fffd      0t0  TCP *:commplex-main (LISTEN)

확인해보니 Monterey에서 Airplay 수신모드를 켜고 있으면 5000 포트를 점유하게 되네요ㅠ
https://stackoverflow.com/a/69718911

image

여기서 Airplay 수신모드를 해제하면 포트가 점유되는 이슈가 해결됩니다!

user@MacBook-Pro cozzin.tistory.com % sudo lsof -i :5000    
user@MacBook-Pro cozzin.tistory.com % markdown-tistory token
Access token issued.

큰 어려움은 아니지만 이슈 공유 차원에서 등록합니다!
어쩌면... 5000 말고 다른 포트를 사용하는 것도 좋을 것 같습니다.

티스토리 Desktop 버전에서 <code> 스타일이 적용되지 않는 현상

안녕하세요!
markdown-tistory를 너무 사랑하는 유저입니다.

티스토리에 업로드를 하는데 아래와 같은 현상을 발견해서 이슈 등록하였습니다.

현상
markdown 문법 중 코드 블록(```)을 사용하여 코드를 쓰면, 모바일에서는 스타일이 적용이 잘 되는데, 데스크탑 버전에서는 코드 블록의 스타일이 적용되지 않았습니다.

샘플 : https://jhleed.tistory.com/124
(아직 다듬은 글이 아닌데, 샘플을 보여드려야 해서 공개로 바꿨네요 ㅋㅋ)

모바일 버전
image

데스크탑 버전
image

현재까지 파악한 내용은 모바일에서는 <pre> 태그에 hljs, lua 클래스가 적용이 되었는데 데스크탑에서는 적용이 되어 있지 않습니다. 아마도 이와 관련이 있을 듯 합니다.

image

image

유용한 플러그인 만들어주시고, 업데이트도 잘 해주셔서 항상 감사하게 생각하고 있습니다.
좋은 하루 되세요. :)

Bug : 이미지 업로드

마크다운 이미지 문법에서 Alt text 부분이 누락되면 이미지가 올라가지 않는 현상을 발견하였습니다.
(notion에서 기본 markdown export를 하면 alt text가 변경되는 형태라서 현재 수동으로 바꿔주고 있습니다. ㅎㅎ)

![Alt text](/path/to/img.jpg) => Alt text가 누락되는 경우 이미지가 올라가지 않음

이미지가 올라가지 않는 경우
image

이미지가 정상적으로 올라가는 경우
image

수정시 대표 이미지 초기화 관련

안녕하세요.
수정 API로 게시글 수정을 하면 대표 이미지가 초기화 되어있습니다.
markdown에 추가한 이미지 중에서 대표 이미지로 지정할 수 있는 부분이 있을까요?
그리고 아래 이슈처럼 이미 올라간 글을 수정하면 style이 변경되어버립니다.

업로드 후 수정 관련

write 후 카테고리, 태그, 공개발행 후 저장하였을 때, 인용구가 style1로 변경되는 문제가 있습니다.
따로 매뉴얼이 없어보여 가이드가 가능하다면 요청드립니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.