Community이미지github.com

텍스트를 손글씨 노트로

PDF, 텍스트, 웹 페이지, 화이트보드 사진 등 모든 내용을 손으로 쓴 것처럼 보이는 노트 페이지로 변환합니다. 기본 손글씨 또는 사용자가 직접 학습시킨 손글씨로 작성하며, 수학 기호도 손으로 그린 듯 표현합니다.

텍스트를 손글씨 노트로란 무엇인가요?

이 스킬은 AI 에이전트가 사용자가 제공한 모든 콘텐츠를 손글씨 노트처럼 보이는 PDF나 PNG 이미지로 변환할 수 있게 해줍니다. 기본 기능은 핸드폰으로 찍은 실제 공책 사진(모눈, 줄, 세예스 용지) 스타일을 제공하며, 추가 옵션으로 깔끔한 iPad 스타일도 지원합니다. 가장 큰 특징은 사용자가 직접 찍은 손글씨 사진 몇 장(3~6장)으로 개인의 필체를 학습시켜, 자신의 글씨체로 노트를 작성할 수 있다는 점입니다. 수학 공식(분수, 합, 적분, 근호, 그리스 문자)도 손글씨로 자연스럽게 렌더링됩니다. 이 스킬은 Claude Code, ChatGPT, Cursor 등 Python과 Pillow, numpy가 설치된 모든 개발 환경에서 사용할 수 있으며, `scripts/handnotes.py` 스크립트를 통해 작동합니다. 사용자가 '손글씨 노트', 'à la main(손으로 쓴)', '노트북 스타일', 'iPad 스타일', '내 글씨체로' 등으로 요청할 때 활용할 수 있습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/yahyaraissouni/text-to-handwritten-notes-skill/tree/HEAD

Installed? Explore more 이미지 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

텍스트를 손글씨 노트로은(는) 무엇을 하나요?

당신은 콘텐츠를 손글씨처럼 보이는 페이지로 변환합니다. 렌더러는 scripts/handnotes.py입니다. Python과 Pillow, numpy만 있으면 되며, 이들은 ChatGPT와 Claude 코드 샌드박스에 이미 설치되어 있습니다.

기본 결과: 파란색 잉크, 기본 손글씨로 모눈종이 공책 페이지를 핸드폰으로 찍은 사진입니다. 사용자가 특별히 요청한 것이 없으면 이것을 제공하세요.

0단계: 누구의 손글씨인가?

한 번 간단히 물어보세요: "손글씨 사진을 최대한 많이 보내주세요(이미 작성한 노트, 숙제 등 아무 페이지나 괜찮습니다). 없으면 기본 손글씨를 사용하겠습니다."

  • 사진 없음: 기본 손글씨를 사용합니다. 다시 묻지 마세요.
  • 사진 있음: 먼저 학습시킨 후(아래 사진으로 손글씨 학습하기 참조), --hand their-hand 옵션으로 렌더링합니다. 페이지가 많을수록 글자당 샘플이 많아져 더 자연스러운 결과가 나옵니다. 3~6페이지가 적당합니다.

1단계: 입력 읽기

  • PDF: pypdf, pdftotext 또는 자체 리더로 텍스트를 추출합니다. 스캔된 PDF의 경우 페이지 이미지를 확인합니다.
  • 사진, 스크린샷, 화이트보드: 직접 비전(시각)으로 읽습니다. OCR 라이브러리를 실행하지 마세요.
  • 텍스트, 풀이, 웹 페이지: 주어진 그대로 사용합니다.

2단계: 페이지 작성

두 가지 경우가 있습니다.

  • 수업 내용 노트: 우수한 학생이 쓰는 방식으로 작성합니다. 짧은 줄, 키워드, 출처의 구조를 따르며, 길이는 원본의 15~30% 정도로 합니다.
  • 사용자가 제공한 풀이나 숙제: 모든 단계와 숫자를 그대로 유지합니다. 학생이 종이에 쓰는 방식으로 작성합니다: 1/, a), b) 레이블, 한 줄에 하나의 방정식, 단계 사이에 =>. AI가 작성한 것처럼 보이는 장식은 추가하지 마세요: "팁:" 없음, 과도한 하이라이트 없음, 굵게 표시 없음. 사용자가 그렇게 할 경우에만 최종 결과에 밑줄을 긋거나 !!로 표시합니다.

사용자의 언어를 유지합니다. 숫자, 이름, 수식은 정확하게 유지합니다.

마크업:

# 제목                     ## 제목                ### 부제목 (밑줄)
- 글머리 기호 (2칸 들여쓰기 = 한 단계 더 깊게)   1. 번호 매기기
-> 화살표 줄               !! 중요 줄 (빨간색)   > 사이드 노트 (강조 잉크)
[ ] 할 일   [x] 완료 (체크)   ---  구분선        빈 줄 = 한 줄 띄우기
인라인: ==하이라이트==  **굵게**  __밑줄__  ~~취소선~~  {red}색깔 잉크{/}  ->  (그려진 화살표)
\$  = 달러 기호      $...$ 인라인 수식      $$...$$ 한 줄 독립 = 표시된 수식

수학. 짧은 수식($x^2$, $E_2$)이라도 모든 수식을 $...$ 안에 넣습니다. 지원: \frac{a}{b}, \sum_{k=1}^{n}, \prod, \int_a^b, \lim_{n \to +\infty}, \sqrt{x}, \sqrt[3]{x}, x^{n+1}, x_i, \left( ... \right), \binom{n}{k}, \vec{u}, \bar{x}, \mathbb{R}, \text{...}, \mid, 그리스 문자, \in \subset \cup \cap \emptyset \forall \exists \leq \geq \neq \approx \pm \times \cdot \infty \to \implies \iff, 공백 \, \; \quad.

소수점은 원본 그대로(0,81 또는 0.81) 쓰고, 큰 숫자는 수식 안에서 50\,000처럼 씁니다. 구간은 읽는 그대로($[0, 1[$) 씁니다. 큰 수식은 별도 $$...$$ 줄에 넣습니다. 페이지보다 너무 긴 수식은 줄어들어 맞춰지지만, 긴 수식은 =에서 두 줄로 나누는 것이 더 자연스럽습니다.

페이지를 notes.md로 저장합니다.

3단계: 렌더링

python scripts/handnotes.py render notes.md -o notes.pdf

이 명령은 기본 설정(공책 사진, 모눈종이, 파란 잉크, 기본 손글씨)을 제공합니다. 사용자가 요청한 것만 변경하세요:

옵션값
--stylenotebook (실제 페이지를 핸드폰으로 찍은 사진: 불균일한 조명, 흘러내리는 줄, 기울어진 용지, 볼펜 잉크) · ipad (별도 엔진: 깨끗한 페이지에 균일한 애플 펜슬 획으로 글자 재구성)
--papersquared (notebook) 또는 grid (ipad), lines, college, seyes, dots, blank
--handdefault, 또는 build-hand나 learn으로 만든 폴더
--font손글씨 폰트 사용: caveat, kalam, patrick, gochi, indie, playpen
--inkblue (notebook) 또는 black (ipad), red, green, purple, pencil
--pagea4, letter, ipad, ipad-landscape
--seed N항상 같은 페이지 생성; 다른 버전을 원하면 N 변경

-o notes.png를 사용하면 PDF 대신 이미지(notes-1.png, notes-2.png, ...)를 얻을 수 있습니다.

4단계: 확인 후 전달

1페이지를 확인합니다(PDF를 볼 수 없으면 PNG로 렌더링). 어떤 줄도 페이지 밖으로 나가거나 다른 줄과 겹치지 않는지, 모든 숫자가 원본과 일치하는지 확인합니다. 그런 다음 파일을 제공합니다.

사진으로 손글씨 학습하기

이 과정은 사용자가 이미 작성한 어떤 페이지로도 작동합니다. 특별히 채울 필요가 없습니다.

  1. 자르기: python scripts/handnotes.py segment p1.jpg p2.jpg p3.jpg -o hand-work 이 명령은 공책의 인쇄된 선을 제거하고, 모든 잉크 조각을 잘라내어 번호가 매겨진 시트 hand-work/sheet-pageN-K.png를 생성합니다.

  2. 레이블링: 모든 시트를 확인합니다. 원본 사진을 읽을 수 있으므로 페이지에 무엇이 있는지 알고 있습니다. hand-work/labels.json을 작성합니다(페이지 번호는 사진 순서를 따름):

    {"1": {"12": "a", "13": "(", "40": "the", "41": "7"}, "2": {"5": "é", "9": "dy"}}
    
    • 확실한 조각만 레이블링합니다. 불분명하거나, 반으로 잘렸거나, 이웃과 붙어 있거나, 취소선이 있거나, 선 조각에 불과한 것은 건너뜁니다.
    • 여러 글자가 연결된 조각은 해당 단어나 쌍("the", "le", "qu")으로 레이블링할 수 있습니다. 해당 시퀀스가 나타날 때마다 재사용되어 매우 자연스럽게 보입니다.
    • 각 소문자와 각 숫자에 대해 최소 2~3개의 샘플을 목표로 합니다.
  3. 빌드: python scripts/handnotes.py build-hand hand-work hand-work/labels.json -o their-hand 이 명령은 크기와 잉크 강도를 정규화하고, 잘못 잘린 샘플을 제거하며, 작성자 자신의 획으로 누락된 문자를 만듭니다(u는 n에서, m은 n 두 개에서, w는 v 두 개에서, r, q). 악센트(é è à ê ç ë)는 기본 글자 위에 그려집니다. 어떤 글자가 여전히 폰트로 대체되었는지 출력합니다.

  4. 렌더링 하나 확인합니다. 페이지를 보고 깨지거나 너무 희미한 글자를 확대합니다. their-hand/hand.json에 나열된 their-hand/glyphs 파일에서 해당 샘플을 찾아 잘못된 레이블을 제거하고 다시 빌드합니다.

their-hand 폴더를 보관하세요: 그 사람의 손글씨입니다. 압축하여 다음에 재사용할 수 있도록 제안하세요.

템플릿 경로(template 다음 learn)도 있습니다: 사용자가 2페이지 분량의 박스 그리드를 채웁니다. 더 깔끔하지만 사용자에게 더 많은 작업이 필요하므로, 사용자가 선호하는 경우에만 제안하세요.

관련 스킬