posted by 내.맘.대.로 2026. 4. 2. 08:48

내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.

종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다.

한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.

자세한 내용은 여기로: https://www.epubguide.net/notice/309

오래 전 작성된 글은 현재의 Sigil 버전과 차이가 날 수 있습니다. 등록 일자를 확인 하고 1년 이상 지난 글은 변경된 내용이 있는지 확인하시기 바랍니다.

EPUBGUIDE.NET의 핵심만 모았다. 전자책 편집자를 위한 필독서!

책표지

클릭 편집 탬플릿 제공,

왕초보를 위한
클릭으로 EPUB 만들기

정가 : 9,900원 할인: 8,910원

책표지

기초부터 전자책 제작 실습까지

Sigil 완벽 가이드

정가: 18,000원 할인: 16,200 원

300x250

상용 LLM은 비용이 비싸 저처럼 취미 + 업무활용 수준으로 개발을 하기엔 부담이 큽니다.

그래서 구글 제미나이 프로 요금제로 Antigravity(https://antigravity.google/)를 사용하고있습니다.

개발자들의 리뷰를 보면 클로드가 베스트로 보이지만, 개발 이외에 검색, 번역, 문서작성 등 다양한 목적으로 사용하기엔 부족한 점이 많습니다. 개발만 100점인 후임과, 개발은 80점 검색은 100점 번역은 90점.... 이런 후임 중 하나를 골라야 하는 문제이기 때문에 개발자가 아니라면 제미나이나 GPT가 더 적합해 보입니다.

 

$20달러짜리 요금제는 토큰 제한이 있습니다. 뭔가 만들려고 하다 보면 토큰 제한에 걸려 며칠을 기다려야 합니다. 이 문제를 해결하려면 더 비싼 요금제를 사용해야 하지만 부담이 큽니다. 그래서 로컬 LLM을 사용해 보기로 했습니다. 그런데 로컬 LLM의 개발 실력이 형편 없다면 쓸 이유가 없지요. 궁금했습니다. 로컬 LLM의 개발 실력이 얼마나 좋은지.

 

저같은 초보에게는 Ollama가 편하고 좋습니다. 그런데 인터넷을 뒤져보니 Ollama와 llama.cpp의 속도 차이가 30%까지 난다고 하네요. 복잡한 요청 하나 하면 1시간 이상 걸리는데 30%면 아주 큰 차이입니다. 그래서 llama.cpp로 갈아타려니 여러가지 문제가 있습니다. 가장 큰 문제는 서버 하나에 모델 하나씩 밖에 올리지 못한다는 것입니다. 2개 이상 모델을 사용하려면 모델을 2개 올려야 하는데 메모리가 하나도 겨우 받아들이니... 이 문제를 해결해 보기로 했습니다. 

1. api로 요청을 하면 모델을 메모리에 올리고 요청을 실행한다.

2. api로 모델을 변경하면 기존 모델을 내리고 새로 요청한 모델을 올린다.

이게 핵심 요구사항입니다. 물론, 이것 보다 더 복잡한 요구사항이 있습니다. 모델 폴더를 지정하면 알아서 불러오고, 메모리 관리도 해야하고...

 

Antigravity와 Ollama를 연결한 Opencode로 Qewn3-coder-next:q8 모델에게 똑같은 요구사항을 제시하고 앱을 만들도록 시켰습니다. 그 결과는 이렇습니다.

 

main_a는 Antigravity가 만든 코드입니다. main_o는 Qwen3입니다. 코드의 평가는 ChatGPT에게 요청을 했습니다. GPT의 평가는 Antigravity : 9/10, Qwen3 : 6:10입니다. 무료 모델은 10점 중 6점입니다. 그래도 코드는 제대로 작동을 합니다. 혼자 쓸 코드인데 돈 안내고 토큰 걱정 없이 10점 중 6점이라면... "못 쓸 정도는 아니다" 입니다.

 

하지만 이정도로 만족이 되지 않아 개선 할 방법을 찾아봤습니다.

Opencode에 Oh-My-Opencode라는 게 있는데 뭔 소리인지 몰라 설치를 안했어요. 그런데 Oh-My-God 수준으로 극찬을 하기에 설치를 해 봤습니다. 오케스트레이션이니 시지프스니 하는게 뭔 소리인지는 모르겠지만, 좋은거 같아 보였어요.

 

설치를 하고, 로컬 모델을 연결(gemma-3-27b, Qwen-3-coder, Qwen-3.5, gpt-oss, glm4.7)했습니다.

물론 저 모델을 동시에 다 올리지 못합니다. 필요 할 때 올리고, 쓰면 내립니다. 올리고 내리는 시간이 오래 걸리지만, 일 하나 시키고 창을 내려 놓으면 알아서 일을 하는 구조라 느리지만 일을 제대로 합니다.

 

이번엔 main_o.py "코드의 문제점을 분석하여 개선" 하라고 시켰습니다.

알아서 모델을 바꾼다고 하더니, 그냥 Qwen-3-coder 모델 하나만 쓰네요. 왜 그런지는 모르겠습니다. 어째든, 코드 개선 하라는 지시를 2번 내렸습니다. 그리고 다시 main_a.py 코드와 비교해 봤습니다.

 

Oh-My-Opencode는 AI가 자기 일을 제대로 할 때 까지 반복해서 일을 한다네요. 작업 내역을 보면 분석하고 수정하기를 수십번 반복을 했습니다. 그 결과 이런 반전이 생겼습니다. GPT가 가끔 헛소리를 해서 Gemini에게도 물어봤습니다. Gemini도 Opencode 손을 들어 줬습니다.

이정도면 비싼 돈 내지 않고 로컬 모델을 돌릴만해 보입니다.

물론 컴퓨터는 MSI Edgexpert를 쓰고, 큰 모델은 gpt-oss-120b, qwen3.5-122b까지 돌아갑니다. 저 컴퓨터 가격이면 $200짜리 모델을 2년은 쓸 수 있다는....

300x250
posted by 내.맘.대.로 2026. 3. 12. 09:04

내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.

종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다.

한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.

자세한 내용은 여기로: https://www.epubguide.net/notice/309

오래 전 작성된 글은 현재의 Sigil 버전과 차이가 날 수 있습니다. 등록 일자를 확인 하고 1년 이상 지난 글은 변경된 내용이 있는지 확인하시기 바랍니다.

EPUBGUIDE.NET의 핵심만 모았다. 전자책 편집자를 위한 필독서!

책표지

클릭 편집 탬플릿 제공,

왕초보를 위한
클릭으로 EPUB 만들기

정가 : 9,900원 할인: 8,910원

책표지

기초부터 전자책 제작 실습까지

Sigil 완벽 가이드

정가: 18,000원 할인: 16,200 원

300x250

http://jikji.duckdns.org:8085/cloud/pdf2img_demo.zip

* PDF 10페이지를 크롭 할 수 있는 데모 앱입니다.

 

이 앱은 PDF에서 이미지를 크롭하는 기능을 갖고 있습니다.

100% 바이브코딩으로 복붙만 해서 만들었어요.

기능은 아주 단순합니다.

PDF 페이지를 이미지로 저장 하고, 표, 도표, 이미지를 찾아 자동으로 좌표를 지정합니다.

좌표가 잘못 잡히는 경우가 있기 때문에 좌표 수정도 가능합니다.

크롭 할 이미지 좌표를 다 정리한 후 [확인]을 누르면 crop 파일에 크롭 한 이미지가 저장됩니다.

EPUB을 만들 때 PDF에서 이미지를 추출하는 시간이 오래 걸립니다.

그래서 시간을 절약하고자 만들었는데, 이미지가 많은 책은 2시간 넘게 걸리던 작업을 30분, 익숙해 진 후에는 10~15분 만에 정리가 끝납니다.

다른 분들도 참고하실 수 있도록 10쪽 기능 제한을 걸고 데모를 올려드립니다.

 

1. 앱을 실행하면 이런 화면이 나옵니다. [불러오기]를 눌러도 되고, 편하게 PDF 파일을 드래그 하면 파일이 열립니다.

 

2. 작업을 하기 전에 설정을 먼저 맞추세요. 출력 유형, 해상도, 이미지 품질 등을 설정 할 수 있습니다.

 

3. PDF를 불러오면 이미지로 변환을 해 resource 폴더에 저장합니다. 이미 이미지로 변환을 한 상태라면 불러오기로 resource 폴더를 지정 할 수도 있습니다.

 

4. PDF 또는 이미지를 불러온 후 [분석]을 누르면 이미지가 있는 파일을 찾아 이미지 좌표를 잡습니다. 

 

5. 이미지가 있는 페이지는 썸네일에 표시가 되고, 이미지 좌표를 알아서 잡습니다. 이 작업이 이미지를 크롭하는 시간을 절약해줍니다. 도표나 표, 복잡하게 겹쳐 있는 이미지는 좌표가 제대로 집하지 않습니다. del키로 좌표를 삭제 할 수 있고, 레이어 순서를 변경할 수 있습니다. 모서리의 둥근 부분을 클릭해 조절하면 좌표를 수정 할 수 있습니다.

 

6. 좌표 지정이 끝나면, [실행]을 느릅니다. 그럼 crop 폴더에 좌표를 잡은 부분만 크롭해 저장을 합니다. 파일명은 페이지 번호가 붙습니다. 한 페이지에 이미지가 2개 이상이면 끝에 -1, -2...로 숫자가 붙습니다.

 

간단한 프로그램이지만 전자책 만드는 시간을 많이 절약해 줍니다.

전엔 PDF를 이미지로 저장하고, 이미지 사이즈를 조절하고, 이미지가 있는 페이지만 찾아 분리하고, gimp로 불러와 하나씩 이미지를 크롭했어요. 이렇게 하면 40~50개 정도 이미지가 있으면 1시간 이상, 오래 걸리는 책은 2시간 가까이 걸렸습니다.

이 앱을 만든 후에는 50개 정도면 15분 내에 이미지 정리가 끝납니다.

300x250
posted by 내.맘.대.로 2025. 12. 19. 10:19

내맘대로의 EPUBGUIDE.NET에서 편집자의 의도를 그대로 살려 전자책을 제작해 드립니다.

종이책의 편집 스타일을 최대한 유지하며, 팝업 주석 처리, 이미지 확대 축소 등 전자책의 장점을 반영하여 전자책을 제작합니다. 탬플릿을 사용하지 않고, 책 한권 한권 고유 스타일을 살리기 때문에 전자책에서도 종이책 디자인을 느낄 수 있습니다.

한국출판문화진흥원의 [텍스트형 전자책 제작 지원 사업] 선정 도서는 ‘제작 난이도별 제작비 산정 기준에 근거하여’ 제작 단가를 산정하고, 일정에 맞춰 제작을 해 드리니 많은 문의 바랍니다.

자세한 내용은 여기로: https://www.epubguide.net/notice/309

오래 전 작성된 글은 현재의 Sigil 버전과 차이가 날 수 있습니다. 등록 일자를 확인 하고 1년 이상 지난 글은 변경된 내용이 있는지 확인하시기 바랍니다.

EPUBGUIDE.NET의 핵심만 모았다. 전자책 편집자를 위한 필독서!

책표지

클릭 편집 탬플릿 제공,

왕초보를 위한
클릭으로 EPUB 만들기

정가 : 9,900원 할인: 8,910원

책표지

기초부터 전자책 제작 실습까지

Sigil 완벽 가이드

정가: 18,000원 할인: 16,200 원

300x250

작업 관리는 여러 방식으로 하지만, 가장 손쉽고 익숙한 것은 엑셀(스프레드 시트)을 이용한 정리일 것입니다.

저는 작업 의뢰를 받으면 구글 스프레드에 작업 일정 관리 부터 세금계산서 발행까지 정리를 하고 있어요.

그런데 작업할 도서 목록이 많아지면, 일 단위로 일정을 관리하기 어렵습니다.

그래서 마감일을 관리하기 위해 마감일 기준으로 구글 캘린더에 작업 목록을 정리해 관리를 합니다.

출판사 책제목 제작원가 견적 총액(세금포함) 세금 제작 기한 완료일 정산내역 증빙구분 계산서 발급일자
테스트 출판사 샘플 도서명 100 110 10 2025-12-01 2025-12-15   세금계산서  
테스트 출판사 샘플 도서명 100 110 10 2025-12-04 2025-12-04   세금계산서  
테스트 출판사 샘플 도서명 100 100   2025-12-05 2025-12-05   계산서  
테스트 출판사 샘플 도서명 100 103 3 2025-12-09 2025-12-09   외주  

 

하지만 일이 들어 올 때 마다 작업 일정을 구글 스프레드와 캘린더에 등록하기 귀찮아요.

구글 스프레드에만 등록하면 자동으로 캘린더에 등록되면 얼마나 좋을까?

마침 구글 App Script라는게 있어 AI를 이용해 만들어 봤습니다.

스프레드 시트에 등록한 출판사명 + 도서명을 캘린더 일정 제목으로 하고, 완료일에 일정을 등록하도록 하는 App Script입니다.

복잡한 기능이 아니라 1시간도 되지 않아 앱을 만들었어요.

AI와 대화는 이런걸 만들어줘, 이 기능을 추가해줘, 이렇게 수정해줘 등등 대화 형태로 진행을 했지만, 대화 과정을 모두 보여드릴 필요는 없겠지요?

최종 결과물을 AI 프롬프트로 다시 정리해 보여드립니다.

이 내용에서 필요한 부분만 수정하면 저와 시트 모양이 다르더라도 일정 관리 앱스크립트를 만들 수 있어요.

 

예를 들어, 데이터 시작 셀을 A5열로 잡았는데 내가 작성한 시트는 A10열 부터 시작을 할 수 있을거예요.

저는 출판사와 책 제목을 캘린더 일정 이름으로 표시했지만, 할일 번호와 할일 제목이 될 수 있겠지요.

 

당신은 Google Apps Script(GAS) 전문가입니다.
Google Sheets의 데이터를 읽어 Google Calendar에 “종일 일정”을 생성하는 스크립트를 작성하세요. 아래 요구사항을 모두 만족하는 최종 코드를 하나의 .gs 파일 형태로 제시하고, 필요한 경우 보조 함수도 함께 작성하세요.

1) 실행 환경/전제
스크립트는 “컨테이너 바운드” Google Sheets(스프레드시트에 연결된 Apps Script)에서 실행됩니다.
사용자가 스프레드시트를 열면 커스텀 메뉴가 자동 생성되어야 합니다.
캘린더는 사용자가 지정한 calendarId로 접근합니다(권한 이슈가 있을 수 있으니 예외 처리/로그 포함).

2) UI 메뉴 요구사항
onOpen(e) 트리거로 메뉴를 추가하세요.
메뉴 이름: 일정 추가
메뉴 항목 텍스트: 캘린더에 추가
메뉴 클릭 시 실행 함수: sheetTOcalendar

3) 시트/데이터 소스 요구사항
현재 활성 스프레드시트를 가져오고, 데이터는 “현재 활성 시트(Active Sheet)”에서 읽습니다.
calendarId는 Total 시트의 B1 셀에서 읽습니다.
Total 시트가 없거나 B1이 비어 있으면 사용자에게 알리고 중단하세요(예: SpreadsheetApp.getUi().alert 또는 throw new Error).
데이터 범위(열 의미)는 다음과 같습니다.

A열(인덱스 0): 책 제목(title)
B열(인덱스 1): 출판사(publisher)
F열(인덱스 5): 마감일(deadline)
G열(인덱스 6): 완료 여부(finished) — 현재 로직에서는 기본적으로 사용하지 않지만, 확장 가능하도록 구조화하세요(예: 옵션 플래그로 “완료면 스킵”을 쉽게 추가 가능).

데이터 시작 행은 5행입니다(즉, A5부터).
데이터의 마지막 행은 안정적으로 계산해야 합니다.
단순히 중간 빈 행이 있어도 아래 데이터가 누락되지 않도록 구현하세요.
getLastRow() 기반으로 처리하되, 실제로 A열/필수 컬럼이 모두 비어 있는 행은 건너뛰도록 하세요.

4) 일정 생성 규칙(핵심)
각 행에 대해 아래 조건을 만족할 때만 캘린더에 종일 일정을 생성합니다.
title과 publisher가 비어있지 않음
deadline이 유효한 날짜임(Date 객체 또는 변환 가능한 값)
일정 제목(title)은 다음 규칙으로 만드세요.
"{책제목} {출판사}"
일정은 “종일 일정(All-day event)”로 생성해야 합니다.

중복 방지 로직:
같은 deadline 날짜에, 같은 일정 제목이 이미 존재하면 생성하지 않습니다.
구현은 getEventsForDay(deadline)로 해당 날짜의 이벤트 목록을 가져와 제목이 동일한 이벤트가 하나라도 있으면 스킵합니다.
처리 결과는 실행 로그에 남겨야 합니다.
예: “이미 추가됨”, “추가함”, “deadline이 유효하지 않아 스킵” 등.

5) 날짜 처리/유효성 검사
deadline 셀 값이 다음 형태일 수 있으니 모두 고려하세요.
Date 객체
문자열(예: 2025-12-31, 2025.12.31 등)
스프레드시트 날짜 직렬값(숫자)
유효하지 않으면 해당 행은 스킵하고 로그를 남기세요.
가능한 경우 문자열/숫자는 Date로 변환을 시도하세요.
시간대 이슈(한국 시간) 가능성을 고려하여, 최소한 “날짜만” 기준으로 종일 일정이 생성되도록 주의하세요.

6) 성능/안전성 요구사항
루프 변수는 반드시 let 또는 const로 선언하세요(전역 변수 금지).
가능한 한 Spreadsheet 호출을 최소화하세요(한 번에 범위를 읽고 메모리에서 처리).
Calendar 호출도 불필요하게 반복하지 않도록 구조를 깔끔하게 작성하세요.
캘린더 ID가 잘못되었거나 캘린더 객체가 null이면 중단하고 사용자/로그에 안내하세요.

7) 사용성(옵션이지만 포함 권장)
처리 완료 후 “몇 건 처리/몇 건 추가/몇 건 스킵” 같은 요약 정보를 alert 또는 로그로 남기세요.
중복 판단 기준을 추후 확장 가능하도록 분리해 주세요(예: isDuplicateEvent_(cal, date, title) 같은 헬퍼 함수).

8) 최종 산출물 형식
최종 답변에는 다음을 포함하세요.
완성된 Apps Script 코드(전체)
코드 사용 방법(어떤 시트를 어떻게 준비하고, 어떤 메뉴를 눌러 실행하는지) 간단히 3~5줄
불필요한 설명은 줄이고, 바로 실행 가능한 수준으로 작성하세요.
300x250