Ghost 블로그를 관리하는 pi 익스텐션 소개
Ghost 블로그를 다루는 pi 익스텐션
이번에 만든 익스텐션은 Ghost 블로그의 글을 읽고, 찾고, 쓰고, 수정하고, 삭제할 수 있게 해줍니다. 단순한 조회 도구가 아니라, 블로그 운영 흐름 전체를 pi 안에서 이어서 처리할 수 있다는 점이 핵심입니다.
무엇을 할 수 있나
ghost_list_posts: 글 목록 조회ghost_search_posts: 제목, 슬러그, 요약, 본문 기준 검색ghost_get_post: 특정 글 조회ghost_create_post: 새 글 작성ghost_update_post: 기존 글 수정ghost_delete_post: 글 삭제
동작 방식
이 익스텐션은 Ghost Admin API를 사용합니다. 설정 파일 .pi/ghost-blog.json에 사이트 주소와 API 키를 넣으면, 내부에서 JWT를 만들어 인증한 뒤 Ghost API를 호출합니다.
코드 소개
핵심은 pi에 도구를 등록하고, 각 도구가 Ghost API를 호출하도록 연결하는 부분입니다.
pi.registerTool({
name: "ghost_list_posts",
label: "Ghost 글 목록",
description: "Ghost 블로그 글 목록을 가져옵니다.",
execute: async (_toolCallId, params, signal) => {
const config = await loadConfig();
const result = await browsePosts(config, signal, { limit: params.limit });
return {
content: [{ type: "text", text: result.posts.length ? "..." : "글이 없습니다." }],
details: result,
};
},
});설정 파일은 아래처럼 둡니다.
{
"siteUrl": "https://example.com",
"apiKey": "id:secret",
"apiVersion": "v6.0",
"defaultLimit": 15
}인증은 Admin API key로 JWT를 만들어 처리합니다. 즉, 별도 로그인 없이 익스텐션이 Ghost 관리 API를 직접 호출합니다.
왜 Admin API인가
읽기 전용 공개 글만 다루는 경우에는 Content API도 선택지가 될 수 있습니다. 하지만 이 익스텐션은 작성, 수정, 삭제까지 포함하므로 Admin API 하나로 통일하는 편이 더 단순하고 관리하기 좋습니다.
사용할 때의 장점
- 글을 찾고 수정하는 작업을 한 곳에서 처리할 수 있습니다.
- 검색과 목록 조회를 함께 제공해 운영 편의성이 좋습니다.
- 삭제 전 확인을 거쳐 실수 가능성을 줄였습니다.
- HTML 또는 Lexical 기반 본문을 모두 다룰 수 있습니다.
정리
이 익스텐션은 Ghost 블로그 운영을 자동화하고, 글 관리 작업을 pi 안으로 가져오기 위한 도구입니다. 앞으로 블로그 글을 자주 다루는 환경이라면 꽤 유용하게 쓸 수 있습니다.