소개
블로그에 관급 실무 서식을 하나씩 올리다가, "이 서식 그냥 파일로 받을 수 없냐"는 댓글이 쌓이길래 크몽에 패키지로 팔아보기로 했어요. 서식 몇 장, 사용설명서 매뉴얼, 그리고 크몽 상세페이지에 넣을 이미지까지 — 패키지 하나에 손이 꽤 많이 가더라고요.
처음엔 이 세 가지(서식·매뉴얼·상세이미지)를 전부 손으로 만들면 되는 줄 알았어요. 그런데 서식을 준비하는 단계에서, 제가 전혀 예상 못 한 곳에서 진짜 문제를 하나 발견했어요. 그 이야기부터 정리해볼게요.
진행 방법
1) 처음엔 셀 값만 바꾸면 마스킹 끝인 줄 알았어요
제가 실제 현장에서 쓰던 엑셀 서식을 판매용으로 바꾸려면, 발주처명·공사명·업체명·대표자명 같은 진짜 정보를 지워야 하죠. 그래서 클로드에게 "이 셀 값들을 전부 가짜 정보로 바꿔줘"라고 요청해서, 실제 발주처 → "OO교육지원청", 실제 공사명 → "OO유치원 신설공사", 실제 업체명 → "㈜대한종합건설"처럼 일관된 가상의 이름으로 바꿨어요. 여기서 끝인 줄 알았어요.
2) 근데 파일 안에 안 보이는 파일 경로가 남아있었어요
패키지 하나를 다 만들고 최종 점검을 하던 중이었어요. 클로드가 엑셀 파일을 압축파일 다루듯 열어서 내부 구조를 확인해보더니, 셀에는 안 보이지만 파일 내부에 "외부 참조(externalLinks)"라는 게 남아있다는 걸 찾아냈어요. 제가 몇 년 동안 이 서식 저 서식 복사해서 재사용하다 보니, 예전에 참조했던 다른 현장 파일의 실제 경로와 값이 엑셀 안쪽에 그대로 캐시로 남아있었던 거예요. 화면에 보이는 셀은 전부 가짜 이름으로 바뀌었는데, 파일을 열어보면 안 보이는 곳에 진짜 프로젝트명과 관계없는 제3자의 이름까지 섞여 있었던 거죠.
unzip -l 서식.xlsx | grep -i externalLink
# xl/externalLinks/externalLink1.xml
# xl/externalLinks/_rels/externalLink1.xml.rels ← 여기 안에 예전 파일 경로가 살아있었음셀 값만 바꾸는 걸로는 절대 못 잡아내는 문제였어요. 그대로 판매했으면 정말 아찔했겠다 싶었어요.
3) 5단계로 걷어냈어요
클로드와 같이 이 문제를 어떻게 없앨지 정리했어요. 압축파일 안의 관련 항목을 다 찾아서 지우는 방식이었어요.
① xl/externalLinks/ 폴더 전체 삭제
② workbook.xml에서 <externalReferences> 태그 제거
③ workbook.xml.rels에서 externalLink 관계 항목 제거
④ [Content_Types].xml에서 관련 Override 항목 제거
⑤ [n]! 형태로 외부파일을 살아있게 참조하던 수식은 고정값으로 변환이후부터는 새 패키지를 만들 때마다 unzip -l file.xlsx | grep -i externalLink부터 먼저 돌려보는 걸 필수 절차로 못 박았어요. 셀 값 치환은 마스킹의 절반밖에 안 된다는 걸 이때 확실히 배웠어요.
4) 서식 하나가 아니라 세트 전체라, 반복 입력도 자동화했어요
패키지 안에는 서식이 여러 장 들어가는데, 예를 들어 기성청구서 패키지는 시트가 여러 개고 공사명·업체명 같은 값이 시트마다 반복돼요. 처음엔 시트마다 값을 따로 채웠는데, 실제 구매자가 쓸 때도 매번 여러 시트에 같은 값을 입력해야 하면 번거롭겠더라고요. 그래서 "기초자료"라는 입력 전용 시트 하나를 만들고, 나머지 시트들은 전부 그 시트를 수식으로 참조하게 바꿨어요.
기초자료!$D$6 ← 여기 한 번만 입력하면
= 기초자료!$D$6 ← 다른 시트들이 전부 이 값을 그대로 따라감한 곳만 입력하면 나머지 시트에 자동으로 반영되는 구조가 되니까, 저도 마스킹할 때 실수로 한 시트만 바꾸고 다른 시트를 빠뜨리는 일이 없어졌고, 구매자도 매번 같은 값을 여러 번 입력할 필요가 없어졌어요.
5) 매뉴얼은 pandoc으로 뽑다가 표가 깨지는 문제가 반복돼서, 재조립하는 방식으로 바꿨어요
서식만 팔면 "이걸 어떻게 쓰는지"를 모르는 분들이 많아서, 48페이지짜리 사용설명서 매뉴얼도 같이 만들었어요. 마크다운으로 초안을 쓰고 pandoc으로 워드 파일로 변환하는 방식을 썼는데, 표가 많은 페이지에서 표 구조가 깨지는 문제가 반복됐어요. 이럴 땐 patch로 땜질하는 대신, python-docx로 표를 처음부터 다시 조립하는 방식으로 바꿔서 해결했어요.
6) 상세이미지는 실제 화면 캡처 대신 카드형 템플릿으로 만들었어요
크몽 상세페이지에는 이미지를 최대 9장까지 넣을 수 있는데, 처음엔 실제 엑셀 화면을 캡처해서 넣어보려고 했어요. 그런데 표가 이미지 폭보다 넓어서 페이지 밖으로 잘리는 문제가 계속 났어요. 그래서 방향을 바꿔서, 문제제기·비교표·자동연동 구조·매뉴얼 목차·구성서류 목록·전문가 소개·가격·FAQ, 이렇게 8종류의 카드 슬라이드를 함수로 만들어두고, 패키지마다 필요한 조합만 골라 쓰는 공용 템플릿을 만들었어요. 예를 들어 "가능/불가능 비교표" 슬라이드는 원래 산업안전보건관리비용으로 만들었는데, 라벨만 "심의대상/심의제외"로 바꿔서 설계변경 패키지에도 그대로 재사용했어요. 이렇게 6개 패키지에 총 36장의 상세이미지를 만들었어요.
7) 그런데 만들고 나서 보니, 광고 없이도 검색에 걸리고 있었어요
여기까지는 "패키지를 어떻게 잘 만들까"에만 집중했는데, 얼마 뒤에 예상 못 한 확인을 하게 됐어요. 제 블로그가 어떤 키워드로 검색에 걸리는지 평소에 종종 확인하는데, "환경보전비"라는 키워드로 검색을 해봤더니 국가법령정보센터·네이버지식백과 같은 공식·사전류 다음으로, 제가 크몽에 올려둔 "기성청구서+환경보전비 반려없이 통과하는 법" 패키지 상품이 광고 표시 없이 자연검색 결과에 그대로 노출되고 있었어요. 블로그 글만 검색에 잡히는 줄 알았는데, 크몽 상품페이지도 하나의 콘텐츠로 인식돼서 같이 노 출되고 있었던 거예요. 그래서 이후로는 크몽 상품페이지를 만들 때도 반응이 좋았던 블로그 글의 제목·표현을 후킹 문구로 가져다 쓰는 걸 신경 쓰기 시작했어요.
결과와 배운 점
결과: 서식(마스킹+단일입력 자동화)·매뉴얼(사용설명서)·상세이미지(공용 템플릿 8종) 세 가지를 갖춘 패키지 6개를 완성했어요. 새 패키지를 만들 때마다 처음부터 다시 고민하는 게 아니라, 이미 만들어둔 절차와 템플릿을 순서대로 따라가기만 하면 되는 구조가 됐어요. 덤으로 크몽 상품페이지 자체가 광고 없이도 자연검색에 노출된다는 것도 확인했어요.
배운 점: "화면에 보이는 값만 바꾸면 마스킹 끝"이라고 생각한 게 제일 위험한 착각이었어요. 개인정보나 실제 프로젝트 정보는 눈에 보이는 셀보다, 파일 내부의 안 보이는 메타데이터(외부 참조, 캐시된 값)에 더 많이 숨어있을 수 있다는 걸 이번에 제대로 배웠어요. 이후로는 마스킹 작업의 첫 단계를 항상 "숨은 데이터부터 확인"으로 바꿨어요.
시행착오: 하이퍼링크를 코드로 넣었더니 엑셀에서 "파일을 복구하시겠습니까" 경고가 뜨는 문제도 있었어요. 원인은 하이퍼링크가 내부 시트 이동인데도 외부 링크 형식으로 저장된 거였고, 이건 하이퍼링크 객체를 다르게 만드는 방식으로 고쳤어요. 엑셀 전용 함수(NUMBERSTRING)를 썼다가 무료 프로그램(리브레오피스)에서 오류로 뜨는 것도 발견해서, "엑셀 전용 함수"라고 매뉴얼에 따로 표기해뒀어요.
도움이 필요한 부분: 저는 크몽 한 곳에서만 겪은 문제인데, 다른 채널(예: 다른 재능마켓, 자체 스토어)에서도 엑셀 같은 오피스 파일을 판매하실 때 비슷한 숨은 메타데이터 문제를 겪으신 분이 계신지 궁금해요.
앞으로 계획: 서식 자체보다 "사용설명서"에 담긴 25년 실무 판단(서식 간 연결 구조, 자주 반려되는 지점, 작성 순서)이 진짜 값어치라고 보고 있어요. 그래서 개별 서식은 블로그에서 무료로 계속 풀고, 유료 패키지는 사용설명서가 있는 조합으로만 구성하는 방향을 유지할 계획이에요. 크몽 상품페이지도 한 번 올리고 끝나는 게 아니라, 새 블로그 글이 반응 좋으면 그 제목·표현을 상품페이지에도 반영하는 식으로 계속 관리할 계획이에요.
도움 받은 글 (옵션)
크몽 상품 등록 초반에 이미 승인·판매 중이던 "착공패키지" 라이브 페이지의 상품 문구·썸네일 구조를 그대로 표준으로 삼아서, 이후 패키지들도 같은 형식(서비스 설명 → 이런 분께 필요합니다 → 핵심 특징 → 구성 서류 → 가격)으로 통일했어요.