양식 이름 검색으로 방문 늘리기, 템플릿 소개 페이지 만드는 법

계약서나 신청서 양식을 검색해서 들어오는 사람을 받는 소개 페이지를 만드는 법이에요. 주소, 서버에서 그리는 글, 사이트맵, 구조화 데이터, 확인 방법까지 순서대로 담았어요.

셀루모2026.10.24 · 13분 읽기
목차

홍보 글을 올리는 날에만 방문이 생기고, 멈추면 다시 조용해진 적이 있나요? 광고나 게시물은 쓰는 만큼만 사람을 데려와요. 검색은 한 번 만들어 두면 계속 사람을 데려올 수 있어요. 이 글은 "표준 근로계약서 양식" 같은 검색어로 들어오는 사람을 받는 소개 페이지를, 처음부터 끝까지 만드는 방법을 정리해요.

혹시 이런 고민 있으신가요?

  • 게시물을 올리면 방문이 늘었다가, 올리지 않으면 바로 0으로 돌아와요.
  • 서비스 화면은 있는데 검색에 걸리는 페이지가 첫 화면 하나뿐이에요.
  • 양식이나 템플릿을 여러 개 만들었는데, 검색하는 사람이 그걸 볼 길이 없어요.

이 글을 읽으면

  • 사람들이 실제로 검색할 만한 양식 이름을 골라 페이지 하나에 하나씩 대응시킬 수 있어요.
  • 검색 로봇이 읽을 수 있는 소개 페이지의 구성과 주소를 정할 수 있어요.
  • 만든 페이지가 검색 로봇에게 실제로 보이는지 명령어 몇 줄로 확인할 수 있어요.

1단계. 사람들이 검색하는 이름으로 페이지를 나누기

먼저 용어부터 짚을게요. 롱테일 검색이란, 검색하는 사람은 적지만 원하는 것이 아주 분명한 검색어를 말해요. "계약서"는 누구나 치지만 경쟁이 치열해요. "프리랜서 용역 계약서 양식"은 치는 사람이 적은 대신, 치는 사람은 바로 그 양식이 필요해요. 작은 서비스가 이길 수 있는 자리는 보통 이쪽이에요.

여기서 핵심은 페이지 하나가 검색어 하나에 대응해야 한다는 거예요. 양식 열 개를 한 페이지의 목록으로만 보여 주면, 검색 로봇에게는 "양식이 많은 페이지" 하나일 뿐이에요. 양식마다 자기 주소와 자기 제목이 있어야 "이 주소는 이 양식 이야기"라고 읽혀요.

저희는 서명을 붙일 수 있는 양식 서비스를 만들고 있고, 양식마다 소개 페이지를 따로 두기로 했어요. 처음 후보로 적어 둔 양식은 표준근로계약서, 차용증, 각서, 위임장, 개인정보 수집 이용 동의서, 사직서, 합의서, 확인서, 견적서, 임대차 계약서 열 가지예요. 다만 이 목록은 가설이에요. 검색량을 확인하지 않은 채 사람들이 많이 쓸 것 같다는 느낌으로 고른 것이라서, 순서를 정하기 전에 검색 광고 도구나 검색 등록 도구에서 실제 검색량을 보기로 했어요.

여러분은 이렇게 하면 돼요.

  1. 만들 수 있는 페이지 후보를 전부 적어요.
  2. 각 후보를 사람들이 칠 법한 검색어로 바꿔 써요. "우리 기능"이 아니라 "찾는 사람의 말"이어야 해요.
  3. 검색량을 확인할 수 있는 도구(네이버 검색광고의 키워드 도구, 구글 서치 콘솔의 검색어 보고서 등)로 숫자를 봐요.
  4. 숫자가 확인되지 않은 후보는 "미확인"이라고 적어 두고 뒤로 미뤄요.

TIP

처음부터 열 개를 다 만들려고 하지 마세요. 두세 개를 먼저 만들어 색인(검색 결과에 올라가기 위해 로봇이 페이지를 읽어 가는 일)이 되는지 확인하고, 되는 모양을 보고 늘리는 편이 안전해요.

2단계. 주소와 소개 화면을 사용 화면과 나누기

이 단계에서 많은 분이 걸려 넘어져요. 양식을 채우는 도구 화면과, 양식을 소개하는 화면은 목적이 달라요.

도구 화면은 PDF 뷰어처럼 브라우저에서만 그려지는 부분이 많아요. 검색 로봇은 서버가 보내 준 글을 먼저 읽어요. 그래서 도구 화면만 있으면 로봇이 읽을 글이 제목과 설명 한두 줄뿐이에요. 게다가 도구 화면 레이아웃은 보통 작업 공간이라 소개 글을 얹을 자리도 없어요.

저희는 처음에 이런 상태였어요.

점검 항목처음 상태문제
주소양식마다 무작위 긴 문자열(UUID)주소와 검색어가 닿지 않아요
목록 화면의 카드눌렀을 때 스크립트로 이동하는 버튼목록 페이지의 HTML 안에 양식으로 가는 링크가 0개예요
상세 화면의 글제목과 설명뿐, 본문은 브라우저에서만 그려지는 뷰어로봇이 읽을 소개 글이 없어요
사이트맵고정 페이지 몇 개만 있음양식 주소가 하나도 없어요

그래서 주소를 둘로 나눴어요.

/templates                 양식 목록/templates/<이름>           소개 화면 (서버에서 글을 그림, 색인 대상)/templates/<이름>/fill      채우기 도구 (지금 쓰던 화면)

검색어에서 소개 화면을 거쳐 채우기 도구로 가는 흐름소개 화면이 입구가 되고 채우기 도구는 그 뒤에 있어요

여기서 <이름>은 슬러그라고 부르는 것으로, 소문자 영어와 숫자와 하이픈으로 된 사람이 읽을 수 있는 주소 조각이에요. 예를 들어 freelance-service-contract처럼요. 이미 무작위 문자열 주소로 열고 있던 채우기 화면은, 슬러그가 생긴 양식이면 새 채우기 주소로 영구 이동(308)을 걸어 줬어요. 이렇게 해 두면 예전에 공유된 링크도 깨지지 않아요.

슬러그를 정할 때 지킨 규칙은 이래요.

  • 3자에서 80자, 소문자 영어와 숫자와 하이픈만 써요.
  • 무작위 문자열처럼 보이는 값은 거절해요. 사람이 읽을 수 없으면 슬러그의 의미가 없어요.
  • 이미 쓰는 값은 거절해요.
  • 한 번 정하면 바꾸지 못하게 막아요. 색인된 뒤에 주소가 바뀌면 쌓인 신뢰를 잃기 때문이에요. 꼭 바꿔야 하면 옛 주소에서 새 주소로 영구 이동을 걸어야 한다고 안내만 해 둬요.

참고

모든 양식이 소개 화면을 가져야 하는 건 아니에요. 저희는 공개이면서 유료 전용이 아닌 양식에만 소개 화면을 만들고, 그 밖의 주소는 404로 답해요. 로그인이 필요한 양식도 소개 화면은 열어 두고, 채우기 단계에서 로그인을 안내해요. 소개까지 막으면 검색에서 들어올 입구가 사라지기 때문이에요.

3단계. 양식마다 다른 글이 나오는 소개 화면 만들기

소개 화면의 목표는 하나예요. 서버가 보내는 HTML 안에, 이 양식이 무엇인지 설명하는 글이 이미 들어 있게 하는 거예요. 브라우저에서 자바스크립트가 돌고 나서야 보이는 글은 로봇에게 믿을 만한 글이 아니에요.

저희 소개 화면의 구성은 이래요.

  1. 양식 이름 (페이지 제목, h1 한 개)
  2. 운영자가 쓴 설명
  3. 첫 쪽 미리보기 그림
  4. "이 양식에 들어 있는 칸" 목록
  5. 쪽 수와 칸 수
  6. 채우기 버튼
  7. 법적 효력에 대한 안내
  8. 다른 양식으로 가는 링크

여기서 4번이 의외로 중요해요. 양식 소개를 열 개 만들면 문장이 서로 비슷해지기 쉬워요. 그러면 검색 로봇에게는 같은 페이지를 열 번 본 것처럼 보일 수 있어요. 칸 목록은 양식 파일에 이미 들어 있는 칸의 이름을 쪽 순서대로 읽어 만드니까, 양식마다 자연히 다른 글이 돼요. 사람이 따로 쓰는 문장이 아니라서 쓰는 수고도 없어요.

예를 들어 용역 계약서라면 "갑 상호", "을 성명", "계약 기간", "대금" 같은 칸 이름이 줄줄이 나오고, 차용증이라면 "원금", "이자율", "상환일"이 나와요. 이름만 봐도 이 양식이 무엇을 묻는지 읽히죠.

설명은 운영자가 양식마다 다르게 써요. 여기서 지킨 규칙은 하나예요. 설명이 비어 있는 양식은 검색에서 빼요(noindex). 얇은 페이지를 많이 늘리는 것보다, 충분한 글이 있는 페이지만 내보내는 편이 낫다고 판단했어요.

메타 정보(검색 결과에 보이는 제목과 설명)는 이렇게 정했어요.

제목      <양식 이름> | <서비스 이름>설명      운영자 설명의 앞 120자대표 주소  /templates/<이름>   (canonical)공유 그림  첫 쪽 미리보기

canonical은 "이 내용의 대표 주소는 여기예요"라고 검색 로봇에게 알려 주는 표시예요. 같은 내용이 여러 주소로 열려도 점수가 흩어지지 않게 해 줘요.

미리보기 그림은 서버가 PDF를 그려서 만들지 않았어요. 관리 화면에서 양식을 저장할 때, 이미 PDF를 보여 주고 있는 브라우저가 첫 쪽을 캔버스에 그린 뒤 JPEG로 뽑아 같이 올려요. 서버에 PDF 그리는 도구를 새로 들이지 않아도 되는 방법이에요. 올라온 파일은 JPEG 형식이 맞는지와 2MB를 넘지 않는지를 서버가 검사해요.

TIP

법적 효력 안내는 양식 소개에 꼭 넣으세요. 저희는 "법적 효력을 보장하지 않으며 법률 자문이 아니다"라는 뜻의 안내를 두고, "법적으로 유효한", "공증" 같은 낱말은 쓰지 않아요. 양식 사이트에서 가장 위험한 문장은 과장된 약속이에요.

4단계. 로봇이 따라갈 링크와 사이트맵 만들기

소개 화면을 만들어도 로봇이 거기에 도착하지 못하면 소용없어요. 로봇이 페이지를 찾는 길은 크게 둘이에요. 다른 페이지의 링크를 따라가거나, 사이트맵(사이트에 있는 페이지 주소를 모아 둔 목록 파일)을 읽거나요.

먼저 링크예요. 앞서 말한 것처럼 저희 목록의 카드는 눌렀을 때 스크립트로 이동하는 버튼이었어요. 사람에게는 똑같이 동작하지만, 로봇은 <a href>로 된 링크만 따라가요. 그래서 카드를 진짜 링크(a 태그)로 바꿨어요. 바꾼 뒤에는 목록 페이지의 HTML에 양식마다 링크가 하나씩 들어 있어야 해요.

다음은 사이트맵이에요. 양식이 늘어나는 사이트는 사이트맵도 같이 늘어나야 해서, 고정 목록 대신 요청이 올 때마다 양식 목록을 읽어 주소를 더하도록 했어요. 생각은 이래요.

TS
// 고정 페이지 + 양식 소개 페이지를 합쳐서 낸다const fixed = ["/", "/templates"]const templates = await fetchPublicTemplates() // 공개이고 유료 전용이 아닌 것만const dynamic = templates  .filter((t) => t.slug)            // 슬러그가 있는 것만  .map((t) => `/templates/${t.slug}`)return [...fixed, ...dynamic].map((path) => ({ url: BASE + path }))

여러분의 경우 바꿀 점은 두 가지예요. 어떤 양식을 사이트맵에 넣을지 규칙을 분명히 하고(저희는 공개이고 유료 전용이 아니며 슬러그가 있는 것), 사이트맵을 빌드할 때 굳이 굽지 말고 요청 때 읽게 할지 정하세요. 양식을 자주 추가한다면 요청 때 읽는 쪽이 편해요. 빌드 시점에 굽는 방식이면 양식을 추가할 때마다 사이트를 다시 배포해야 해요.

그리고 서비스의 첫 화면과 주요 입구에서 양식 목록으로 가는 링크가 진짜 링크로 걸려 있는지도 확인하세요. 첫 화면은 로봇이 가장 자주 오는 곳이라, 거기서 목록으로 길이 나 있어야 소개 페이지까지 이어져요.

5단계. 구조화 데이터를 달고 서버 응답으로 확인하기

구조화 데이터(JSON-LD)는 페이지가 무엇인지 기계가 읽기 좋은 형식으로 덧붙이는 정보예요. 저희는 두 종류만 썼어요.

  • BreadcrumbList: "홈 > 양식 > 용역 계약서"처럼 페이지의 위치를 알려 줘요.
  • SoftwareApplication: 이 페이지가 쓸 수 있는 도구에 대한 것임을 알려 줘요.

FAQ나 HowTo 같은 종류는 쓰지 않았어요. 양식마다 같은 질문과 답이 반복되는 구조화 데이터는 얻을 것이 적다고 판단했어요. 구글이 이 종류의 표시 범위를 줄였다는 이야기를 알고 있지만, 이 글을 쓰며 다시 확인하지는 않았어요. 그러니 쓰시기 전에 구글의 최신 문서를 직접 확인해 주세요.

참고

평점은 넣지 않았어요. 진짜 후기가 쌓이기 전에 별점을 구조화 데이터로 내보내면 근거 없는 숫자가 되기 때문이에요.

이제 확인할 차례예요. 만든 페이지가 로봇에게 실제로 어떻게 보이는지는, 브라우저 대신 curl로 서버 응답을 직접 보면 알 수 있어요. 자바스크립트가 돌기 전의 모습이거든요.

BASH
# 1. 목록에 양식 링크가 있는지curl -s https://example.com/templates | grep -o 'href="/templates/[^"]*"' # 2. 소개 페이지에 글이 이미 들어 있는지 (h1, 설명, canonical)curl -s https://example.com/templates/freelance-service-contract \  | grep -E '<h1|rel="canonical"|application/ld\+json' # 3. 사이트맵에 주소가 있는지curl -s https://example.com/sitemap.xml | grep freelance-service-contract # 4. 예전 주소가 새 주소로 넘어가는지 (308)curl -sI https://example.com/templates/<예전-무작위-주소> | head -3

네 줄 모두 결과가 나와야 통과예요. 하나라도 비면 그 단계로 돌아가요. 저희는 "자바스크립트를 실행하지 않아도 이름, 설명, 칸 목록, 미리보기 그림, 대표 주소, 구조화 데이터가 응답에 들어 있다"를 완료 기준으로 적어 뒀어요.

6단계. 등록하고, 오래 기다릴 각오를 하기

페이지를 만들었다고 바로 검색에 올라가지는 않아요. 마지막으로 해야 할 일은 사이트맵을 검색 등록 도구에 제출하는 거예요. 한국에서는 네이버 서치어드바이저와 구글 서치 콘솔 두 곳이에요. 이 일은 소유 확인 때문에 사람이 직접 해야 하는 경우가 많아요.

그리고 측정 기간을 정해 두세요. 저희는 양식을 열 개 이상 올리고 색인을 요청한 날부터 8주를 측정 기간으로 잡았어요. 그 안에 검색으로 들어오는 방문이 주 몇 번 이상이 되는지를 보고, 소개 화면을 거쳐 채우기를 열고 내려받기까지 간 비율을 이전 흐름과 나란히 보기로 했어요. 목표로 둔 수치는 있지만 근거가 있는 숫자는 아니에요. 신규 사이트의 얇은 페이지 열 개가 상위에 오른다는 보장은 저희에게도 없어요. 그래서 "페이지 만들기"와 "양식 채워 넣기"를 서로 다른 작업으로 나눴어요. 만들기까지는 코드 작업이고, 채우기는 양식 파일과 이용 허락을 확인해 주는 사람의 작업이에요.

TIP

이 방식은 효과가 날 때까지 시간이 걸려요. 8주 동안은 성과를 단정하지 말고, 매주 같은 요일에 검색 유입 숫자만 기록해 두세요. 숫자가 없으면 8주 뒤에 판단할 근거도 없어요.

양식을 올릴 때의 저작권도 따져 보세요. 공공기관의 표준 양식도 이용 조건이 서로 달라요. 저희는 양식마다 이용 허락의 근거를 사람이 확인하고, 소개 설명에 출처 기관과 양식 이름을 적어요. 특정 표시 의무가 있는 양식인지는 아직 확인하지 못한 부분이라, 양식을 올리기 전에 꼭 확인해야 할 항목으로 남겨 뒀어요.

자주 묻는 질문

Q1. 양식이 적어도 소개 페이지를 만들 가치가 있나요?

있어요. 다만 페이지 수보다 페이지마다 읽을 글이 있는지가 중요해요. 하나여도 설명과 미리보기와 칸 목록이 충실하다면 충분히 시작할 만해요. 오히려 비슷한 페이지 열 개보다 충실한 페이지 세 개가 낫다고 생각해요.

Q2. 소개 페이지와 도구 화면을 굳이 나눠야 하나요?

도구 화면이 브라우저에서만 그려진다면 나누는 편이 좋아요. 도구 화면에 글을 얹으면 작업 공간이 어수선해지고, 검색 로봇은 여전히 글을 못 읽을 수 있어요. 소개를 따로 두면 검색에서 온 사람이 도구에 가기 전에 "내가 찾던 게 맞다"를 확인할 수도 있어요.

Q3. 주소를 나중에 바꿔도 되나요?

되도록 바꾸지 않는 게 좋아요. 이미 색인된 주소를 바꾸면 쌓인 신뢰가 사라질 수 있어요. 바꿔야 한다면 옛 주소에서 새 주소로 영구 이동을 반드시 걸어야 해요. 그래서 슬러그는 처음 만들 때 신중하게, 그리고 한 번 정하면 바꾸지 못하게 막아 두는 걸 권해요.

정리

  • 검색하는 사람의 말로 페이지를 나누고, 페이지 하나에 검색어 하나를 대응시켜요.
  • 소개 화면과 채우기 도구는 주소로 나눠서, 소개는 서버에서 글이 그려지게 해요.
  • 양식마다 다른 글이 나오도록 양식 안의 칸 이름을 소개에 활용해요.
  • 링크는 진짜 링크로, 주소는 사이트맵에 넣고, 서버 응답을 curl로 직접 확인해요.
  • 등록하고 8주쯤 기다리며 숫자를 기록해요. 보장은 없다는 걸 잊지 마세요.

양식마다 소개 페이지를 만드는 일은 한 번 뼈대를 잡아 두면 다음 페이지부터 거의 공짜예요. 지금 가진 양식 중 하나만 골라, 오늘 검색어 하나로 바꿔 써 보는 것부터 시작해 보세요. 저희가 만든 서명 서비스는 이런 양식에 서명을 붙여 PDF로 내려받는 일을 돕고 있어요.

이어서 읽기 좋은 글