Agent skill

Book PDF Pagedjs

by bam-bam-2 in bam-bam-2/solo-skills

마크다운 원고를 실제 책처럼 보이는 PDF/EPUB 전자책으로 만들 때 사용. An agent skill from bam-bam-2/solo-skills.

MITAuto-check passedDocuments & Office

Install Book PDF Pagedjs

skills CLI
$ npx skills add bam-bam-2/solo-skills --skill book-pdf-pagedjs -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install bam-bam-2/solo-skills book-pdf-pagedjs --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/bam-bam-2/solo-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/book-pdf .claude/skills/book-pdf-pagedjs && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
book-pdf-pagedjs
GitHub stars
367
Token cost
~2.5k tokens
SKILL.md length
1,338 words
Files
2 (incl. scripts)
Skills in repo
38
Repo updated
First seen
Licence
MIT

At a glance

마크다운 원고를 실제 책처럼 보이는 PDF/EPUB 전자책으로 만들 때 사용. An agent skill from bam-bam-2/solo-skills.

  • Works in 12 steps: page.pdf({width, height}) 파라미터가 무시된다. 항상… → page.setViewportSize()가 없다. 뷰포트 크기를 못… → page.addScriptTag()가 없다. 외부… → …
  • Tasks that involve PDF
  • SKILL.md covers 이 환경(Aside REPL)의 알려진 함정, 절차, 어색한 쪽 분리(내용이 잘려서 다음 페이지로 넘어가는… and flexbox를 부/장 오프너에 쓰지 말 것, plus 6 more sections
  • Runs Python scripts from its folder; calls magick, pandoc and pdftoppm; reaches unpkg.com

What it does

Book PDF Pagedjs is an agent skill from bam-bam-2/solo-skills. 마크다운 원고를 실제 책처럼 보이는 PDF/EPUB 전자책으로 만들 때 사용. 표지, 타이틀 페이지, 판권(콜로폰) 페이지, 실제 쪽번호가 달린 목차, 장마다 러닝헤더가 붙는 본문까지 갖춘 '책스러운' 구성이 필요할 때 (단순 리포트/문서 PDF가 아니라 진짜 책 산출물을 요구할 때) 적용. 표지 디자인과 판매 플랫폼(만년필 등) 커버·썸네일 이미지를 겟백 브랜드로 뽑는 절차도 포함.

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/html-to-pdf.py`).

It sits in Documents & Office, covering PDF. The repository describes itself as: 1인 사업가 생산성 키트 — 직원 없이 58개를 자동화했고, 그중 바로 쓸 수 있는 AI 에이전트 스킬 38개(+실행 스크립트 19개)를 공개합니다. The licence is MIT.

When your agent uses it

  • Tasks that involve PDF

Example prompts

  • “/book-pdf-pagedjs”

Requirements

  • Python 3
  • Node.js

Workflow steps

12 steps, taken from the first numbered list in SKILL.md.

  1. page.pdf({width, height}) 파라미터가 무시된다. 항상 US Letter로 나온다. 반드시 preferCSSPageSize: true를 주고 CSS @page { size: 148mm 210mm; }로 크기를 지정할 것…
  2. page.setViewportSize()가 없다. 뷰포트 크기를 못 바꾸므로 표지 등 개별 이미지를 만들 때 page.screenshot({fullPage:true})로 큰 캔버스를 찍으면 타일링 버그가 난다. 대신 page.pdf() +…
  3. page.addScriptTag()가 없다. 외부 스크립트(Paged.js 등)는 document.write()로 쓰는 HTML 문자열 안에 태그를 직접 넣어야 로드된다.
  4. 구글 폰트 @import/가 document.write() 직후엔 타이밍 문제로 반영 안 될 때가 있다. 커스텀 세리프 폰트를 꼭 써야 하면 woff2를 직접 fetch해서 base64로 인라인 @font-face에 박아넣을 것. 급하면 시스템…
  5. target-counter()로 목차 쪽번호를 만들 때 한글 슬러그 id가 깨질 수 있다. pandoc이 자동 생성하는 id="1장-시작과-실패" 같은 한글 id 대신 ch-01, part-1, app-a 같은 ASCII id로 바꿔서 앵커를 걸 것.
  6. CSS page: (named page) 속성을 제목 요소에만 주고 바로 다음 형제 요소에는 안 주면, 그 둘 사이에 강제 페이지베이크가 생긴다. 단순히 break-before: page로 장/부 시작만 제어하고 싶을 때는 page: main…
  7. 트림 사이즈로 A5(148x210mm)를 쓰지 말 것. A5와 A4는 비율이 동일해(1:1.414, ISO 시리즈) 화면에서 보면 "작은 A4 문서"처럼 보인다. 한국 단행본 표준판형인 신국판(152x225mm, 비율 1:1.48)을 쓰면 "진짜…
  8. Paged.js 렌더링은 비동기라 완료 시점을 폴링해야 한다. document.querySelectorAll('.pagedjs_page').length가 N초 연속 안 바뀔 때까지 기다린 다음 page.pdf()를 호출할 것. 문서가…
  9. page.pdf()는 가로 flexbox를 통째로 날려버린다. display:flex로 카드 3장을 나란히 놓으면 화면(스크린샷)에서는 멀쩡한데 PDF 출력에서는 그 영역이 통째로 빈칸으로 나온다. 세로…
  10. page.screenshot({clip})은 뷰포트(1440x900)를 넘는 영역을 못 찍는다. 세로 1600px짜리 썸네일을 clip으로 찍으면 900px 아래는 잘리고, 여러 번 찍으면 같은 이미지가 반복되거나 내용이 누락된다…
  11. document.write()를 반복 호출하면 이전 문서가 남아 중복 렌더링된다. 한 탭에서 여러 이미지를 연속으로 뽑을 때 결과물이 세로로 두 번 반복되거나 MD5가 전부 동일하게 나오면 이 증상이다. HTML을 파일로 쓰고…
  12. document.write()로 넣은 스크립트에서 top-level const로 선언한 값이 나중 스크립트에서 안 보일 때가 있다. 렌더 함수를 window.render처럼 전역에 붙여도 데이터가 undefined로 잡히면, 스크립트를 쪼개지 말고…

What it can do on your machine

Read from SKILL.md and the folder at commit 0712439. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • magick
    • pandoc
    • pdftoppm
    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • unpkg.com

    Also links to:

    • pagedjs.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Book PDF Pagedjs loads about 2.5k tokens when it runs. Until then it costs about 58 tokens; SKILL.md has 1,338 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~58
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from bam-bam-2/solo-skills at commit 0712439, republished under its MIT licence (© bam-bam-2). 1,338 words, ~2,494 tokens.

Download SKILL.mdSave it as .claude/skills/book-pdf-pagedjs/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
book-pdf-pagedjs
description
마크다운 원고를 실제 책처럼 보이는 PDF/EPUB 전자책으로 만들 때 사용. 표지, 타이틀 페이지, 판권(콜로폰) 페이지, 실제 쪽번호가 달린 목차, 장마다 러닝헤더가 붙는 본문까지 갖춘 '책스러운' 구성이 필요할 때 (단순 리포트/문서 PDF가 아니라 진짜 책 산출물을 요구할 때) 적용. 표지 디자인과 판매 플랫폼(만년필 등) 커버·썸네일 이미지를 겟백 브랜드로 뽑는 절차도 포함.

마크다운 → 진짜 책 PDF/EPUB

일반 page.pdf() + 마크다운→HTML 변환만으로는 "리포트를 인쇄한 것"처럼 보인다. 실제 책이려면 최소 이 6가지가 있어야 한다: 표지(풀블리드) · 타이틀 페이지 · 판권 페이지 · 실제 쪽번호가 달린 목차 · 장 시작마다 새 페이지 · 쪽마다 러닝헤더/쪽번호.

이 스킬은 Paged.js(MIT, https://unpkg.com/pagedjs/dist/paged.polyfill.js)를 브라우저에 스크립트 태그로 로드해 CSS Paged Media 기능(러닝헤더, 목차 쪽번호 자동생성)을 구현한다. Chromium이 네이티브로 지원 안 하는 기능이라 이 폴리필이 필요하다.

이 환경(Aside REPL)의 알려진 함정

  1. page.pdf({width, height}) 파라미터가 무시된다. 항상 US Letter로 나온다. 반드시 preferCSSPageSize: true를 주고 CSS @page { size: 148mm 210mm; }로 크기를 지정할 것. format: 'A5' 같은 심볼릭 사이즈도 마찬가지로 무시되니 쓰지 말 것.
  2. page.setViewportSize()가 없다. 뷰포트 크기를 못 바꾸므로 표지 등 개별 이미지를 만들 때 page.screenshot({fullPage:true})로 큰 캔버스를 찍으면 타일링 버그가 난다. 대신 page.pdf() + pdftoppm으로 원하는 크기를 렌더링할 것.
  3. page.addScriptTag()가 없다. 외부 스크립트(Paged.js 등)는 document.write()로 쓰는 HTML 문자열 안에 <script src="https://unpkg.com/..."> 태그를 직접 넣어야 로드된다.
  4. 구글 폰트 @import/<link>가 document.write() 직후엔 타이밍 문제로 반영 안 될 때가 있다. 커스텀 세리프 폰트를 꼭 써야 하면 woff2를 직접 fetch해서 base64로 인라인 @font-face에 박아넣을 것. 급하면 시스템 폰트(-apple-system, 'Apple SD Gothic Neo')로 타협.
  5. target-counter()로 목차 쪽번호를 만들 때 한글 슬러그 id가 깨질 수 있다. pandoc이 자동 생성하는 id="1장-시작과-실패" 같은 한글 id 대신 ch-01, part-1, app-a 같은 ASCII id로 바꿔서 앵커를 걸 것.
  6. CSS page: (named page) 속성을 제목 요소에만 주고 바로 다음 형제 요소에는 안 주면, 그 둘 사이에 강제 페이지베이크가 생긴다. 단순히 break-before: page로 장/부 시작만 제어하고 싶을 때는 page: main; 같은 명명 페이지 지정을 쓰지 말거나, 쓴다면 본문 전체에 동일하게 적용해야 한다 — 이건 "장 제목 바로 뒤에 이미지를 넣었는데 이미지가 다음 페이지로 밀리며 압도적인 빈 공백 페이지가 생기는" 증상으로 나타난다. 페이지 구성이 이상하면 가장 먼저 이 속성부터 의심할 것.
  7. 트림 사이즈로 A5(148x210mm)를 쓰지 말 것. A5와 A4는 비율이 동일해(1:1.414, ISO 시리즈) 화면에서 보면 "작은 A4 문서"처럼 보인다. 한국 단행본 표준판형인 **신국판(152x225mm, 비율 1:1.48)**을 쓰면 "진짜 책" 느낌이 명확하게 산다.
  8. Paged.js 렌더링은 비동기라 완료 시점을 폴링해야 한다. document.querySelectorAll('.pagedjs_page').length가 N초 연속 안 바뀔 때까지 기다린 다음 page.pdf()를 호출할 것. 문서가 크면(80150쪽) 완료까지 30초1분 걸릴 수 있다.
  9. page.pdf()는 가로 flexbox를 통째로 날려버린다. display:flex로 카드 3장을 나란히 놓으면 화면(스크린샷)에서는 멀쩡한데 PDF 출력에서는 그 영역이 통째로 빈칸으로 나온다. 세로 방향(flex-direction:column)은 정상. <table>로 바꿔도 안 되니, 가로 배치가 필요하면 **display:inline-block + vertical-align:middle**로 짤 것. 이건 Paged.js와 무관하게 일반 page.pdf()에서도 발생한다.
  10. page.screenshot({clip})은 뷰포트(1440x900)를 넘는 영역을 못 찍는다. 세로 1600px짜리 썸네일을 clip으로 찍으면 900px 아래는 잘리고, 여러 번 찍으면 같은 이미지가 반복되거나 내용이 누락된다. setViewportSize()도 없으므로(함정 2), 큰 이미지는 무조건 page.pdf() + pdftoppm 경유로 만든다.
  11. document.write()를 반복 호출하면 이전 문서가 남아 중복 렌더링된다. 한 탭에서 여러 이미지를 연속으로 뽑을 때 결과물이 세로로 두 번 반복되거나 MD5가 전부 동일하게 나오면 이 증상이다. HTML을 파일로 쓰고 page.goto('file://<절대경로>')로 여는 방식이 안전하다 — file://은 이 환경에서 정상 동작하고, 매번 완전히 새 문서가 로드된다.
  12. document.write()로 넣은 스크립트에서 top-level const로 선언한 값이 나중 스크립트에서 안 보일 때가 있다. 렌더 함수를 window.render처럼 전역에 붙여도 데이터가 undefined로 잡히면, 스크립트를 쪼개지 말고 변형별로 완성된 HTML을 통째로 만들어 각각 파일로 저장할 것.

절차

  1. 원고를 pandoc으로 HTML 변환: pandoc manuscript.md -f markdown -t html5 --wrap=none -o body_raw.html. \newpage 같은 LaTeX 지시자는 HTML에서 무시되니 CSS break-before로 대체한다.
  2. 제목(h1/h2)에 ASCII id를 다시 부여하면서 장/부 디바이더 구조로 감싼다 (예: <h1> → <div class="part-divider" data-run="PART 1. ...">). 이때 원본 문서에 등장하는 순서를 한 번의 스캔으로 그대로 따라가는 배열을 만들어 목차 데이터로 쓴다 — h1 전체를 먼저 훑고 h2 전체를 나중에 훑는 식으로 두 번 나눠 처리하면 목차 순서가 깨진다(장이 전부 나온 뒤 부가 나오는 식).
  3. 목차 HTML은 <a class="toc-entry" href="#ch-01">...</a> 형태로, CSS에서 .toc-entry::after { content: target-counter(attr(href url), page); }로 쪽번호를 자동 채운다.
  4. 러닝헤더: 장/부 요소에 string-set: runninghead attr(data-run);, @page의 @top-center { content: string(runninghead); }로 받는다.
  5. 표지는 별도 @page cover { margin:0; } + page: cover;로 풀블리드, 그 외 프론트매터(타이틀/판권/목차)는 쪽번호·러닝헤더를 끈 @page front로 분리한다.
  6. Paged.js 로드 + 렌더 대기 + PDF 출력:
    js
    const html = `<!DOCTYPE html><html><head>
      <script src="https://unpkg.com/pagedjs/dist/paged.polyfill.js"></script>
      <style>${css}</style></head><body>${frontMatter}${bodyContent}</body></html>`;
    await page.evaluate((h) => { document.open(); document.write(h); document.close(); }, html);
    // 안정화 폴링
    let last = -1, stable = 0;
    for (let i = 0; i < 60; i++) {
      await sleep(1000);
      const n = await page.evaluate(() => document.querySelectorAll('.pagedjs_page').length);
      if (n === last) { if (++stable >= 3) break; } else stable = 0;
      last = n;
    }
    const pdf = await page.pdf({ printBackground: true, preferCSSPageSize: true });
  7. 검수는 aside.pdf.renderPages()로 표지/타이틀/판권/목차/본문 몇 쪽을 실제로 렌더링해서 눈으로 확인한다. pdfinfo로 최종 Page size가 의도한 트림 사이즈(A5 등)인지 꼭 재확인한다 (함정 1번 재발 여부 체크).
  8. EPUB은 별도로 pandoc이 이미 잘 만든다: pandoc manuscript.md -t epub3 --css=epub.css --epub-cover-image=cover.jpg --toc --toc-depth=2 -o book.epub. EPUB은 리플로우 포맷이라 쪽번호/러닝헤더 개념이 없고 nav.xhtml 목차만 있으면 충분하다.

어색한 쪽 분리(내용이 잘려서 다음 페이지로 넘어가는 현상) 방지

표/인용문/코드블록이 문장 중간에서 맥려서 다음 페이지로 이어지는 건 CSS에 깨짐 방지 규칙이 없어서다. 다음을 기본값으로 넣을 것:

css
p { orphans: 3; widows: 3; }
table, blockquote, pre, img, figure { break-inside: avoid; page-break-inside: avoid; }
h2, h3 { break-after: avoid; page-break-after: avoid; } /* 소제목이 페이지 맨아래 혼자 남지 않게 */

이렇게 하면 문단/표/인용문이 한 페이지에 다 안 들어갈 때 그 블록 전체가 다음 페이지로 밀린다(사용자가 "앞 단락을 뒤로 밀어버려라"라고 표현하는 바로 그 동작). 부작용으로 강제 페이지보맜(장 시작 직전) 앞에 짧은 내용만 단독으로 낙은 거의-빈 페이지가 가끔 생기는데, 이건 실제 책에서도 흔한 자연스러운 현상이라 문제가 아니다. 적용 후반드시 처음부터 끝까지 순차적으로 모든 페이지를 렌더링해서 육안으로 확인할 것 — 하나만 집어서 보고 넘어가면 높은 확률로 놓친다.

Show full SKILL.md (583 more words)Show less

flexbox를 부/장 오프너에 쓰지 말 것

제목+삽화를 한 덩어리로 묶어서 같은 페이지에 있게 하려고 display:flex를 쓨다면, Paged.js가 flex 컨테이너 내부 높이 계산을 제대로 못 해서 예상과 달리 자식 요소가 다음 페이지로 통째로 밀려나간다 (제목만 남고 삽화는 혼자 다음 장으로 가는 식). 한 페이지에 여러 요소를 묶을 때는 평범한 블록 흐름(margin/padding)만으로 레이아웃하고 flexbox/grid는 피할 것. 또한 제목과 그 바로 뒤에 오는 이미지 문단을 따로 처리하지 말고, 한 번의 정규식으로 단락(제목 헤딩 + 바로 뒤 이미지 단락)을 함께 매칭해서 하나의 div로 합쳐넣으면 둘이 한 덩어리로 취급되어 분리될 확률이 줄어든다.

스타일 참고

색은 절제된 포인트 컬러 1개(골드/앰버 등)만 쓰고, 여백을 넉넉히 준다. 장 오프너는 "CH.01" 같은 뱃지 + 큰 제목, 인용구는 왼쪽 세로선 + 이탤릭으로 처리하면 무난하게 "책스럽다".


표지 · 판매 플랫폼 이미지

밤밤 이름으로 나가는 책·강의 상품이면 표지와 스토어 이미지를 겟백 브랜드 시스템으로 만든다. 임의로 예쁜 스타일을 지어내지 말 것.

브랜드 규격 (정본: ~/Projects/getback/마케팅/insane-design/get100/design.md)

작업 전에 위 문서를 먼저 읽고, 실제 홈페이지(get100.co.kr)도 한 번 열어본다.

  • 배경은 순백이 아니라 오프화이트 #f5f5f0
  • 색은 검정 #0d0d0d, 라임 #D4F000, 퍼플 #7B2FFF 세 개만. 퍼플이 주인공, 라임이 강조
  • 네오브루탈리즘: 테두리 검정 4~6px, 하드 오프셋 그림자 Npx Npx 0 0 #0d0d0d(블러 0), 모서리 둥글림 0
  • 폰트 Pretendard, 헤딩 weight 800, letter-spacing:-.03em~-.04em
  • 제목 강조는 <span>에 background:#D4F000; box-shadow:0 0 0 5px #D4F000(형광펜 효과)

밤밤이 싫어한 것 (실측)

  • 텍스트만 얹은 표지: "텍스트만 얹은 것 같다"고 반려됨. 그래픽 장치가 최소 하나는 있어야 한다
  • 썸네일 가운데 스펙 카드: 작은 목록에서 지저분해 보임. "그냥 밑에 띠지만 있는게 딱 낫다"
  • 상세페이지 본문에 블록 이미지 나열(와디즈식): "너무 구려". 본문은 글로 두고 시각 정보는 커버/썸네일에 넣는다

확정된 형태: 썸네일 = 책 표지 그대로 + 하단 색 띠 하나, 커버 = 왼쪽 제목 + 오른쪽 구성 카드.

만년필(10000yearspen.com) 실측 규격

저장 규격과 실제 노출 규격이 다르다. 반드시 실제 크롭·표시 크기로 검증하고 올릴 것.

자리업로드 규격실제 노출안전영역
커버2100x900 (21:9)세로 중앙 382px만 보임 (5.49:1)y 259~641 안에 모든 요소
썸네일1200x1600 (3:4)목록에서 102x138px글자 최소 42px 이상(1200 기준)

검증 명령:

bash
magick cover.jpg -gravity center -crop 2100x382+0+0 +repage -resize 760x check_cover.jpg
magick thumb.jpg -resize 102x138! -resize 380% check_thumb.png

둘 다 눈으로 읽히는지 확인한 뒤 업로드한다.

렌더링 절차 (함정 9~12 반영)

js
// 1) 변형마다 완성된 HTML을 파일로 저장
const css = `<style>@page{size:1200px 1600px;margin:0}
  .wrap{width:1200px;height:1600px;position:relative;overflow:hidden;background:#f5f5f0}
  .row .ic{display:inline-block;vertical-align:middle}   /* flex 금지 */
  .row .k{display:inline-block;vertical-align:middle}
</style>`;
await fs.writeFile(tmp+'t_book.html', head+css+body+'</body></html>');

// 2) file://로 열고 PDF로 뽑는다 (screenshot 아님)
await page.goto('file://'+tmp+'t_book.html', {waitUntil:'load'});
await sleep(2400);
await fs.writeFile(tmp+'t_book.pdf',
  await page.pdf({printBackground:true, preferCSSPageSize:true, pageRanges:'1'}));
bash
# 3) PNG/JPG로 변환
pdftoppm -r 96 -png -singlefile t_book.pdf r_book
magick r_book.png -resize 1200x1600! -quality 93 thumb_book.jpg

서로 다른 변형인데 결과 MD5가 같으면 함정 11이 재발한 것이다. md5 -q로 매번 확인할 것.

만년필 업로드 자동화

상품 수정 화면의 input[type=file] 순서가 고정이다.

nth용도accept
0본문 삽입 이미지image/*
1커버(21:9)image/*
2썸네일(3:4)image/*
3첨부 파일.pdf,.zip,.epub
js
// 내 크리에이터 프로필 → 프리미엄 탭 → 수정하기(목록은 최신순)
await page.locator('input[type=file]').nth(1).setInputFiles(tmp+'cover.jpg'); await sleep(4500);
await page.locator('input[type=file]').nth(2).setInputFiles(tmp+'thumb.jpg'); await sleep(4500);
// 저장 버튼 클릭

주의할 점

  • 발행 후 가격은 못 바꾼다. 이미지·본문은 계속 수정 가능
  • 파일 첨부는 input[type=file]을 다시 쓰면 교체가 아니라 추가된다. 그래서 같은 PDF가 여러 장 쌓이기 쉽다. 다만 본문의 "첨부 삭제" 버튼은 정상 동작한다 — 카드를 지우고 「저장」하면 반영된다 (2026-09-12 실측: 중복 3장 → 1장 정리 성공).
  • ⚠️ 정정 (2026-09-12). 이 문서에 2026-09-08자로 "첨부 삭제가 안 되고 서버가 원래 개수로 되살린다"고 적혀 있었는데 틀렸다. 캐시된 옛 화면을 보고 내린 오진이었다. 만년필은 SPA라 저장 직후 같은 URL을 열면 저장 전 상태를 그대로 돌려준다. 반드시 쿼리스트링(?t=<timestamp>)을 붙이거나 page.reload()로 강제 새로고침한 뒤에 판단할 것. 본문 innerText 기반 개수 세기도 하이드레이션 중에는 중복해서 나오니 충분히 기다렸다 재셑할 것.
  • ⚠️ 저장 직후 편집기에 다시 들어가면 저장 전 본문이 뜬다. 그 상태에서 편집해 저장하면 방금 넣은 내용이 통째로 날아간다. 편집기 재진입 시에는 page.reload() → 의도한 변경이 화면에 보이는지 확인 → 그다음에 손댈 것.
  • 영상 임베드가 저장 과정에서 날아갈 수 있다. 2026-09-08 발행한 합본 상품은 유튜브 iframe이 사라지고 그 자리에 PDF 카드가 들어가 있었다(2026-09-12 만년필 개발자 제보로 발견). 발행 후에는 반드시 공개 페이지를 캐시 우회로 열어 iframe[src*="youtube"] 개수와 첨부 카드 개수를 세어볼 것.
  • 본문 편집기(tiptap)에서 이미지를 지울 때는 한 번에 여러 개가 안 지워진다. img를 가진 자식 노드를 찾아 setStartBefore/setEndAfter로 하나씩 선택 후 Delete를 반복할 것
  • 유료 경계(.node-paywallBlock)를 기준으로 무료 공개 비율이 자동 계산된다. 편집 후 여기부터 유료 / 공개 N% 문구로 확인
  • 영상은 유튜브 링크를 본문에 붙이면 임베드된다. 별도 이동 없이 결제 후 바로 재생됨

© bam-bam-2, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in skills/book-pdf of bam-bam-2/solo-skills.

  • SKILL.md
  • scripts/html-to-pdf.py

Open the folder on GitHubat commit 0712439

Compare with similar skills

Book PDF Pagedjs next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Book PDF Pagedjs compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Book PDF Pagedjs this skillbam-bam-2/solo-skills367—~2.5kAutomated safety check: PassMIT
MarkitdownImCa0/just-laws78114 repos~3.2kAutomated safety check: NotesMIT
Gzh Designisjiamu/gzh-design-skill4k—~2.2kAutomated safety check: PassAGPL-3.0
GenOffice Document CLIgenspark-ai/genoffice9.2k—~19kAutomated safety check: PassApache-2.0
Harness Book Best Practicewquguru/harness-books3.2k—~4.1kAutomated safety check: PassNone
Bookforge Korean Ebook PDF Makergongnyang/bookforge3161 repos~1.7kAutomated safety check: PassMIT

Similar skills

  • Markitdown

    ImCa0/just-laws

    Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.

    781 GitHub starsUsed in 14 repos~3.2k tokens
    Documents & OfficeAuto-check: notes
  • Gzh Design

    isjiamu/gzh-design-skill

    微信公众号文章排版引擎,将 Markdown 转换为可直接粘贴到公众号编辑器的 HTML。主题风格从 references/theme-index.md 注册的自定义主题库中选取,自动章节编号、关键词下划线标记、引言卡片、目录导航、代码块、图片/GIF、作者签名。支持 Markdown / Word(.docx) / PDF / 纯文本输入(非 Markdown…

    4k GitHub stars~2.2k tokensUpdated 2 days ago
    Documents & OfficeAuto-check passed
  • GenOffice Document CLI

    genspark-ai/genoffice

    Creates, converts, reads and edits real pptx, xlsx, docx and PDF files locally through the genoffice command line.

    9.2k GitHub stars~19k tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • Harness Book Best Practice

    wquguru/harness-books

    Best practices for working on the Harness books repo. An agent skill from wquguru/harness-books.

    3.2k GitHub stars~4.1k tokensUpdated 5 mo ago
    Documents & OfficeAuto-check passed
  • Produces book-style Korean ebook PDFs from a topic or finished manuscript, with six design styles, real book parts and quality-check gates before output.

    316 GitHub starsUsed in 1 repo~1.7k tokens
    Documents & OfficeAuto-check passed
  • Instrument Data To Allotrope

    aws-samples/amazon-bedrock-agents-healthcare-lifesciences

    Official

    Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D CSV.

    274 GitHub starsUsed in 2 repos~2.7k tokens
    Documents & OfficeAuto-check passed

More from bam-bam-2/solo-skills

All 38 skills in this repo
  • Computer Use

    bam-bam-2/solo-skills

    Use Orca's computer-use CLI to inspect and operate local desktop app windows through accessibility trees, screenshots, and safe UI actions.

    367 GitHub starsUsed in 1 repo~915 tokens
    Auto-check passed
  • Orchestration

    bam-bam-2/solo-skills

    Use Orca orchestration for structured multi-agent coordination: threaded messages, blocking ask/reply flows, task dispatch, workerdone/escalation waits, task DAGs, decision gates, coordinator loops…

    367 GitHub starsUsed in 1 repo~1.1k tokens
    Auto-check passed
  • Lecture Recording Captions

    bam-bam-2/solo-skills

    밤밤의 강연·라이브·기수 세션 녹화본(줌 클라우드·디스코드·맥 화면기록)을 자막판 영상으로 만들고 배포할 때 읽을 것.

    367 GitHub stars~1.4k tokensUpdated 26 days ago
    Auto-check passed
  • Naver Mail Imap

    bam-bam-2/solo-skills

    밤밤의 네이버 메일(you@example.com)을 브라우저 없이 읽어야 할 때 사용. An agent skill from bam-bam-2/solo-skills.

    367 GitHub stars~964 tokensUpdated 26 days ago
    Auto-check: notes
  • Style Skill Creator

    bam-bam-2/solo-skills

    Creative writing skill for creating style skills that teach Claude to write in specific styles.

    367 GitHub stars~935 tokensUpdated 26 days ago
    Auto-check passed
  • Threads Long Thread

    bam-bam-2/solo-skills

    밤밤 스레드 계정에 장문 연작 타래(13~30편)를 쓰고 이미지까지 붙여 임시저장·발행할 때 읽을 것. An agent skill from bam-bam-2/solo-skills.

    367 GitHub stars~2.9k tokensUpdated 26 days ago
    Auto-check passed

Questions about Book PDF Pagedjs

What does Book PDF Pagedjs do?

마크다운 원고를 실제 책처럼 보이는 PDF/EPUB 전자책으로 만들 때 사용. An agent skill from bam-bam-2/solo-skills. Book PDF Pagedjs is an agent skill from bam-bam-2/solo-skills. 마크다운 원고를 실제 책처럼 보이는 PDF/EPUB 전자책으로 만들 때 사용.

When should I use Book PDF Pagedjs?

Book PDF Pagedjs fits situations like: tasks that involve PDF.

How do I install Book PDF Pagedjs in Claude Code?

Run `npx skills add bam-bam-2/solo-skills --skill book-pdf-pagedjs -a claude-code`. Or copy the skill folder (skills/book-pdf in bam-bam-2/solo-skills) into .claude/skills/book-pdf-pagedjs in your project. Claude Code loads it when a task matches its description.

How do I install Book PDF Pagedjs in Codex?

Run `npx skills add bam-bam-2/solo-skills --skill book-pdf-pagedjs -a codex`. Or copy the skill folder (skills/book-pdf in bam-bam-2/solo-skills) into .agents/skills/book-pdf-pagedjs in your project. Codex loads it when a task matches its description.

Can I use Book PDF Pagedjs in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add bam-bam-2/solo-skills --skill book-pdf-pagedjs -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/book-pdf-pagedjs, .gemini/skills/book-pdf-pagedjs, .github/skills/book-pdf-pagedjs and .opencode/skills/book-pdf-pagedjs in your project.

What does Book PDF Pagedjs need to run?

Going by SKILL.md and its folder, Book PDF Pagedjs needs Python for the scripts in its folder and the command-line tools its instructions call (magick, pandoc, pdftoppm and npx). Our summary lists: Python 3; Node.js.

Does Book PDF Pagedjs access the network?

SKILL.md names 2 domains. In commands or code: unpkg.com; the agent is likely to contact it when it follows the instructions. As links in the text: pagedjs.org. This is read from the text; nothing was executed.

Is Book PDF Pagedjs safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Book PDF Pagedjs use?

Book PDF Pagedjs is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Book PDF Pagedjs use?

About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Book PDF Pagedjs?

Skills that share tags, products or a category with Book PDF Pagedjs: Markitdown (ImCa0/just-laws, 781 stars), Gzh Design (isjiamu/gzh-design-skill, 4k stars), GenOffice Document CLI (genspark-ai/genoffice, 9.2k stars) and Harness Book Best Practice (wquguru/harness-books, 3.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Book PDF Pagedjs?

bam-bam-2 (a GitHub user) maintains it in bam-bam-2/solo-skills, which has 367 GitHub stars. The repository holds 38 skills in this directory. The repository was last updated on September 14, 2026.

Source: bam-bam-2/solo-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.