Tag: 빌드인퍼블릭

  • [파마비아] SNS 자동 발행 도구의 한계를 찾아 개선한 과정

    [파마비아] SNS 자동 발행 도구의 한계를 찾아 개선한 과정

    같은 배경만 반복되던 인스타그램 피드

    자동화 도구를 처음 만들 때는 당장 글이 올라가는 것만 중요했다. 쇼핑몰 사장님의 계정을 열어보니 보라색 그라데이션 카드가 스무 개 이상 쌓여 있었다. 콘텐츠가 달라도 디자인은 죽 같았다.

    다른 기능 개선과 버그 수정에 집중하다 보니 배경 문제는 미루고 미뤘다. 미루는 게 결국 방치가 됐다.

    이미지 배경을 글에 맞춰 생성하는 방식

    스무 가지 배경을 새로 추가했다. 편지지 질감, 꽃잎, 단풍잎, 눈 내리는 풍경, 크리스마스 장식, 대리석, 카페 테이블, 슬레이트 돌 같은 것들이다.

    글 제목마다 다른 배경이 지정된다. 같은 글은 같은 카드로, 다른 글은 다른 배경으로 나간다. 미리보기에서 보는 게 그대로 발행된다.

    밝은 배경에 검은 글씨는 읽기 어렵다. 이미지 중앙 영역의 명도를 재서 글자 색을 자동으로 조정하도록 만들었다.

    페이스북·스레드에 자동으로 이미지 추가하기

    처음엔 페이스북과 스레드에는 텍스트만 올렸다. 두 채널 모두 사진이 붙은 글이 더 많이 노출되는데도 그랬다.

    ‘사진 없으면 카드 자동 생성’ 옵션을 추가했다. 이미지를 따로 만들지 않아도 서버가 직접 카드를 그려서 올라간다. AI를 쓰지 않아서 크레딧도 차감되지 않는다.

    크레딧 계산을 단순하게 정하기

    처음엔 AI 토큰 사용량으로 계산했다. 실제 차감액을 모르고 누를 수밖에 없었다.

    화면에 ‘SNS 8크레딧’이라 표시했는데 실제로는 56~98이 빠졌다. 블로그 예약 발행은 100이라고 했지만 돈을 안 받고 있었다.

    이제 원고 생성 100, 블로그 재작성 50, SNS 재작성 30으로 통일했다. 글의 길이와 상관없이 같은 크레딧이 나간다. 원문 그대로 올리면 0이다.

    예약 발행 시 미리 글을 만들어두기

    전엔 발행 시각이 되어야 글을 생성했다. 예약 목록에서 어떤 내용이 나갈지 볼 수 없었다.

    지금은 예약을 걸면 30초 안에 채널별 최종 글이 완성된다. 발행 내역에서 내용을 확인하고 직접 수정할 수도 있다. 이 단계에선 크레딧이 나가지 않는다. 지시 한 줄을 추가해서 다시 생성하는 것도 가능하다.

    부수 효과가 생겼다. 발행 시각에 AI를 호출하지 않으니 그때문에 막혀서 원문 그대로 올라가는 실수가 없어졌다.

    발행 중 절전 모드에 빠진 예약이 갇히는 문제

    테스트 중에 구멍을 찾았다.

    컴퓨터 두 대를 동시에 켜도 글이 중복으로 올라가지 않는지 확인했다. 예약 건은 한 대만 가져가고 나머지는 물러나는 방식이다.

    그런데 발행 중인 컴퓨터가 절전 모드로 들어가면 그 예약이 갇혔다. 다시 시도되지도 않고 알림도 오지 않았다. 한 시간 뒤 자동으로 풀리도록 수정했다.

    실제 사용에서 계속 드러나는 결함

    직접 쓰면서야 문제가 눈에 띈다. 테스트만 해서는 절대 못 본다. 다음 주에도 뭔가 고칠 게 하나쯤 나올 것 같다.

  • [파마비아] 웹사이트 리디자인 4번 실패하며 배운 것

    [파마비아] 웹사이트 리디자인 4번 실패하며 배운 것

    웹사이트 메인 페이지를 처음부터 완성하기까지 네 번을 갈아엎었습니다. 매번 실패한 이유를 기록해두면 다음 프로젝트에서 같은 실수를 피할 수 있습니다. 이 글은 사용자 타겟팅부터 시각 설계, 글귀 선택까지 웹사이트를 제대로 만드는 순서를 정리한 것입니다.

    타겟 고객을 좁혀야 디자인이 보인다

    처음엔 막연했습니다. 기능만 늘어놓으면 된다고 생각했거든요. 손님을 명확히 정하는 순간 달라졌습니다.

    ‘온라인으로 물건 파는 1인 사장’으로 타겟을 정했습니다. 스마트스토어, 쿠팡 셀러, 자사몰을 운영하는 사람들입니다.

    대상이 정해지니 색상, 사진, 글자 크기가 자연스럽게 결정됐습니다. 그 전까지는 모든 선택이 추상적이었거든요.

    비슷해 보이는 레이아웃은 버려야 한다

    첫 번째 실패입니다.

    같은 템플릿에 글자만 바꿔서 ‘세 가지 버전’이라고 제시했어요. 색도 카드 모양도 전부 똑같았습니다. 의뢰인은 한눈에 알아챘습니다. “다 비슷하네요.”

    비교할 수 있어야 선택이 됩니다. 내용만 다른 건 선택지가 아니라 복제본입니다.

    움직임이 부족해 보이면 웹이 답답하게 느껴진다

    두 번째 실패입니다.

    지적을 받았습니다. 화면이 너무 정적이라고요.

    캔버스로 그물망 애니메이션과 채널별 타이핑 데모를 넣었습니다. 스크롤할 때 나타나는 숫자 세기, 막대 차오르기, 사진 패럴랙스까지 더했어요.

    다만 네 가지만 씁니다. 그 이상이면 오히려 AI가 만든 느낌이 납니다.

    어두운 화면은 사용자를 멀어지게 한다

    세 번째 실패입니다.

    개발자 눈에는 멋있었습니다. 하지만 밤에 택배를 싸는 사장님 입장에선 어려운 도구처럼 보였어요. 접었습니다.

    만드는 사람의 감각과 쓰는 사람의 경험은 다릅니다.

    사진은 제품이 아닌 작업 장면을 담아야 한다

    네 번째 실패입니다.

    처음엔 포장, 상품 촬영 위주 사진을 넣었어요. 그러니 쇼핑몰처럼 보였습니다. 글을 쓰는 장면으로 다시 뽑았습니다.

    사진 7장을 새로 준비했고 노트북, 수첩, 만년필, 커피로 소품을 통일했어요. 전부 합쳐 980KB로 줄였습니다.

    사진이 무거우면 첫 화면이 늦게 뜹니다.

    글씨 크기와 줄간격은 사용자 나이를 고려한다

    본문을 18px, 줄간격 2.02로 키웠습니다. 사장님들 연령대를 생각하면 작게 쓰면 읽히지 않거든요.

    거짓말보다 말하지 않기가 어렵다

    ‘완전 자동’을 안 썼습니다.

    네이버와 티스토리는 공식 발행 API가 없어서 사용자 컴퓨터의 데스크톱 앱이 필요합니다. 감출 게 아니라 미리 말할 일입니다.

    ‘검색 1위 보장’도 쓰지 않았어요. 순위는 저희가 정하는 게 아니라 매일 재서 보여줄 뿐이거든요.

    후기와 사용자 수도 마찬가지입니다. 아직 유료 고객이 없습니다. 없는 후기를 만드는 건 ‘지어내지 않는 것’을 파는 서비스가 할 짓이 아니에요.

    화면 예시로 넣은 숫자 옆에는 ‘숫자는 예시’라고 붙였습니다. 네이버, 페이스북, 워드프레스는 조회수를 가져올 방법이 없어서 ‘가져오지 못한다’고 그대로 적었습니다.

    기획서를 먼저 쓴 뒤에 코드를 짜야 한다

    처음엔 바로 코드부터 짰습니다. 한 번 지적을 받고 멈췄어요.

    무엇을 어떤 순서로 보여줄지, 사진은 어떤 장면을 몇 장 쓸지, 절대 쓰지 않을 말은 무엇인지를 문서로 먼저 정했습니다.

    그러고 나니 만드는 게 빨랐습니다. 순서가 거꾸로였던 거죠.

    A/B 테스트는 충분한 트래픽이 있을 때 한다

    헤드라인은 하나로 갔습니다. “밤 11시에 쓴 글이, 아침엔 여섯 곳에 올라가 있습니다.”

    후보가 셋 있었지만 방문자가 아직 적을 땐 나누면 어느 쪽도 판단이 서지 않습니다.

    낮은 트래픽 상태에서는 페이지 최적화가 의미가 없다

    2주 뒤에 첫 화면 이탈률과 ‘올린 뒤’까지 내려온 비율을 봅니다.

    숫자가 안 나오면 페이지를 또 고치는 게 아니라 유입을 먼저 볼 생각입니다. 아무도 안 들어오는 페이지는 아무리 고쳐도 숫자가 안 움직이거든요.

  • [파마비아] 블로그 검색 순위를 실시간으로 추적하는 방법

    [파마비아] 블로그 검색 순위를 실시간으로 추적하는 방법

    글을 발행한 뒤 검색 결과에서 어느 위치에 있는지 확인하는 것은 블로그 성장의 첫 단계입니다. 네이버 검색 API를 활용해 매일 자동으로 순위를 측정하고, 글의 실제 성과를 파악하는 방법을 소개합니다.

    발행 후 검색 순위를 추적해야 하는 이유

    지금까지 대부분의 블로그 도구는 글을 올리면 끝이었습니다. 조회수 같은 기본 지표는 보여주지만, 블로그로 성과를 내려는 운영자에게 정말 필요한 것은 다릅니다.

    검색 순위입니다.

    그 키워드로 검색했을 때 내 글이 몇 위에 있는지 알아야 다음 글의 방향을 결정할 수 있습니다. 이 정보가 없으면 글을 계속 쌓기만 할 뿐 개선할 근거가 없습니다.

    네이버 검색 API로 일일 순위 측정하기

    글 제목으로 검색했을 때의 순위를 매일 오전 9시 30분에 자동 측정합니다. 네이버의 공식 검색 API를 사용하므로 화면을 긁어내는 방식과 달리 안정적입니다.

    API는 최대 100위까지의 결과를 반환합니다. 100위 밖이면 ‘100위 밖’으로 표시됩니다.

    글 작성 단계에서 입력한 핵심 키워드의 첫 번째 항목을 검색어로 사용합니다. 키워드를 등록하지 않은 글은 순위 측정 대상이 되지 않습니다.

    네이버 주소 정규화로 정확한 비교

    네이버 검색 결과에는 m.blog와 blog, http와 https, www 유무, 끝 슬래시, 쿼리 파라미터 등이 제각각 섞여 나옵니다. 같은 글이 다른 주소로 여러 번 인식될 수 있다는 뜻입니다.

    이를 방지하기 위해 모든 URL을 하나의 표준 형식으로 정규화한 뒤 비교하는 로직을 별도로 구축했습니다.

    순위 변화를 한눈에 보는 인터페이스

    웹 콘솔의 ‘성과’ 섹션에는 검색 순위 표가 있고, 각 글 옆에 상승/하강 화살표로 변화를 표시합니다.

    앱에서는 ‘발행 내역’ 화면의 글 목록에 ‘검색 ○위’ 뱃지를 붙여서 스크롤하며 한 번에 확인할 수 있습니다.

    순위가 안 나온다는 것이 말해주는 것

    실제로 쓴 글 9건을 측정해보니 모두 100위 밖이었습니다. 글 제목을 그대로 검색해도 잡히지 않았습니다.

    원인은 두 가지입니다.

    • 블로그가 신규라 도메인 권위가 낮음
    • 설정한 키워드가 ‘서비스운영’, ‘블로그운영’ 같이 너무 광범위함

    그런데 이게 바로 이 기능을 만든 이유입니다. 결과를 보지 못하면 자신의 키워드 선택이 틀렸다는 사실조차 모르게 됩니다. 순위가 안 나오는 것 자체가 가장 중요한 피드백입니다.

    발견된 추가 문제와 해결

    제품 설명을 위해 공개해둔 ‘발행 기록’ 페이지가 있습니다. 이 페이지를 자동으로 재생성하는 스크립트가 매번 방문 측정 코드를 삭제하고 있었습니다.

    정작 트래픽을 확인해야 할 페이지가 아무것도 기록하지 못하고 있었던 것입니다. 생성 스크립트를 수정해서 측정 코드가 유지되도록 고쳤습니다.

    순위 추적의 한계

    블로그 탭 기준이므로 통합 검색 순위와 완전히 일치하지는 않습니다. 절대적인 위치보다는 ‘지난주보다 올랐는가, 내렸는가’를 보는 용도로 설계했습니다.

    발행 버튼을 누르는 것으로 끝나던 워크플로우가 이제는 발행 후의 변화까지 추적하게 됩니다. 순위가 나오지 않는 글들은 당신의 키워드 전략을 다시 생각해야 한다는 신호입니다.

  • [파마비아] macOS 앱 배포 중 놓친 4가지 실수와 해결책

    [파마비아] macOS 앱 배포 중 놓친 4가지 실수와 해결책

    Mac 데스크톱 앱을 만들어 배포할 때 가장 위험한 것은 무언가 망가져도 알 수 없다는 점입니다. 사용자가 앱을 열 수 없거나, 설치 화면이 깨져 나가거나, 파일이 너무 커서 받지 못하는 상황이 조용히 일어나면 배포자는 며칠 뒤에야 문제를 발견합니다. 실제 배포 과정에서 겪었던 네 가지 장애와 각각을 막은 방법을 정리했습니다.

    Apple 공증 없이 배포된 앱, 사용자가 열 수 없음

    8월 25일부터 받은 Mac 앱이 전부 실행되지 않았습니다. “Apple은 이 앱에 악성 코드가 없음을 확인할 수 없습니다”라는 경고와 함께 휴지통으로 이동하는 창만 떴습니다. 나간 파일 4개가 모두 막혀 있었습니다.

    원인은 빌드 방식을 바꾼 시점이었습니다.

    GitHub Actions 비용을 줄이려고 Mac 빌드를 클라우드에서 로컬 컴퓨터로 옮겼는데, 클라우드 환경에서는 Developer ID 서명과 Apple 공증을 자동으로 진행했습니다. 반면 만든 로컬 스크립트는 임시 서명만 했습니다. 제대로 확인하지 않은 채 여러 번 배포했습니다.

    이제는 Developer ID로 서명한 뒤 Apple 공증을 받고, 마지막 단계에서 정말 앱이 열리는지 검사합니다. 열리지 않으면 배포 자체를 중단합니다.

    설치 화면이 회색 빈 배경으로 나간 이유

    드래그해서 설치하는 아름다운 화면 대신 배경도 화살표도 없는 기본 회색 창만 배포하고 있었습니다.

    사용한 도구가 Finder를 자동으로 조종해서 설치 창을 꾸미는 방식이었는데, 이 작업이 실패해도 오류 메시지 없이 성공한 척 넘어갔습니다. 설정 파일을 확인해보니 배경 항목이 없었습니다.

    Finder를 거치지 않고 설정 파일을 직접 작성하는 방식으로 바꿨습니다. 생성 후 바로 열어서 배경이 제대로 붙었는지 확인하는 단계를 추가했습니다.

    앱 용량이 1.1GB인 이유

    배포 파일이 1.1GB였습니다. 사용자는 받는 데만 몇 분이 걸렸습니다.

    앱 안에 torch(241MB), OpenCV(108MB) 같은 머신러닝 라이브러리가 통째로 포함돼 있었습니다. 우리 코드는 이 라이브러리를 한 줄도 사용하지 않았습니다. 3~4월에 다른 작업으로 설치한 패키지가 컴퓨터에 남아 있었고, 앱 패키징 도구가 “설치돼 있으니 포함해야 한다”고 판단해 전부 담았습니다.

    이 프로젝트에 필요한 6개 라이브러리만 들어 있는 전용 환경을 만들었습니다. 1.1GB가 212MB로 줄었고, 배포 파일은 378MB에서 74MB가 됐습니다. 5분의 1 수준입니다. 다시 용량이 부풀어나면 빌드를 멈추게 설정했습니다.

    새로고침 후 작성 중인 글이 모두 사라짐

    크레딧으로 만든 채널별 초안을 손으로 수정했는데, 페이지를 새로고침하면 통째로 사라졌습니다.

    제목, 원고, 채널 선택, 채널별 스타일, 초안 수정본을 모두 함께 자동 저장하도록 구조를 바꿨습니다. 각 글의 상태를 따로 보관해서 글 A를 쓰다가 글 B로 이동해도 A가 남습니다. 새로고침 직후면 물어보지 않고 복구하고, 시간이 지나면 “30분 전에 쓰던 글이 있어요 [이어서 쓰기]”라고 제안합니다.

    조용한 실패를 찾아내는 것이 핵심

    서명, 설치 화면, 저장 모두 실패해도 아무 경고 없이 진행된다는 게 공통점이었습니다.

    이제 모든 빌드와 배포 단계 마지막에 검사를 추가했습니다. 정말 작동하는지 확인하고, 문제가 있으면 배포를 멈춥니다.

    그 외 함께 개선한 부분

    • 클라우드 저장 비용 누수 — 무료 한도는 0.5GB인데 7.8GB를 사용 중이었습니다. 빌드 결과물이 릴리스마다 270MB씩 쌓여 118개가 됐습니다. 전부 삭제하고 보관 기간을 90일에서 7일로 단축했습니다.
    • 채널 스타일 용어 설명 부족 — ‘후기체’가 무엇인지 선택 창에서 알 수 없었습니다. 각 스타일을 카드로 펼쳐 설명과 3줄 예시를 함께 보여주도록 변경했습니다.
    • AI 처리 강제 — 원고를 그대로 올리고 싶은 경우가 있는데 AI 처리를 거쳐야 했습니다. ‘원고 그대로’ 옵션을 추가해 크레딧 0으로 그대로 배포할 수 있게 했습니다.
    • 화면 기준 불일치 — 웹은 보라색, 앱은 남색, 편집기는 회색을 사용해 일관성이 없었습니다. 색, 크기, 간격, 아이콘 규칙을 하나의 문서로 정리하고 거기서만 값을 가져오게 했습니다.
  • [파마비아] SNS 발행 전 이미지 작업으로 지치는 콘텐츠 작가들을 위해

    [파마비아] SNS 발행 전 이미지 작업으로 지치는 콘텐츠 작가들을 위해

    글은 완성했는데 사진이 없어서 공유를 미루는 일. 있다면 이 글이 정확히 당신의 상황입니다. 특히 인스타그램, 페이스북처럼 채널마다 이미지 크기가 다르면, 같은 내용을 세 번 네 번 다시 만들어야 합니다. 이 반복 작업을 없애기 위해 편집 도구 안에서 카드를 직접 만들 수 있도록 개선했습니다.

    매번 외부 도구를 켜야 하는 불편함

    콘텐츠를 준비하는 흐름이 계속 끊어졌습니다. 텍스트는 끝났는데 배경 이미지가 필요하면 캔바나 피그마를 켜야 했거든요. 거기서 카드를 디자인하고, 파일을 내려받고, 다시 돌아와 업로드하는 과정. 이게 한 번이면 문제없겠지만, 채널이 여러 개니까요.

    인스타그램 피드는 정사각형(1080×1080)이 기본입니다. 같은 콘텐츠를 스토리(1080×1920)로도 올려야 하면 높이가 길어지도록 다시 만듭니다. 페이스북 링크카드(1200×628), 블로그 헤더(1200×675)까지 일일이 작업하면, 한 글 하나 내보내는 데 네 번 다섯 번 편집기를 오갑니다.

    기존 편집기가 크기 조정을 못 했던 이유

    사실 카드 만드는 기능은 있었습니다. 문제는 제대로 작동하지 않았다는 것.

    캔버스 크기를 바꾸면 그 안의 텍스트와 이미지가 고정된 위치에서 움직이지 않습니다. 정사각형에서 중앙에 놓았던 제목이 세로형 캔버스로 바뀌면 왼쪽 위 구석에 그대로 남아있어요. 글자 크기까지 조정하려면 모든 요소를 처음부터 다시 배치해야 했습니다.

    이미지 소스도 번거로웠습니다. 직접 찍은 사진이 없으면 무료 사이트를 검색하거나 AI로 생성해야 했는데, 그 서비스들을 오가느라 시간이 흘렀죠. 같은 배경 이미지를 재활용하고 싶어도 보관할 공간이 없었습니다.

    비율을 유지하면서 크기 조정하기

    첫 번째 개선점은 캔버스 크기를 자유롭게 지정하는 것입니다. 100픽셀부터 4096픽셀까지 숫자로 직접 입력할 수 있게 했어요.

    자주 쓰는 크기는 프리셋으로 저장했습니다.

    • 인스타그램 정사각형: 1080×1080
    • 인스타그램 세로: 1080×1350
    • 인스타그램 스토리: 1080×1920
    • 페이스북 링크카드: 1200×628
    • 블로그 와이드: 1200×675

    핵심은 크기가 변해도 내부 요소가 비율에 맞춰 함께 움직인다는 점입니다. 중앙에 배치한 제목은 어떤 크기로 바꾸든 중앙에 있고, 이미지는 캔버스를 벗어나지 않습니다. 한 번 배치해두면 프리셋만 클릭해 여러 채널용을 순식간에 뽑을 수 있게 됐습니다.

    이미지 생성과 재활용 기능 추가

    배경이 필요하면 글로 설명하면 AI가 현재 캔버스 크기에 맞춰 이미지를 만들어줍니다. 한 장에 100크레딧이 드니까, 생성 전에 확인 메시지를 띄웁니다.

    매번 새로 만들면 크레딧이 빠릅니다. 그래서 이미지 보관함을 추가했어요. 업로드한 사진, AI로 만든 이미지, 완성한 카드 전부 한곳에 모입니다. 보관함에서 이전에 만든 이미지를 선택하고 ‘글자 얹기’를 누르면 편집기가 열리고, 그 이미지를 배경으로 텍스트만 바꿔 쓸 수 있습니다.

    실제 운영하면서 마주친 버그들

    완성 후 직접 글을 써서 발행해보니 새로운 문제가 나타났습니다.

    본문 중간에 삽입한 사진이 발행 후에는 전부 끝에 몰려 있었어요. 사진의 위치 정보가 어디선가 손실되고 있었던 거죠. 본문에 자리 표시를 남기고 발행할 때 그 지점에서 이미지를 삽입하도록 수정했습니다.

    또 다른 버그도 찾았습니다. 붙여넣기 성공 여부를 ’50자 이상’이라는 고정값으로만 판정하고 있어서, 짧은 문단이 실패로 감지되면 타이핑 방식으로 넘어갔고 그러면 굵게나 소제목 같은 서식이 모두 사라졌습니다. 이것도 함께 고쳤습니다.

    지금 당신이 얻는 것

    글 쓰는 화면에서 이미지까지 완성해 바로 올릴 수 있습니다. 다른 도구를 켤 필요가 없어요.

    크기 프리셋 덕분에 채널별 이미지를 여럿 만드는 시간이 크게 줄었습니다. 보관함에 저장된 이미지는 추가 크레딧 없이 몇 번이고 재사용할 수 있습니다.

    이미지 때문에 발행이 멈추는 일은 이제 거의 없어요. 완벽하지는 않지만, 실제 운영하면서 나타나는 문제를 계속 고쳐나가고 있습니다.

  • [파마비아] 네이버 블로그 자동 댓글 답변 구현하면서 놓친 3가지

    블로그를 운영하면서 페이스북이나 인스타그램 댓글에는 자동으로 답변이 달리는데, 정작 가장 많이 포스팅하는 네이버 블로그만 빠져 있었습니다. 이 글은 공식 API가 없는 네이버 블로그에서 자동 댓글 답변을 구현하면서 맞닥뜨린 기술적 문제와 마케팅 체계의 결함, 그리고 검색 최적화 실수를 어떻게 해결했는지 기록합니다.

    API 없는 플랫폼, 웹 크롤링으로 대응하다

    네이버 블로그는 공식 API를 제공하지 않습니다. 댓글을 읽는 것만 해도 힘이 드는데, 답글을 자동으로 달아야 하니 더 복잡했습니다.

    댓글 수집은 네이버 댓글 위젯이 내부적으로 쓰는 데이터를 로그인 세션으로 가져오는 방식으로 구현했습니다. 쓰기는 다르게 접근해야 했습니다. API처럼 직접 데이터를 보낼 수 없으니 사람이 모바일에서 댓글을 입력하는 것처럼 자동화했습니다.

    이 방식은 취약합니다. 네이버가 화면 구조를 조금 바꾸면 멈춰 버립니다. 계정이 정지될 위험도 있습니다. 그래서 오래 미뤄왔던 기능입니다.

    실제 테스트에서 발견한 숨은 버그

    끝내 직접 댓글로 전체 흐름을 테스트했습니다. 수집 → 분류 → 초안 작성 → 발송까지 모두 돌렸고, 블로그에 ‘블로그주인’ 배지가 붙은 답글이 올라가는 걸 봤습니다.

    한 번은 조용히 실패했습니다.

    시스템은 ‘발송 성공’을 기록했는데 블로그에는 댓글이 없었습니다. 원인을 파헤치니 ‘댓글을 입력해주세요’라는 안내 문구가 입력칸 위에 떠 있었고, 이게 클릭을 가로채고 있었습니다.

    이제는 등록 버튼을 누른 뒤 그 문장이 화면에 실제로 남아 있는지 확인합니다. 남아 있으면 실패, 사라지면 성공입니다. 버튼만 누르고 끝이라고 판단했던 전의는 버렸습니다.

    안전장치는 여전히 유지합니다. 글마다 자동 답글을 켜고 끌 수 있고, 하루 답글 상한을 정할 수 있으며, 답하기 어려운 질문에는 정해진 문구로만 응답합니다.

    사람이 실제로 묻는 질문에서 글감을 얻다

    광고비를 쓸 계획이 없으니 검색 유입이 유일한 채널입니다. 그런데 ‘무슨 글을 쓸까’ 막힐 때가 많았습니다.

    글감을 억지로 만들기로 결정했습니다. 대신 네이버 지식iN에서 실제로 나오는 질문을 글감으로 삼았습니다. 질문이 있다는 건 그 주제를 검색하는 사람이 있다는 뜻이기 때문입니다.

    이제 매일 한 편씩 글이 쌓입니다. 사이트맵과 RSS도 함께 갱신됩니다.

    전환율이 낮은 진짜 이유는 순서였다

    무료 진단 기능은 잘 돌아가고 있었습니다. 그런데 리드는 단 1건이었고, 그것도 이메일이 비어 있었습니다.

    문제는 기능이 아니었습니다. 순서였습니다.

    시스템은 샘플 글을 보여주기 전에 이메일부터 요구하고 있었습니다. 낯선 사이트를 처음 들어온 사람이 왜 이메일을 먼저 줄까요.

    순서를 뒤집었습니다. 먼저 샘플 글을 무료로 보여주고, 마음에 들면 그때 ‘이 글 이메일로 보내드릴까요?’라고 묻습니다.

    그리고 각 단계를 기록했습니다. 들어옴 → 진단 → 샘플 → 이메일 → 가입. 관리자 화면에서 어디서 이탈하는지 볼 수 있게 만들었습니다. 지금까지는 ‘전환이 안 된다’는 사실만 알았지, 정확히 어디서 떨어져 나가는지는 몰랐습니다.

    검색에 노출되지 않는 사이트의 정체

    가장 뒤늦게 알게 된 사실입니다. 사이트가 검색에 한 건도 나오지 않고 있었습니다.

    기본 메타 태그는 모두 있었습니다. 하지만 검색엔진에 사이트를 등록하지 않았습니다. 도메인을 바꾸기 전 옛 주소가 사이트맵에 남아 있었고, 같은 글이 두 개 주소에 살아 있어서 중복 콘텐츠로 잡혀 있었습니다.

    만들고 배포하는 것으로는 충분하지 않습니다. ‘검색에 실제로 잡히는가’까지 확인해야 비로소 끝입니다.

    다음 주에는 개선한 전환 흐름이 실제로 작동하는지 숫자로 확인할 예정입니다. 검색 등록 이후 유입이 어떻게 달라지는지도 기록하려고 합니다.

  • [파마비아] AI가 모르는 걸 지어내지 못하게 만든 이유

    댓글 자동 답글, 만들면서 제일 무서웠던 것

    요즘 블로그 댓글에 AI가 자동으로 답글을 다는 기능을 만들고 있어요. 편하긴 한데, 만들면서 제일 신경 쓴 건 딱 하나였어요. ‘AI가 모르는 걸 지어내면 어떡하지?’

    생각해보세요. 손님이 댓글로 ‘가격 얼마예요?’라고 물었는데, AI는 그 가게 사정을 전혀 모르잖아요. 그런데 그럴듯하게 ‘5만 원입니다~’ 이런 식으로 답을 만들어내면? 자동 발송이 켜져 있으면 그대로 나가버려요. 답글 하나가 사고가 되는 거죠.

    그래서 이렇게 만들었어요

    지어낼 수 없도록 아예 3단 구조로 짰어요.

    • 1단계: 사장님이 미리 등록한 공통 Q&A에 있는 질문이면 그 답변으로 답해요.
    • 2단계: Q&A에 없으면 사장님이 써둔 고정답변으로 넘어가요. (예: ‘자세한 내용은 연락 주세요’)
    • 3단계: 고정답변도 꺼둔 상태면 아예 답하지 않고 확인 목록으로 넘겨요.

    여기에 추가 안전장치도 넣었어요. 근거 없이 숫자나 연락처가 답글에 들어가면 자동 발송을 막고요. 불만이나 항의 댓글은 무조건 사람이 확인하게 했어요. 스팸은 당연히 답하지 않고요.

    글마다 켜고 끌 수 있게

    자동화는 글 단위로 켜고 끌 수 있어요. 켜지 않은 글의 댓글은 초안조차 만들지 않아서 크레딧이 0이에요. 글마다 ‘최대 몇 건까지 자동 답글할지’도 정할 수 있고요.

    실제로 돌려보니까요, ‘몇 시까지 하세요?’는 등록된 영업시간으로 정확히 답했고, ‘가격이 얼마인가요?’는 지어내지 않고 고정답변으로 넘어가더라고요. 제대로 작동하는 걸 보니 안심이 됐어요.

    같이 손본 것들

    댓글 답글 기능 만들면서 크레딧 구조도 다시 짰어요. 예전엔 글 1편이 3크레딧이었는데, 댓글 답글 같은 작은 작업이 반올림 때문에 4배로 과금되는 문제가 있었거든요.

    그래서 크레딧 단위를 100배로 바꿨어요. 이제 글 1편이 100크레딧, 답글은 9크레딧이에요. 훨씬 공정해졌죠.

    그리고 작업마다 다른 AI 모델을 쓰게 했어요. 긴 블로그 본문만 비싼 모델 쓰고, 짧은 답글이나 리라이트, 추천 같은 건 3배 싼 모델로요. 덕분에 무료 도구 응답 시간이 13초에서 6초로 빨라졌어요. 😊

    배운 것

    AI한테 ‘거짓말하지 마라’고 아무리 지시해도 소용없어요. 그것보다 지어낼 여지 자체를 없애는 구조가 훨씬 확실하더라고요.

    1인 개발자로서 AI 기능 만들 때마다 느끼는 건데요, 기술이 좋은 것보다 안전하게 쓸 수 있는 게 더 중요한 것 같아요. 특히 자동으로 손님한테 나가는 거라면요.

    다음엔 또 삽질한 이야기 들고 올게요. 🙌

  • [파마비아] 앱 심사에 영상을 냈습니다 — 동의 화면 하나 찍는 데 반나절

    왜 영상을 찍게 됐나요

    메타(페이스북·인스타그램·스레드)에 앱 심사를 넣었습니다. 권한 10개를 신청했어요. 승인되면 누구나 자기 계정을 연결해서 글을 자동으로 발행할 수 있게 되는 거죠.

    심사를 넣으려면 ‘이 기능이 실제로 작동하는 모습’을 영상으로 보여줘야 합니다. 권한마다 하나씩요. 특히 두 장면은 필수예요. OAuth 동의 화면과 실제로 게시된 결과. 이 둘이 없으면 거의 반려된다고 보면 됩니다.

    동의 화면이 안 나왔어요

    문제는 동의 화면을 찍을 수가 없었다는 거예요. 🤔

    왜냐하면 저는 이미 한 번 앱을 승인받은 상태였거든요. 그래서 다시 연결을 시도하면 플랫폼이 ‘아, 이미 허용한 앱이네’ 하고 동의 화면을 건너뛰고 바로 연결해버리더라고요.

    첫 번째 영상 찍고, 두 번째 영상 찍고 나서야 깨달았습니다. ‘아, 동의 화면이 안 뜨는구나.’ 반나절이 그렇게 갔어요.

    해결 방법은 의외로 간단했습니다

    페이스북 설정에 들어가서 우리 앱 권한을 삭제했어요. 그리고 다시 연결을 시도하니까 ‘어느 페이지에 접근을 허용할지’ 선택하는 화면이 그대로 나오더라고요. 이제야 찍을 수 있었습니다.

    영상 녹화를 자동화했습니다

    권한이 10개나 되니까 영상을 하나하나 손으로 찍기엔 너무 번거로웠어요. 그래서 스크립트를 짰습니다.

    콘솔 로그인 → 채널 선택 → 글 생성 → 발행 → 결과 확인까지 브라우저가 알아서 돌아가게요. 사람이 해야 하는 로그인이나 허용 클릭 같은 곳에서만 멈춥니다. 화면에는 지금 무엇을 보고 있는지 자막이 뜨게 만들었어요.

    덕분에 영상 10개를 빠르게 찍을 수 있었습니다. ✨

    부수적으로 발견한 것들

    영상을 준비하면서 몰랐던 문제들이 하나씩 드러났어요.

    • 채널 연결이 깨져 있었습니다. 콘솔을 별도 도메인으로 옮기면서 허용 오리진과 콜백 페이지 설정이 어긋나 있었더라고요. 조용히 깨져 있던 거죠.
    • 심사자에게 줄 계정이 없었습니다. 구글 로그인만 있었는데, 그걸로는 계정을 건네줄 수가 없어요. 그래서 이메일 로그인을 새로 붙였습니다.
    • 안 쓰는 권한은 뺐습니다. 댓글 읽기나 자동 답글 같은 기능은 아직 만들지 않았거든요. 쓰지도 않는 권한을 요청하면 심사 전체에 안 좋은 영향을 준다고 하더라고요. 나중에 따로 신청하기로 했어요.

    배운 것 한 줄

    심사는 ‘기능이 있다’를 보여주는 게 아니라 ‘이 화면에서 이렇게 쓴다’를 증명하는 일이더라고요.

    기능을 만드는 것과 그걸 다른 사람에게 보여주는 건 완전히 다른 일이었습니다. 영상 하나 찍는 데 반나절이 걸렸지만, 덕분에 서비스가 더 단단해졌어요. 이제 심사 결과를 기다리고 있습니다. 🙏

  • [파마비아] 가입 없이 바로 써보세요 — 무료 도구 3개를 풀었습니다

    왜 또 만들었냐고요?

    솔직히 말하면, 제품을 만들기 전에 확인하고 싶었어요. 사람들이 정말 이런 걸 필요로 하는지, 아니면 제가 혼자 필요하다고 착각한 건지요.

    광고비를 쓰기 전에 먼저 해결해줄 수 있는 문제가 있다면 그걸 공짜로 풀어보자고 생각했습니다. 그래서 famavia.com/tools 에 무료 도구 3개를 열었어요. 가입도, 로그인도 필요 없습니다.

    1. 블로그 제목 만들기 📝

    주제만 적으면 제목 10개가 나옵니다. 숫자형, 질문형, 후기형, 비교형을 섞어서 뽑아주고요. 각 제목마다 ‘왜 이게 눌릴지’ 한 줄 설명을 붙여뒀어요.

    제목 짓는 게 제일 어렵잖아요. 본문은 술술 써지는데 제목에서 10분씩 막히는 거. 저도 그래서 만들었습니다.

    2. 인스타 해시태그 만들기 #️⃣

    게시물 주제를 넣으면 해시태그 24개를 줍니다. 큰 태그 6개, 중간 태그 10개, 작고 구체적인 태그 8개로 나눠서요.

    왜 이렇게 섞냐면, 큰 태그만 쓰면 게시물이 바로 묻히고, 작은 태그만 쓰면 아예 안 보이거든요. 크기를 섞어야 노출이 됩니다. 이것도 여러 번 실패하면서 배운 거예요.

    3. 글 가독성 점검 ✅

    글을 붙여 넣으면 점수와 고칠 곳을 알려줍니다. 문장 길이, 문단 나눔, 반복 표현, 전체 구조를 봐요.

    제가 글을 쓰면서 제일 놓치는 게 이거였어요. 쓸 때는 괜찮은 것 같은데 나중에 보면 문장이 너무 길거나 문단이 뭉쳐 있거나. 독자 입장에서는 읽기 힘들죠.

    왜 이렇게 하는가 🤔

    앞서 공개한 블로그 진단 도구(famavia.com/check)와 같은 생각입니다. 필요한 걸 먼저 공짜로 해결해주고, 그다음에 남는 문제를 제품이 맡는 거예요.

    남는 문제가 뭐냐면, ‘매일 여러 채널에 올리는 일’이에요. 제목도 짓고 태그도 달고 가독성도 확인했는데, 이걸 블로그·인스타·유튜브 커뮤니티에 매일 올리려면 시간이 또 엄청 들거든요. 그 부분을 제품이 덜어주려고 합니다.

    그리고 더 중요한 이유가 있어요. 도구를 써본 사람은 제품이 뭘 하는지 이미 알아요. 설명 안 해도 됩니다. 광고비를 태우기 전에 사람들이 실제로 무엇을 필요로 하는지 확인하는 게 먼저라고 생각해요.

    그래서 어떻게 쓰나요?

    famavia.com/tools 로 들어가시면 3개 도구가 보입니다. 가입·로그인 없이 바로 쓸 수 있고요, 결과는 복사 버튼으로 바로 가져가시면 돼요.

    써보시고 불편한 점이나 추가했으면 하는 기능 있으면 알려주세요. 혼자 만드는 거라 느리긴 한데, 실제로 쓰는 분들 의견은 최대한 빨리 반영하려고 합니다.

    감사합니다 🙏

  • [파마비아] 손님이 0명일 때 뭘 만들어야 하나 — 마케팅 책 20권을 서비스에 적용했습니다

    📊 먼저 우리 숫자부터 직시했습니다

    마케팅 책을 읽기 전, 제일 먼저 한 일은 현재 상황을 정직하게 보는 거였어요. famavia의 숫자는 이랬습니다.

    • 가입자: 3명
    • 채널 연결: 1명
    • 실제 발행: 1명

    리드가 0인 단계예요. 이 상황에서 가격 전략이나 업셀을 고민하는 건 순서가 틀렸다는 걸 깨달았습니다. 지금 필요한 건 딱 하나, ‘사람을 데려오는 것’뿐이었어요.

    📚 호르모지 $100M 3부작과 자료 20종을 읽고 나서

    마케팅 서적들을 정리하면서 계속 나온 말이 있었어요. “리드 마그넷은 세 가지뿐이다 — 문제를 드러내기 / 샘플 / 한 단계 무료.” 그중에서도 진단형은 ‘기다릴수록 나빠지는 문제’에 특히 강하다고 했습니다.

    방치된 블로그가 정확히 그런 문제예요. 한 달, 두 달 안 쓰면 검색도 안 되고 방문자도 줄어들죠. 그래서 만든 게 첫 번째 장치였습니다.

    ✅ 만든 것 1: 무료 블로그 진단

    famavia.com/check 페이지를 만들었어요. 로그인 없이 블로그 주소만 넣으면 바로 확인할 수 있는 것들:

    • 마지막 발행일
    • 최근 30일/90일 발행 수
    • 평균 발행 간격
    • 제목 길이 평균

    여기에 더해서, 그 블로그의 기존 글을 읽고 같은 말투로 새 글 1편을 무료로 써드립니다. 광고 없이, 로그인 없이요.

    왜냐하면 ‘샘플’이 가장 강한 설득이거든요. 말로 설명하는 것보다 한 번 써보는 게 빠르니까요.

    🎁 만든 것 2: 친구 초대 크레딧

    초대 링크로 가입하면 친구가 바로 크레딧을 받고, 그 친구가 첫 글을 발행하면 초대한 사람도 크레딧을 받는 구조로 만들었습니다.

    여기서 중요한 건 ‘가입’이 아니라 ‘첫 발행’을 기준으로 뒀다는 점이에요. 가입만 하고 안 쓰는 계정으로 크레딧을 캐는 걸 막기 위해서요. 실제로 쓰는 사람만 보상받게요.

    📈 만든 것 3: 발행 기록 공개

    famavia.com/proof 페이지를 만들어서, famavia 계정이 famavia로 올린 글과 조회수를 그대로 공개했습니다. 좋은 것만 고르지 않았어요. 전부 다요.

    만든 사람이 안 쓰는 도구는 믿기 어렵잖아요. 그래서 우리가 직접 쓰는 모습을 보여주기로 했습니다. 실패한 글도, 조회수 낮은 글도 그대로요.

    🔤 만든 것 4: 랜딩 첫 문구 A/B 실험

    “헤드라인을 다 쓰면 광고비의 80%를 쓴 것”이라는 말이 책에 나왔어요. 그래서 감으로 고르지 않고, 실제 클릭 데이터로 고르기로 했습니다.

    여러 버전의 첫 문구를 번갈아 보여주고, 어떤 게 더 많이 클릭되는지 측정 중이에요. 아직 결과는 나오지 않았지만, 최소한 감이 아니라 숫자로 판단할 수 있게 됐습니다.

    ❌ 안 한 것도 기록해둡니다

    책에는 이런 것들도 나와 있었어요:

    • 가격 3안 제시
    • 조건부 보장
    • 업셀·다운셀 시퀀스

    다 좋은 방법이에요. 하지만 지금은 아니에요. 고객이 생긴 다음 일이거든요. 순서를 건너뛰면 없는 명단에 대고 이메일 시퀀스를 짜는 꼴이 됩니다.

    손님이 0명일 때 해야 할 일은 명확했어요. 일단 오게 만드는 것. 그게 전부였습니다.

    🧭 지금은 이 네 가지를 돌리는 중입니다

    무료 진단, 친구 초대, 발행 기록 공개, 랜딩 A/B. 이 네 가지가 실제로 사람을 데려오는지 확인하는 게 이번 달 목표예요.

    책은 방향을 알려줬지만, 결국 우리 숫자로 증명해야 하니까요. 다음 글에서는 이 네 가지 중 뭐가 먹혔고 뭐가 안 먹혔는지 솔직하게 공유하겠습니다.