PageSourceSearch

https://bizspring.ai/kb/tcr

html bizspring.ai collected 2026-10-05 14:06:42 UTC 114,299 bytes, 796 lines download raw bytes

1<!DOCTYPE html>
2<html lang="ko">
3<head>
4<meta charset="utf-8">
5<meta name="viewport" content="width=device-width,initial-scale=1">
6<title>TCR 프레임워크 — T·C·R·O 4단계 16개 활동 | 비즈스프링 (BizSpring)</title>
7<meta name="description" content="고객 여정을 발견·전환·관계·최적화 4단계 16개 활동으로 나눠 마케팅 공백을 진단하는 비즈스프링 프레임워크입니다.">
8<link rel="preconnect" href="https://fonts.googleapis.com">
9<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/orioncactus/[email protected]/dist/web/variable/pretendardvariable-dynamic-subset.min.css">
11<link rel="icon" href="/favicon.ico?v=20260822" type="image/x-icon" sizes="any">
12<link rel="icon" href="/favicon.png?v=20260822" type="image/png" sizes="64x64" media="(prefers-color-scheme: light)">
13<link rel="icon" href="/favicon-dark.png?v=20260822" type="image/png" sizes="64x64" media="(prefers-color-scheme: dark)">
14<link rel="apple-touch-icon" href="/apple-touch-icon.png?v=20260822" sizes="180x180">
15<link rel="mask-icon" href="/safari-pinned-tab.svg?v=20260822" color="#39d98a">
16<link rel="preconnect" href="https://fonts.googleapis.com">
17<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
18<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;600;700&family=Noto+Serif+KR:wght@400;500;600;700&display=swap">
19<meta name="robots" content="max-image-preview:large">
20<link rel="canonical" href="https://bizspring.ai/kb/tcr">
21<link rel="alternate" hreflang="ko" href="https://bizspring.ai/kb/tcr">
22<link rel="alternate" hreflang="x-default" href="https://bizspring.ai/kb/tcr">
23<meta property="og:url" content="https://bizspring.ai/kb/tcr">
24<meta property="og:site_name" content="비즈스프링 (BizSpring)">
25<meta property="og:type" content="article">
26<meta property="og:title" content="TCR 프레임워크 — T·C·R·O 4단계 16개 활동 | 비즈스프링 (BizSpring)">
27<meta property="og:description" content="고객 여정을 발견·전환·관계·최적화 4단계 16개 활동으로 나눠 마케팅 공백을 진단하는 비즈스프링 프레임워크입니다.">
28<meta property="og:image" content="https://bizspring.ai/og-default.png?v=20260822">
29<meta property="og:image:width" content="1200">
30<meta property="og:image:height" content="630">
31<meta name="twitter:card" content="summary_large_image">
32<meta name="twitter:title" content="TCR 프레임워크 — T·C·R·O 4단계 16개 활동 | 비즈스프링 (BizSpring)">
33<meta name="twitter:description" content="고객 여정을 발견·전환·관계·최적화 4단계 16개 활동으로 나눠 마케팅 공백을 진단하는 비즈스프링 프레임워크입니다.">
34<meta name="twitter:image" content="https://bizspring.ai/og-default.png?v=20260822">
35<link rel="alternate" type="application/rss+xml" href="https://bizspring.ai/feed.xml">
36<style>
37:root{--bg:oklch(0.18 0.0033 17.5);--panel:oklch(0.225 0.0033 17.5);--line:oklch(1 0 0 / 12%);--fg:oklch(0.96 0.008 250);--muted:oklch(0.73 0.028 250);--brand:oklch(0.8 0.19 152);--accent:var(--brand);--wordmark-accent:oklch(0.8 0.19 152);--accent-2:#0f5c3d;--headerbg:color-mix(in oklch, var(--bg) 92%, transparent);--link:oklch(0.73 0.028 250);--quote-fg:var(--fg);--on-accent:oklch(0.19 0.045 258);--cov-bg:#0f5c3d;--cov-fg:#eafff4;--gap-bg:#4a1d1d;--gap-fg:#ffd9d9;--font-sans:'Noto Sans KR',-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Malgun Gothic',system-ui,sans-serif;--font-serif:'Noto Serif KR','Nanum Myeongjo',Georgia,'Apple SD Gothic Neo',serif;--font-logo:'Pretendard Variable',Pretendard,Roboto,'Helvetica Neue','Segoe UI','Apple SD Gothic Neo','Noto Sans KR',sans-serif}
38html.light{--bg:oklch(0.978 0.003 250);--panel:oklch(1 0 0);--line:oklch(0.892 0.014 255.508);--fg:oklch(0.129 0.042 264.695);--muted:oklch(0.554 0.046 257.417);--brand:oklch(0.443 0.107 158.5);--accent:var(--brand);--wordmark-accent:oklch(0.55 0.15 156);--accent-2:#d7f5e6;--headerbg:color-mix(in oklch, var(--bg) 92%, transparent);--link:var(--accent);--quote-fg:var(--fg);--on-accent:oklch(0.984 0.003 247.858);--cov-bg:#d7f5e6;--cov-fg:#0a3323;--gap-bg:#fde8e8;--gap-fg:#6b1616}
39html{font-size:16px}
40html[data-font="sm"]{font-size:15px}
41html[data-font="lg"]{font-size:17.5px}
42html[data-font="xl"]{font-size:19px}
43html,body{min-height:100%}
44body{display:flex;flex-direction:column}
45*{box-sizing:border-box}
46body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font-sans);line-height:1.75;font-size:1rem}
47html[data-font-family="serif"] body{font-family:var(--font-serif)}
48a{color:var(--accent);text-decoration:none}
49a:hover{text-decoration:underline}
50/*
51 * 글 속의 링크에는 밑줄을 항상 둔다.
52 *
53 * 색만으로 구별하면 링크 색과 본문 색 사이가 3:1 은 돼야 하는데(WCAG 1.4.1),
54 * 본문 글자가 거의 검정(#111826)이라 흰 배경에서 4.5:1 을 지키면서 본문과 3:1 까지
55 * 벌리는 색은 산술적으로 거의 없다. 실측했을 때 라이트 테마 본문 링크는 2.70 이었다.
56 * 밑줄이라는 색 아닌 단서를 붙이면 그 요구 자체가 사라지고, 무엇보다 눈에 띈다.
57 *
58 * 목록·카드·칩·사이드바처럼 «생김새로 이미 누를 수 있어 보이는» 곳에는 붙이지 않는다.
59 */
60main p:not(.chips) a,main li a,main td a,main th a,.oneliner a,footer .copy a{
61  text-decoration:underline;
62  text-decoration-thickness:1px;
63  text-underline-offset:.18em;
64  text-decoration-color:color-mix(in srgb,currentColor 45%,transparent)}
65main p:not(.chips) a:hover,main li a:hover,main td a:hover,main th a:hover,.oneliner a:hover,footer .copy a:hover{
66  text-decoration-thickness:2px;
67  text-decoration-color:currentColor}
68header.top{border-bottom:1px solid var(--line);padding:0;position:sticky;top:0;background:var(--headerbg);backdrop-filter:blur(8px);z-index:5}
69/* 폭과 배치는 대화 화면(components/site-header.tsx)과 같은 값이다 — 1280px 가운데 정렬, 높이 56px. */
70header.top .bar{max-width:1280px;margin:0 auto;height:56px;padding:0 16px;display:flex;gap:12px;align-items:center}
71header.top .brand{font-weight:400;color:var(--fg);font-size:26.4px;line-height:1;letter-spacing:-.025em;font-family:var(--font-logo);display:flex;align-items:center;white-space:nowrap;flex-shrink:0}
72/* 심볼은 테마별로 두 벌. 이 CSS 는 기본이 어두우므로 밝은 바탕 심볼이 기본이다. */
73/* 로고 글자는 한 덩어리다. flex gap 이 «BizSpring» 과 «.ai» 사이에도 끼어들어
74   "BizSpring .ai" 로 보이던 것을 한 칸으로 감싸 막는다. */
75header.top .brand .word{display:inline}
76header.top .brand .dot{color:var(--wordmark-accent)}
77/* 1단 메뉴 nav 는 .bar 안에만 있다. 셀렉터를 좁히지 않으면 2단 줄의 nav 도
78   같이 잡혀 배치가 어긋난다. */
79header.top .bar nav{flex:1;display:flex;justify-content:center;gap:2px;flex-wrap:nowrap;min-width:0;overflow-x:auto;scrollbar-width:none}
80header.top .bar nav::-webkit-scrollbar{display:none}
81header.top .bar nav a{color:var(--muted);font-size:.875rem;padding:6px 7px;border-radius:8px;white-space:nowrap;flex-shrink:0}
82header.top .bar nav a:hover{color:var(--fg);text-decoration:none}
83header.top .bar nav a[aria-current="page"]{color:var(--fg);font-weight:600}
84/* 본 기능(AI 상담)은 자료 메뉴들과 같은 무게로 두지 않는다. React 헤더와 같은 모양. */
85/* 본사 사이트(bizspring.co.kr)와 이 사이트를 오가는 전환 스위치. 모양은 본사
86   것을 그대로 따랐고, 대화 화면의 SiteSwitch 와도 같아야 한다 — 한쪽을 바꾸면
87   다른 쪽도 바꾼다. 여기서는 늘 켜짐이고, 누르면 꺼지며 본사 사이트로 간다. */
88header.top .siteswitch{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;padding:4px 10px 4px 6px;border:1px solid color-mix(in srgb,var(--accent) 50%,transparent);background:color-mix(in srgb,var(--accent) 10%,var(--bg));border-radius:999px;transition:border-color .15s,background-color .15s}
89header.top .siteswitch:hover{border-color:var(--line);background:var(--panel);text-decoration:none}
90header.top .siteswitch .sw{position:relative;display:inline-flex;align-items:center;width:28px;height:16px;flex-shrink:0;border-radius:999px;background:color-mix(in srgb,var(--accent) 70%,transparent);transition:background-color .15s}
91header.top .siteswitch:hover .sw{background:color-mix(in srgb,var(--fg) 20%,transparent)}
92header.top .siteswitch .knob{display:inline-block;width:12px;height:12px;border-radius:999px;background:var(--on-accent);box-shadow:0 1px 2px rgba(0,0,0,.25);transform:translateX(13px);transition:transform .15s,background-color .15s}
93header.top .siteswitch:hover .knob{transform:translateX(2px);background:var(--bg)}
94/* 이 폭 아래에서는 "AI 모드"를 "AI"로 줄인다 — 지우지는 않는다. 대화 화면
95   (site-switch.tsx)과 같은 기준(nav.ts 의 SITE_SWITCH_LABEL_MIN_WIDTH)이다.
96   온전한 말을 늘 켜 두면 좁은 화면에서 로고·스위치·도구·햄버거가 한 줄에
97   다 안 들어가 상단 줄이 꺾인다(실제로 그랬다). 그렇다고 아예 없애면
98   스위치가 무엇을 켠 상태인지 안 읽힌다. */
99header.top .siteswitch .lbl{font-size:11px;font-weight:500;line-height:1;color:var(--accent);white-space:nowrap;transition:color .15s}
100header.top .siteswitch .lbl-full{display:none}
101@media(min-width:400px){header.top .siteswitch .lbl-short{display:none}header.top .siteswitch .lbl-full{display:inline}}
102header.top .siteswitch:hover .lbl{color:var(--muted)}
103/* AI 상담은 나머지 메뉴와 같은 무게로 두지 않는다. */
104header.top .bar nav a.primary{border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);background:color-mix(in srgb,var(--accent) 15%,var(--bg));color:var(--accent);border-radius:999px;font-weight:600;margin-right:6px}
105header.top .bar nav a.primary:hover{background:var(--accent);color:var(--on-accent)}
106header.top .bar nav a.primary[aria-current="page"]{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
107header.top .bar nav .navsep{padding:0 3px;color:var(--line);font-size:.875rem;user-select:none;flex-shrink:0}
108/* 2단 메뉴 줄 — 상단 바 바로 아래. 대화 화면의 SubNavBar(site-header.tsx)와
109   같은 높이·테두리·여백을 쓴다. 갈래마다 줄 모양이 다르면 단이 하나 더 있는
110   게 아니라 화면이 통째로 바뀐 것처럼 보인다. */
111header.top .subbar{border-top:1px solid var(--line)}
112header.top .subbar .inner{max-width:1280px;margin:0 auto;padding:8px 16px;display:flex;gap:12px;align-items:center;justify-content:safe center;flex:none;overflow-x:auto;scrollbar-width:none}
113header.top .subbar .inner::-webkit-scrollbar{display:none}
114/* 2단 nav 는 가운데 묶음 안에서 메뉴 링크만 담당한다. */
115header.top .subbar nav{display:flex;gap:4px;align-items:center;flex:none}
116header.top .subbar a{color:var(--muted);font-size:.8125rem;padding:4px 10px;border-radius:8px;white-space:nowrap;flex-shrink:0}
117header.top .subbar a:hover{color:var(--fg);text-decoration:none}
118header.top .subbar a[aria-current="page"]{background:var(--panel);color:var(--fg);font-weight:600}
119/* 문의하기 버튼은 글자·테마 메뉴와 한 묶음에서 살짝 떨어져 있어야 한다. */
120.tools{display:flex;gap:6px;align-items:center;margin-left:auto}
121.tools #ui-contact{margin-left:8px}
122/* 좁은 화면에서 1단·2단 메뉴를 대신하는 햄버거 메뉴. 대화 화면(site-header.tsx)의
123   모바일 드롭다운과 같은 구성 — 1단(AI 상담·시각화 탐색·지식센터) 다음에 2단
124   (지식센터 안의 메뉴)을 잇달아 보여준다. 지식센터 화면은 늘 2단이 있으므로
125   그 화면 몫도 함께 넣는다. 넓은 화면에서는 지금까지처럼 가로로 늘어선 메뉴를
126   그대로 쓰고, 이 장치는 숨어 있는다. */
127.mnav-cb{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
128.mnav-toggle{display:none}
129.mnav{display:none}
130/* 문의하기 — 헤더에 있든 바닥글에 있든 같은 버튼이다. 색·굵기·글자색은 여기
131   한 줄이 들고, 크기와 둥글기만 자리에 따라 다르다. 대화 화면의
132   CONTACT_BUTTON(components/site-header.tsx)과 같은 값을 써야 두 화면이
133   어긋나지 않는다 — 한쪽을 고치면 다른 쪽도 고친다.
134   바닥글 것(#ui-contact-2)은 .chip 을 함께 쓰는데, .chip 은 목록 거르개
135   버튼들도 쓰는 공용 클래스다. 그래서 .chip 을 건드리지 않고 id 로만 덮는다. */
136.tools>button,#ui-contact-2{background:var(--accent);border:0;color:var(--on-accent);font-weight:600;cursor:pointer;font-family:inherit;transition:opacity .15s}
137.tools>button:hover,#ui-contact-2:hover{opacity:.9;color:var(--on-accent)}
138/* 높이 36px 은 옆의 글자·테마 동그란 버튼과 같은 값이라 한 줄에서 눈높이가 맞는다. */
139.tools>button{display:inline-flex;align-items:center;height:36px;padding:0 12px;border-radius:8px;font-size:.75rem;white-space:nowrap}
140/* 아이콘 드롭다운 — 대화 화면 IconMenu 와 같은 모양 */
141.imenu{position:relative}
142.imenu-trigger{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--muted);cursor:pointer;padding:0;font-family:inherit;transition:color .15s,border-color .15s}
143.imenu-trigger:hover{color:var(--fg);border-color:color-mix(in oklab, var(--fg) 30%, transparent)}
144/* 문의 모달 — 대화 화면의 것과 같은 모양. 지식센터에서도 페이지를 떠나지 않는다. */
145.cdlg{position:fixed;inset:0;z-index:80;display:none;align-items:flex-end;justify-content:center;background:rgba(0,0,0,.45);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
146.cdlg[data-open="1"]{display:flex}
147.cdlg-box{width:100%;max-height:92dvh;overflow-y:auto;background:var(--bg);border:1px solid var(--line);border-radius:16px 16px 0 0;padding:20px}
148@media(min-width:640px){.cdlg{align-items:center;padding:16px}.cdlg-box{max-width:520px;border-radius:16px}}
149.cdlg h2{margin:0;font-size:1.125rem;color:var(--fg)}
150.cdlg .sub{margin:6px 0 16px;font-size:.8125rem;color:var(--muted)}
151.cdlg label{display:block;margin-bottom:10px}
152.cdlg input,.cdlg textarea{width:100%;box-sizing:border-box;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:10px 12px;color:var(--fg);font-size:.875rem;font-family:inherit}
153.cdlg input::placeholder,.cdlg textarea::placeholder{color:var(--muted);font-style:italic;opacity:.75}
154.cdlg input:focus,.cdlg textarea:focus{outline:none;border-color:var(--accent)}
155.cdlg .row{display:grid;gap:10px}
156@media(min-width:640px){.cdlg .row{grid-template-columns:1fr 1fr}}
157.cdlg .send{width:100%;background:var(--accent);color:var(--on-accent);border:0;border-radius:12px;padding:12px;font-size:.875rem;font-weight:600;font-family:inherit;cursor:pointer}
158.cdlg .send[disabled]{opacity:.5;cursor:default}
159.cdlg .note{margin:10px 0 0;text-align:center;font-size:.6875rem;color:var(--muted)}
160.cdlg .err{margin:0 0 8px;font-size:.8125rem;color:var(--gap-fg);background:var(--gap-bg);border-radius:8px;padding:8px 10px}
161.linkish{background:none;border:0;padding:0;color:inherit;font:inherit;text-decoration:underline;text-underline-offset:2px;cursor:pointer}
162.linkish:hover{color:var(--fg)}
163@media(min-width:640px){.pdlg-box{max-width:720px}}
164.pdlg-box h3{margin:18px 0 6px;font-size:.875rem;color:var(--fg)}
165.pdlg-box p,.pdlg-box li{font-size:.8125rem;line-height:1.7;color:var(--muted)}
166.pdlg-box ul{margin:6px 0;padding-left:18px}
167.pdlg-box strong{color:var(--fg)}
168.cdlg-x{float:right;background:none;border:1px solid var(--line);color:var(--muted);border-radius:8px;padding:2px 8px;font-size:.875rem;cursor:pointer;font-family:inherit}
169.imenu-list{position:absolute;right:0;top:100%;margin-top:6px;min-width:144px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:4px 0;box-shadow:0 8px 24px rgba(0,0,0,.28);z-index:50;overflow:hidden}
170.imenu-list[hidden]{display:none}
171.imenu-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px;background:none;border:0;color:var(--muted);font-size:.875rem;font-family:inherit;text-align:left;cursor:pointer}
172.imenu-heading{padding:8px 12px 4px;font-size:.6875rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
173.imenu-sep{height:1px;background:var(--line);margin:4px 0}
174.imenu-item:hover{color:var(--fg);background:color-mix(in oklab, var(--fg) 8%, transparent)}
175.imenu-item[aria-checked="true"]{color:var(--accent);font-weight:600;background:color-mix(in oklab, var(--accent) 12%, transparent)}
176.imenu-ico{display:inline-flex;width:16px;height:16px;align-items:center;justify-content:center;flex:0 0 16px}
177@media(max-width:768px){
178  /* 가로로 늘어놓고 구르게 하던 1단·2단 메뉴를 숨기고 햄버거로 바꾼다. 폭
179     기준은 nav.ts 의 HEADER_MOBILE_MAX_WIDTH 하나로 대화 화면(Tailwind md)과
180     맞춘다 — 지난 버전은 이 값을 900px 로 따로 넣어 두 화면이 접히는 지점이
181     서로 달랐다. */
182  header.top .bar nav{display:none}
183  header.top .subbar{display:none}
184  /* nav 를 숨겨도 브랜드·사이트 전환·글자·테마·문의하기·햄버거가 한 줄에
185     다 들어가지는 않는다(393px 실측: 82px 넘침 — 햄버거가 화면 밖으로 밀려
186     아예 안 보였다). 글자 버튼인 "문의하기"는 아래 모바일 메뉴 안에도
187     넣어 두었으니 상단 줄에서는 뺀다. 그래도 못 들어가는 화면이 있을 수
188     있어 줄바꿈은 안전장치로 열어 둔다. */
189  header.top .bar{flex-wrap:wrap;height:auto;padding:10px 16px;row-gap:8px}
190  .tools #ui-contact{display:none}
191  /* 시인성: 옅은 색 글자 하나로는 눈에 잘 안 띈다는 지적이 있어, 테두리·배경을
192     또렷이 주고 글자도 굵게 키운다. */
193  .mnav-toggle{
194    display:inline-flex;align-items:center;justify-content:center;
195    width:38px;height:38px;margin-left:6px;flex-shrink:0;
196    border:1.5px solid var(--line);border-radius:10px;background:var(--panel);
197    color:var(--fg);font-size:21px;font-weight:700;line-height:1;cursor:pointer;
198  }
199  .mnav-toggle:hover{border-color:var(--accent);color:var(--accent)}
200  .mnav-cb:checked~.bar .mnav-toggle{border-color:var(--accent);color:var(--accent)}
201  .mnav-cb:focus-visible~.bar .mnav-toggle{outline:2px solid var(--accent);outline-offset:2px}
202  .mnav-cb:checked~.mnav{display:block}
203  .mnav{border-top:1px solid var(--line);background:var(--panel);padding:12px 16px 16px}
204  .mnav-grid{display:grid;grid-template-columns:1fr 1fr;gap:4px}
205  .mnav-sub{margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
206  .mnav a{display:block;padding:9px 10px;border-radius:8px;color:var(--muted);font-size:.875rem}
207  .mnav a:hover{color:var(--fg);text-decoration:none}
208  .mnav a[aria-current="page"]{background:var(--bg);color:var(--fg);font-weight:600}
209  .mnav-search{margin-top:12px}
210  .mnav-search input{flex:1;width:auto}
211  /* 상단 줄에서 뺀 문의하기를 여기로 옮긴다. 색·굵기는 .tools>button 과 같다. */
212  .mnav-contact{display:block;width:100%;margin-top:10px;background:var(--accent);border:0;border-radius:10px;color:var(--on-accent);font-weight:600;font-size:.875rem;font-family:inherit;padding:11px;cursor:pointer;text-align:center}
213  .mnav-contact:hover{opacity:.9}
214}
215.chip{display:inline-block;border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:999px;padding:5px 11px;font-size:.8125rem;cursor:pointer;font-family:inherit}
216.chip:hover{color:var(--fg)}
217.chip[aria-pressed="true"]{border-color:var(--accent);color:var(--accent);font-weight:600}
218.wrap{display:grid;grid-template-columns:260px minmax(0,1fr) 220px;gap:32px;max-width:1400px;margin:0 auto;padding:28px 20px 80px}
219aside{font-size:.875rem}
220/* 왼쪽 트리(.nav-tree)를 접었다 펼치는 장치. 처음에는 <details> 로 감싸고
221   닫힌 상태를 CSS !important 로 열린 것처럼 보이게 강제했는데, 실제 브라우저는
222   닫힌 <details> 의 내용을 author CSS 로 되살릴 수 없어 — display 를 아무리
223   덮어써도 렌더링 자체를 건너뛴다 — 데스크톱에서 트리 전체가 빈 칸으로
224   사라지는 회귀가 났다(2026-09-10 발견).
225   체크박스로 바꾼다. 이건 그냥 display:none/block 전환이라 브라우저 내부
226   동작과 다툴 일이 없다. 체크박스 자신은 화면에서 보이지 않되(시각적으로만
227   숨김) 키보드 tab·스페이스로는 여전히 작동해야 하므로 display:none 대신
228   화면 밖으로 치우는 방식을 쓴다. 넓은 화면에서는 지금까지처럼 토글줄이
229   안 보이고 트리는 항상 펼쳐 보인다 — 접었다 펼치는 동작은 1100px 이하에서만
230   켠다(아래 미디어쿼리). */
231.nav-tree-cb{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
232.nav-tree-toggle{display:none}
233aside h3{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:20px 0 8px}
234aside ul{list-style:none;padding:0;margin:0}
235/* 항목(li) 사이는 넓게, 한 항목 안에서 줄바꿈된 줄 사이는 좁게 — 제목이 길어 두 줄로
236   꺾여도 한 덩어리로 읽히고, 옆 항목과는 뚜렷이 떨어져 보인다. */
237aside li{margin:9px 0;line-height:1.3}
238aside a{color:var(--link)}
239aside ul.tree,aside ul.tree ul{list-style:none;padding-left:0;margin:0}
240aside ul.tree ul{padding-left:12px;border-left:1px solid var(--line);margin:4px 0 8px 4px}
241aside details>summary{cursor:pointer;padding:4px 0;color:var(--link);list-style:none;line-height:1.3}
242aside details>summary::-webkit-details-marker{display:none}
243aside details>summary::before{content:"\25b8";display:inline-block;margin-right:6px;color:var(--muted);transition:transform .15s}
244aside details[open]>summary::before{transform:rotate(90deg)}
245aside summary b{color:var(--muted);font-weight:400;font-size:.75rem}
246.ext::after{content:"\2197";margin-left:4px;font-size:.9em}
247.empty{border:1px dashed var(--line);border-radius:12px;padding:28px;color:var(--muted);text-align:center}
248main{min-width:0}
249main h1{font-size:2rem;line-height:1.3;margin:0 0 8px}
250main h2{font-size:1.375rem;
250margin:36px 0 10px;padding-top:8px;border-top:1px solid var(--line)}
251main h3{font-size:1.0625rem;margin:22px 0 6px}
252/* 본문 글자를 글자크기 토글의 "작게"-"보통" 중간 정도로 한 단계만 낮춘다. */
253main p,main li,main blockquote{font-size:.96875rem}
254.oneliner{font-size:1.125rem;color:var(--quote-fg);background:var(--panel);border-left:3px solid var(--accent);padding:14px 16px;border-radius:0 8px 8px 0;margin:16px 0}
255.summary{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 18px;margin:16px 0}
256.summary h2{border:0;margin:0 0 6px;font-size:.875rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
257.meta{color:var(--muted);font-size:.8125rem}
258.chips a{display:inline-block;border:1px solid var(--line);background:var(--panel);border-radius:999px;padding:4px 12px;margin:3px 4px 3px 0;font-size:.8125rem;color:var(--link)}
259.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
260.card{border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:14px 16px}
261.card b{display:block;margin-bottom:4px}
262.card p{margin:0;color:var(--muted);font-size:.875rem}
263table{border-collapse:collapse;width:100%;min-width:32rem;font-size:.875rem;margin:0}
264th,td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}
265th{background:var(--panel);color:var(--muted);font-weight:600;white-space:nowrap}
266/* 넓은 표는 스스로 가로 스크롤한다. 본문이 옆으로 밀리면 읽는 자리를 잃는다. */
267.tablewrap{overflow-x:auto;margin:14px 0;border-radius:8px}
268tbody tr:nth-child(even) td{background:color-mix(in srgb, var(--panel) 45%, transparent)}
269
270/* 다이어그램. 색은 currentColor 로 받아 테마를 따라간다 — 라이트/다크에
271   각각 색을 박아두면 한쪽에서 반드시 안 보인다. */
272.svgfig{margin:16px 0;padding:16px;border:1px solid var(--line);border-radius:10px;background:var(--panel);overflow-x:auto}
273.svgfig svg{display:block;width:100%;height:auto;color:var(--fg)}
274.svgfig .dg-muted{color:var(--muted)}
275.svgfig .dg-accent{color:var(--accent)}
276pre{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px;overflow-x:auto;margin:14px 0}
277pre code{background:none;padding:0;font-size:.8125rem;line-height:1.6}
278.imgfig{margin:16px 0}
279.imgfig img{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:10px;background:var(--panel)}
280.imgfig figcaption{margin-top:6px;font-size:.8125rem;color:var(--muted)}
281/* 실제 화면 — 솔루션 문서 하단. 카드가 좁아지면 두 줄, 더 좁아지면 한 줄로 접힌다. */
282.shots{display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:12px;margin:14px 0}
283.shot{display:flex;flex-direction:column;gap:4px;border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--panel);text-decoration:none;color:inherit}
284.shot:hover{border-color:var(--accent)}
285.shot img{display:block;width:100%;height:auto;aspect-ratio:16/10;object-fit:cover;object-position:top;border-radius:6px;background:var(--bg)}
286.shot-t{font-size:.8125rem;font-weight:600}
287.shot-c{font-size:.75rem;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
288/* 화면 문서 자신의 대표 이미지 — 위 .shot 은 다른 문서를 가리키는 작은 카드고, 이건 그 문서 본문 상단의 원본 크기 이미지다. */
289.doc-shot{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:10px;margin:14px 0;background:var(--panel)}
290.cov{background:var(--cov-bg);color:var(--cov-fg)}
291.gap{background:var(--gap-bg);color:var(--gap-fg)}
292.toc{position:sticky;top:80px;font-size:.8125rem}
293.toc a{display:block;color:var(--muted);padding:3px 0}
294footer{border-top:1px solid var(--line);padding:20px;color:var(--muted);font-size:.8125rem;margin-top:auto}
295footer .copy{max-width:1400px;margin:0 auto;text-align:center}
296.wrap{flex:1}
297/* 2단 줄 안의 검색창. 1단에서 떼어 내려왔으므로 오른쪽으로 밀리면 안 된다. */
298form.search{display:flex;gap:8px;flex-shrink:1;min-width:0}
299form.search input{background:var(--panel);border:1px solid var(--line);color:var(--fg);border-radius:8px;padding:7px 12px;width:150px;min-width:0}
300form.search button{background:var(--accent);color:var(--on-accent);border:0;border-radius:8px;padding:7px 14px;font-weight:700;cursor:pointer}
301code{background:var(--panel);padding:1px 5px;border-radius:4px;font-size:.9em}
302/* 3단 그리드가 1단으로 접히는 폭. 소스 순서는 «트리 → 본문 → 목차» 그대로다
303   (데스크톱은 그리드 배치라 순서가 상관없었다) — 그런데 한 칸으로 쌓이면
304   소스 순서가 곧 화면 순서가 되어, 트리(전체 문서 목록)를 다 지나야 본문이
305   나오고 목차는 본문을 다 읽은 뒤에야 나왔다. 아이폰 17e(390px)보다 좁아지면
306   더 두드러진다.
307   트리는 위에서 체크박스로 접어 두어 한 줄로 줄이고, 목차는 order 로
308   본문 앞으로 옮긴다 — 목차는 "읽으면서 다른 절로 건너뛰는" 용도라 본문보다
309   먼저 있어야 쓸모가 있다. */
310@media(max-width:1100px){
311  .wrap{grid-template-columns:1fr}
312  aside,.toc{position:static}
313  .toc{order:1}
314  main{order:2}
315  .nav-tree-toggle{display:block;cursor:pointer;padding:10px 0;font-size:.8125rem;font-weight:600;color:var(--fg);border-bottom:1px solid var(--line);margin-bottom:8px}
316  .nav-tree-toggle::before{content:"\25b8";display:inline-block;margin-right:6px;color:var(--muted);transition:transform .15s}
317  .nav-tree-cb:checked+.nav-tree-toggle::before{transform:rotate(90deg)}
318  .nav-tree-cb:focus-visible+.nav-tree-toggle{outline:2px solid var(--accent);outline-offset:2px}
319  .nav-tree-body{display:none}
320  .nav-tree-cb:checked~.nav-tree-body{display:block}
321}
322</style>
323<script type="application/ld+json">{"@context":"https://schema.org","@type":"TechArticle","name":"TCR 프레임워크 — T·C·R·O 4단계 16개 활동","headline":"TCR 프레임워크 — T·C·R·O 4단계 16개 활동","description":"고객 여정을 발견·전환·관계·최적화 4단계 16개 활동으로 나눠 마케팅 공백을 진단하는 비즈스프링 프레임워크입니다.","url":"https://bizspring.ai/kb/tcr","inLanguage":"ko","dateModified":"2026-09-03T08:03:21.092+00:00","keywords":"TCR, 프레임워크, 진단","publisher":{"@type":"Organization","@id":"https://bizspring.ai/#organization","name":"비즈스프링 (BizSpring)","url":"https://bizspring.ai"},"speakable":{"@type":"SpeakableSpecification","cssSelector":[".oneliner",".summary"]}}</script>
vendor: 1 bytes, line 323
323
324<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"지식센터","item":"https://bizspring.ai/kb"},{"@type":"ListItem","position":2,"name":"TCR 프레임워크 — T·C·R·O 4단계 16개 활동","item":"https://bizspring.ai/kb/tcr"}]}</script>
vendor: 1 bytes, line 324
324
325<script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"TCR은 무엇의 약자인가요?","acceptedAnswer":{"@type":"Answer","text":"Traffic(발견), Conversion(전환), Relationship(관계), Optimization(최적화·확장)입니다."}},{"@type":"Question","name":"활동은 몇 개인가요?","acceptedAnswer":{"@type":"Answer","text":"4단계 × 4개, 총 16개 활동입니다."}}]}</script>
vendor: 1 bytes, line 325
325
326<script defer src="/~flock.js" data-proxy-url="/~api/analytics"></script>
326</head>
327<body>
328<script>(function(){try{
329var d=document.documentElement;
330var dark=(function(){
331var m=localStorage.getItem('bizspring-theme')||'auto';
332if(m==='light') return false;
333if(m==='dark') return true;
334if(m==='system') return !(window.matchMedia&&window.matchMedia('(prefers-color-scheme: light)').matches);
335var n=new Date(),tz=-n.getTimezoneOffset()/60,lon=tz*15,lat=37.5,rad=Math.PI/180;
336var doy=Math.floor((Date.UTC(n.getFullYear(),n.getMonth(),n.getDate())-Date.UTC(n.getFullYear(),0,0))/864e5);
337var g=2*Math.PI/365*(doy-1);
338var eq=229.18*(75e-6+.001868*Math.cos(g)-.032077*Math.sin(g)-.014615*Math.cos(2*g)-.040849*Math.sin(2*g));
339var de=.006918-.399912*Math.cos(g)+.070257*Math.sin(g)-.006758*Math.cos(2*g)+9.07e-4*Math.sin(2*g)-.002697*Math.cos(3*g)+.00148*Math.sin(3*g);
340var la=lat*rad,ch=Math.cos(90.833*rad)/(Math.cos(la)*Math.cos(de))-Math.tan(la)*Math.tan(de);
341if(ch>1) return true;
342if(ch<-1) return false;
343var ha=Math.acos(ch)/rad;
344var sr=((720-4*(lon+ha)-eq)/60+tz+24)%24, ss=((720-4*(lon-ha)-eq)/60+tz+24)%24;
345var h=n.getHours()+n.getMinutes()/60;
346return !(h>=sr&&h<ss);
347})();
348d.classList.toggle('light',!dark);
349d.style.colorScheme=dark?'dark':'light';
350var f=localStorage.getItem('bsw-font');
351d.setAttribute('data-font',(f==='sm'||f==='lg'||f==='xl')?f:'md');
352var ff=localStorage.getItem('bsw-font-family');
353d.setAttribute('data-font-family',ff==='serif'?'serif':'sans');
354}catch(e){}})();</script>
354
355<header class="top">
356<input type="checkbox" class="mnav-cb" id="mnav-cb">
357<div class="bar">
358  <a class="brand" href="/"><span class="word">BizSpring<span class="dot">.ai</span></span></a>
359  <a class="siteswitch" id="ui-siteswitch" href="https://www.bizspring.co.kr/" title="AI 모드 켜짐 — 끄면 비즈스프링 홈(bizspring.co.kr)으로 이동합니다"><span class="sw" aria-hidden="true"><span class="knob"></span></span><span class="lbl lbl-short" aria-hidden="true">AI</span><span class="lbl lbl-full">AI 모드</span></a>
360  <nav aria-label="주 메뉴">
361    <a href="/">AI 상담</a><span class="navsep" aria-hidden="true">|</span>
362    <a href="/visualize">시각화 탐색</a>
363    <a href="/kb" aria-current="page">지식센터</a>
364  </nav>
365  <div class="tools">
366    <div class="imenu" id="ui-font" data-label="글자"><button type="button" class="imenu-trigger" data-menu-trigger aria-haspopup="menu" aria-expanded="false" aria-label="글자" title="글자"><span style="font-size:13px;line-height:1;font-weight:600">가</span></button><div class="imenu-list" data-menu-list role="menu" aria-label="글자" hidden><div class="imenu-heading">글자 크기</div><button type="button" class="imenu-item" role="menuitemradio" aria-checked="false" data-group="size" data-value="sm" data-label="작게"><span class="imenu-ico" data-menu-icon><span style="font-size:11px;line-height:1;font-weight:600">가</span></span>작게</button><button type="button" class="imenu-item" role="menuitemradio" aria-checked="false" data-group="size" data-value="md" data-label="보통"><span class="imenu-ico" data-menu-icon><span style="font-size:13px;line-height:1;font-weight:600">가</span></span>보통</button><button type="button" class="imenu-item" role="menuitemradio" aria-checked="false" data-group="size" data-value="lg" data-label="크게"><span class="imenu-ico" data-menu-icon><span style="font-size:15px;line-height:1;font-weight:600">가</span></span>크게</button><button type="button" class="imenu-item" role="menuitemradio" aria-checked="false" data-group="size" data-value="xl" data-label="아주 크게"><span class="imenu-ico" data-menu-icon><span style="font-size:17px;line-height:1;font-weight:600">가</span></span>아주 크게</button><div class="imenu-sep"></div><div class="imenu-heading">글자 모양</div><button type="button" class="imenu-item" role="menuitemradio" aria-checked="false" data-group="family" data-value="sans" data-label="고딕" data-fontcss="'Noto Sans KR',-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Malgun Gothic',system-ui,sans-serif"><span class="imenu-ico" data-menu-icon><span style="font-size:15px;line-height:1;font-weight:600;font-family:'Noto Sans KR',-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Malgun Gothic',system-ui,sans-serif">가</span></span>고딕</button><button type="button" class="imenu-item" role="menuitemradio" aria-checked="false" data-group="family" data-value="serif" data-label="명조" data-fontcss="'Noto Serif KR','Nanum Myeongjo',Georgia,'Apple SD Gothic Neo',serif"><span class="imenu-ico" data-menu-icon><span style="font-size:15px;line-height:1;font-weight:600;font-family:'Noto Serif KR','Nanum Myeongjo',Georgia,'Apple SD Gothic Neo',serif">가</span></span>명조</button></div></div>
367    <div class="imenu" id="ui-theme" data-label="테마"><button type="button" class="imenu-trigger" data-menu-trigger aria-haspopup="menu" aria-expanded="false" aria-label="테마" title="테마"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 2v2"/><path d="M14.837 16.385a6 6 0 1 1-7.223-7.222c.624-.147.97.66.715 1.248a4 4 0 0 0 5.26 5.259c.589-.255 1.396.09 1.248.715"/><path d="M16 12a4 4 0 0 0-4-4"/><path d="m19 5-1.256 1.256"/><path d="M20 12h2"/></svg></button><div class="imenu-list" data-menu-list role="menu" aria-label="테마" hidden><button type="button" class="imenu-item" role="menuitemradio" aria-checked="false" data-value="light" data-label="라이트"><span class="imenu-ico" data-menu-icon><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewB
367ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2"/><path d="M12 20v2"/><path d="m4.93 4.93 1.41 1.41"/><path d="m17.66 17.66 1.41 1.41"/><path d="M2 12h2"/><path d="M20 12h2"/><path d="m6.34 17.66-1.41 1.41"/><path d="m19.07 4.93-1.41 1.41"/></svg></span>라이트</button><button type="button" class="imenu-item" role="menuitemradio" aria-checked="false" data-value="dark" data-label="다크"><span class="imenu-ico" data-menu-icon><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401"/></svg></span>다크</button><button type="button" class="imenu-item" role="menuitemradio" aria-checked="false" data-value="system" data-label="시스템"><span class="imenu-ico" data-menu-icon><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/></svg></span>시스템</button><button type="button" class="imenu-item" role="menuitemradio" aria-checked="false" data-value="auto" data-label="자동"><span class="imenu-ico" data-menu-icon><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 2v2"/><path d="M14.837 16.385a6 6 0 1 1-7.223-7.222c.624-.147.97.66.715 1.248a4 4 0 0 0 5.26 5.259c.589-.255 1.396.09 1.248.715"/><path d="M16 12a4 4 0 0 0-4-4"/><path d="m19 5-1.256 1.256"/><path d="M20 12h2"/></svg></span>자동</button></div></div>
368    <button type="button" id="ui-contact">문의하기</button>
369    <label for="mnav-cb" class="mnav-toggle" aria-label="메뉴 열기"><span aria-hidden="true">&#9776;</span></label>
370  </div>
371</div>
372<div class="subbar">
373  <div class="inner">
374    <nav aria-label="지식센터 메뉴">
375      <a href="/kb">지식센터 홈</a>
376      <a href="/kb/solutions">솔루션</a>
377      <a href="/kb/tcr" aria-current="page">TCR</a>
378      <a href="/kb/cases">사례</a>
379      <a href="/kb/demos">샘플데모</a>
380      <a href="/kb/gallery">화면 갤러리</a>
381      <a href="/kb/materials">자료실</a>
382      <a href="/kb/faq">FAQ</a>
383    </nav>
384    <form class="search" action="/kb/search" method="get">
385      <input type="search" name="q" placeholder="지식센터 검색" aria-label="지식센터 검색">
386      <button type="submit">검색</button>
387    </form>
388  </div>
389</div>
390<nav class="mnav" aria-label="주 메뉴(모바일)">
391  <div class="mnav-grid">
392    <a href="/">AI 상담</a>
393    <a href="/visualize">시각화 탐색</a>
394    <a href="/kb" aria-current="page">지식센터</a>
395  </div>
396  <div class="mnav-grid mnav-sub">
397    <a href="/kb">지식센터 홈</a>
398    <a href="/kb/solutions">솔루션</a>
399    <a href="/kb/tcr" aria-current="page">TCR</a>
400    <a href="/kb/cases">사례</a>
401    <a href="/kb/demos">샘플데모</a>
402    <a href="/kb/gallery">화면 갤러리</a>
403    <a href="/kb/materials">자료실</a>
404    <a href="/kb/faq">FAQ</a>
405  </div>
406  <form class="search mnav-search" action="/kb/search" method="get">
407    <input type="search" name="q" placeholder="지식센터 검색" aria-label="지식센터 검색">
408    <button type="submit">검색</button>
409  </form>
410  <button type="button" id="ui-contact-mnav" class="mnav-contact">문의하기</button>
411</nav>
412</header>
413<div class="wrap">
414  <aside class="nav-tree"><input type="checkbox" class="nav-tree-cb" id="nav-tree-cb"><label for="nav-tree-cb" class="nav-tree-toggle">전체 문서 목록</label><div class="nav-tree-body"><h3>지식센터</h3><ul class="tree">
415  <li><a href="/kb">전체 인덱스</a></li>
416  <li>
416<details><summary><a href="/kb/solutions">솔루션</a> <b>39</b></summary><ul><li><details><summary>패키지 (PKG) <b>6</b></summary><ul><li><a href="/kb/solutions/amp-agency-platform">AMP™ 광고대행사 플랫폼</a></li><li><a href="/kb/solutions/bizspring-daas">BizSpring DaaS</a></li><li><a href="/kb/solutions/bmp-industry-set">BMP 산업군별 솔루션 세트</a></li><li><a href="/kb/solutions/commerce-studio">커머스 스튜디오</a></li><li><a href="/kb/solutions/growthplatform-ai-crm">GrowthPlatform AI CRM(CXM)</a></li><li><a href="/kb/solutions/logger-rt-collect">LOGGER RT-Collect 실시간 고객행동로그 수집</a></li></ul></details></li><li><details><summary>솔루션 (SOL) <b>22</b></summary><ul><li><a href="/kb/solutions/ai-agentic-app">AI Agentic App</a></li><li><a href="/kb/solutions/air-saas-copilot">AIR SaaS Copilot</a></li><li><a href="/kb/solutions/bizactioner">BizActioner 외부매체 액션 라우터</a></li><li><a href="/kb/solutions/bizspring-lift-iroas">BizSpring LIFT™ 기여성과 분석</a></li><li><a href="/kb/solutions/bizspring-tag-manager">비즈스프링 태그매니저</a></li><li><a href="/kb/solutions/content-launcher">ContentLauncher</a></li><li><a href="/kb/solutions/cts-conversion-tracking">CTS™ 전환추적</a></li><li><a href="/kb/solutions/cvtr">CVTR Conversion To Revenue</a></li><li><a href="/kb/solutions/digo-influencer">DIGO 인플루언서 플랫폼</a></li><li><a href="/kb/solutions/ga4-saas">GA4 SaaS</a></li><li><a href="/kb/solutions/geocare-ai">GEOcare.ai</a></li><li><a href="/kb/solutions/intranet-private-ad-system">인트라넷·폐쇄형 사내 시스템 전용 광고 시스템</a></li><li><a href="/kb/solutions/lift-api-gateway">LIFT API Gateway</a></li><li><a href="/kb/solutions/logger">LOGGER</a></li><li><a href="/kb/solutions/mdp-media-data-platform">mDP 미디어데이터플랫폼</a></li><li><a href="/kb/solutions/premium-geo-brand-hub">Premium GEO 브랜드허브</a></li><li><a href="/kb/solutions/sa-autobid-dsp">SA 자동입찰·비즈스프링 DSP</a></li><li><a href="/kb/solutions/smartdash-ai">SmartDash.ai</a></li><li><a href="/kb/solutions/smartfeed">SmartFeed (FeedMaker)</a></li><li><a href="/kb/solutions/tagman">TagMan 태그 매니지먼트 서비스</a></li><li><a href="/kb/solutions/tam-media-ads">TAM 광고매체광고</a></li><li><a href="/kb/solutions/utm-lift-tracker">UTM/LIFT Tracker</a></li></ul></details></li><li><details><summary>단위솔루션 (UNIT) <b>5</b></summary><ul><li><a href="/kb/solutions/ai-creative-generation">AI 광고소재 자동생성</a></li><li><a href="/kb/solutions/air-integrated-reporting">AIR 매체통합 리포팅</a></li><li><a href="/kb/solutions/onsite-marketing">온사이트 마케팅</a></li><li><a href="/kb/solutions/report-automation">보고서자동화</a></li><li><a href="/kb/solutions/web-app-behavior-collection">웹/앱 행동데이터 수집</a></li></ul></details></li><li><details><summary>레퍼런스 (REF) <b>4</b></summary><ul><li><a href="/kb/solutions/gmp-api-mcp-hub">GMP 전사 API·MCP 허브</a></li><li><a href="/kb/solutions/gp-agent-runtime">gp-agent 에이전트 런타임</a></li><li><a href="/kb/solutions/growthplatform-reference">GrowthPlatform™ 기술 레퍼런스 v3.0</a></li><li><a href="/kb/solutions/mcp-function-catalog">MCP·API 기능 카탈로그</a></li></ul></details></li><li><details><summary>그 밖 <b>2</b></summary><ul><li><a href="/kb/solutions/chatad">ChatAd — OpenAI 광고 10분 셀프서비스</a></li><li><a href="/kb/solutions/medical-pack">메디컬 팩 — 솔루션 구성</a></li></ul></details></li></ul></details></li>
417  <li><details open><summary><a href="/kb/tcr">TCR 프레임워크</a> <b>16</b></summary><ul><li><details><summary>T 발견·트래픽 <b>4</b></summary><ul><li><a href="/kb/tcr/t-1-1">T-1-1 브랜드 지식 자산화 — TCR 활동</a></li><li><a href="/kb/tcr/t-1-2">T-1-2 AI 검색·GEO 노출 — TCR 활동</a></li><li><a href="/kb/tcr/t-1-3">T-1-3 유입·행동 데이터 수집 — TCR 활동</a></li><li><a href="/kb/tcr/t-1-4">T-1-4 유입 채널 구조 분석 — TCR 활동</a></li></ul></details></li><li>
417<details><summary>C 전환 <b>4</b></summary><ul><li><a href="/kb/tcr/c-2-1">C-2-1 매체 운영·입찰 최적화 — TCR 활동</a></li><li><a href="/kb/tcr/c-2-2">C-2-2 전환 신호 전송 — TCR 활동</a></li><li><a href="/kb/tcr/c-2-3">C-2-3 콘텐츠·소재 전환력 — TCR 활동</a></li><li><a href="/kb/tcr/c-2-4">C-2-4 온사이트 전환 개입 — TCR 활동</a></li></ul></details></li><li><details><summary>R 관계·재구매 <b>4</b></summary><ul><li><a href="/kb/tcr/r-3-1">R-3-1 재방문 유도 — TCR 활동</a></li><li><a href="/kb/tcr/r-3-2">R-3-2 측정 정합성 유지 — TCR 활동</a></li><li><a href="/kb/tcr/r-3-3">R-3-3 고객 관계 심화·커뮤니티 — TCR 활동</a></li><li><a href="/kb/tcr/r-3-4">R-3-4 재구매·LTV 자동화 — TCR 활동</a></li></ul></details></li><li><details><summary>O 최적화·확장 <b>4</b></summary><ul><li><a href="/kb/tcr/o-x-1">O-X-1 성과 원인 분석 — TCR 활동</a></li><li><a href="/kb/tcr/o-x-2">O-X-2 예산·자원 재배분 — TCR 활동</a></li><li><a href="/kb/tcr/o-x-3">O-X-3 리포팅 자동화 — TCR 활동</a></li><li><a href="/kb/tcr/o-x-4">O-X-4 데이터 개방·AI 연동 — TCR 활동</a></li></ul></details></li></ul></details></li>
418  <li><details><summary><a href="/kb/cases">사례 / 유즈케이스</a> <b>75</b></summary><ul><li><a href="/kb/case/blog-ad-behavior-data-dashboard">광고 성과 · 온라인 행동 데이터 통합 대시보드 — Looker Studio로 수기 보고 없애기</a></li><li><a href="/kb/case/blog-ad-data-pipeline-automation">광고 데이터 파이프라인 완전 자동화 — 매체 API 연동으로 수작업 리포팅 제거</a></li><li><a href="/kb/case/blog-ad-spend-monitoring-alerts">매체별 광고비 소진 모니터링 알람 + 성과 예측 — 광고 운영 자동화</a></li><li><a href="/kb/case/blog-ai-ad-management-platform">통합 광고 관리 플랫폼과 AI 기술 접목으로 광고 운영 생산성 향상</a></li><li><a href="/kb/case/blog-cart-abandonment-behavior-analysis">장바구니 이후 행동 패턴 분석으로 이탈률 개선과 재방문 유도</a></li><li><a href="/kb/case/blog-cdp-accessibility-customer-experience">CDP 접근성 개선을 통한 고객 경험 최적화 — 데이터 핸들링 역량 강화로 A-ha 모먼트 발굴</a></li><li><a href="/kb/case/blog-cohort-selling-point-ltv">신규/기존 고객 코호트 분석으로 셀링 포인트 발굴 — LTV 향상</a></li><li><a href="/kb/case/blog-conversion-fraud-verification">전환 데이터 급증 원인 진단 — 매크로/Fraud 여부를 로그 단위로 검증하기</a></li><li><a href="/kb/case/blog-credit-score-based-ad-targeting">신용 점수 기반 맞춤형 타겟팅으로 광고 효율 향상 — 민감정보 제약을 우회한 리타겟팅 설계</a></li><li><a href="/kb/case/blog-crm-online-behavior-integration-card-issuer">CRM과 온라인 행동 데이터 통합으로 개인화 마케팅 환경 구축 — 카드사의 빅데이터 기반 마련</a></li><li><a href="/kb/case/blog-customer-journey-cohort-ltv">고객 여정 코호트 분석으로 LTV 레버 발굴 — 데이터 문화 확산까지</a></li><li><a href="/kb/case/blog-customer-profiling-non-purchasers">이탈 고객 프로파일링으로 재구매 유도 — 미구매 세그먼트 세분화</a></li><li><a href="/kb/case/blog-d2c-revenue-driver-analysis">글로벌 D2C 매출 상승 요인 분석 — 국가별 운영 가이드 표준화</a></li><li><a href="/kb/case/blog-data-cleansing-customer-trait-design">데이터 클렌징과 타겟팅 Trait 설계 — 적재된 데이터를 마케팅 자산으로</a></li><li><a href="/kb/case/blog-digital-library-content-personalization">디지털 도서관 콘텐츠 개인화 추천으로 사용자 참여도 개선</a></li><li><a href="/kb/case/blog-first-purchase-conversion-custom-metric">성과 측정 지표 확장으로 광고 매체별 첫구매 전환율 분석</a></li><li><a href="/kb/case/blog-ga4-bigquery-crm-integration">GA4 원천 데이터와 CRM 데이터 연동을 통한 맞춤형 마케팅 실현 — 회원 ID 기반 통계 설계</a></li><li><a href="/kb/case/blog-ga4-cafe24-member-order-integration">GA4 행동 데이터와 카페24 회원·주문 데이터 통합 분석 — User-ID 매칭으로 세그먼트 정밀화</a></li><li><a href="/kb/case/blog-ga4-loan-conversion-online-offline-tracking">GA4 온라인 대출 조회 → 오프라인 최종승인 전환 추적 및 리타겟팅 최적화</a></li><li><a href="/kb/case/blog-ga4-subscription-churn-measurement-protocol">GA4 측정 프로토콜로 구독 서비스 이탈 추적 체계 구축</a></li><li><a href="/kb/case/blog-geo-optimization-generative-ai-visibility">생성형 AI 응답 속 서비스 노출 강화 — GEO 최적화 진단 및 개선 사례</a></li><li><a href="/kb/case/blog-hospital-ga4-offline-online-integration">GA4 측정 프로토콜로 온·오프라인 데이터 통합 — 진료 예약 이탈 고객 리타겟팅</a></li><li><a href="/kb/case/blog-hospital-sensitive-data-retargeting-tam">민감정보 제약 속 병원 리타겟팅 — TAM으로 Google·Meta 정교 타겟팅 구현</a></li><li><a href="/kb/case/blog-large-scale-ad-data-platform">대규모 광고/로그 데이터 핸들링을 위한 맞춤형 광고 관리 플랫폼 구축</a></li><li><a href="/kb/case/blog-local-news-ai-content-recommendation">AI 콘텐츠 추천으로 지역 언론사 충성 독자 확보 — 체류시간·구독률 동반 상승</a></li><li><a href="/kb/case/blog-multi-channel-ad-data-pipeline">다수 광고 매체 성과 데이터 취합 자동화 — API 파이프라인으로 수작업 결합 없애기</a></li><li><a href="/kb/case/blog-online-offline-conversion-tracking">GA4 + BigQuery로 온라인-오프라인 전환 연결 — 이탈 원인 분석과 리타겟팅</a></li><li><a href="/kb/case/blog-online-offline-integration-install-retargeting">온·오프라인 데이터 통합 분석으로 설치형 서비스 이탈 고객 리타겟팅</a></li><li><a href="/kb/case/blog-onsite-exit-point-optimization">자사몰 이탈 포인트와 관심 콘텐츠 분석으로 고객 경험 최적화</a></li><li><a href="/kb/case/blog-personalization-campaign-analytics">개인화 캠페인 성과 분석 체계 구축 — GA4 360 기반 시나리오·영역별 최적화</a></li><li><a href="/kb/case/blog-redirect-referrer-loss-prevention">리다이렉트로 인한 유입 경로(Referrer) 유실 방지</a></li><li><a href="/kb/case/blog-referrer-domain-data-validation">유입 검색어·전환 도메인 데이터 정합성 검증 — 오탐지 원인 규명과 스크립트 보완</a></li><li><a href="/kb/case/blog-search-ad-auto-bidding">
418검색광고 자동입찰 도입 — 수동 운영 리소스를 전략 업무로 전환</a></li><li><a href="/kb/case/blog-seasonal-promotion-retention-analysis">시즌 프로모션 리텐션 효과 검증 — 코호트로 찾은 '7일 이내' 구매 패턴</a></li><li><a href="/kb/case/blog-subscription-marketing-budget-ltv">구독 서비스 마케팅 예산 최적화 — LTV 기반 채널·세그먼트 재배분</a></li><li><a href="/kb/case/blog-tcommerce-funnel-data-pipeline">고객 Funnel 데이터 파이프라인 구축 — 전사 행동·주문·캠페인 데이터 실시간 통합</a></li><li><a href="/kb/case/blog-transit-card-data-dmp">서로 다른 두 종류의 소비자 데이터를 결합한 관심사 기반 광고 타겟팅 구축</a></li><li><a href="/kb/case/blog-unmanned-store-churn-prediction">고객·점포 군집 분석과 이탈 예측 모델링으로 유지율 관리 자동화</a></li><li><a href="/kb/case/blog-web-app-unified-analysis-user-id">Web/App 통합 분석 View 구축으로 App 중심 사용자 경험 강화</a></li><li><a href="/kb/case/clinic-geo">병·의원 GEO 최적화 — AI 검색에서 먼저 인용되기</a></li><li><a href="/kb/case/contract-erp-automation">계약서 → ERP → 발주 자동화</a></li><li><a href="/kb/case/dogfooding-ax">사내 AX 도그푸딩 — 우리에게 먼저 적용합니다</a></li><li><a href="/kb/case/ga4-taxonomy">GA4 이벤트 택소노미 표준화 — 세팅 2~3주 → 1~2일</a></li><li><a href="/kb/case/global-geo-managed">해외향 관리형 GEO 6개월 운영</a></li><li><a href="/kb/case/multibrand-dashboard">멀티브랜드 광고 통합 실시간 대시보드</a></li><li><a href="/kb/case/onprem-ai-agent">온프레미스 AI 에이전트 환경 구축</a></li><li><a href="/kb/case/weekly-report-automation">주간 보고 취합 자동화 — 8시간 → 20분</a></li><li><a href="/kb/cases/intranet-private-ad-system">폐쇄형 사내 시스템 A사 — 인트라넷 광고 운영 전용 시스템 구축</a></li><li><a href="/kb/scenario/agency-unified-reporting">광고주 20곳, 주간 보고와 예산 재배분을 하루가 아니라 회의 전에</a></li><li><a href="/kb/scenario/app-server-side-conversion">쿠키가 사라진 자리, 서버 전환(CAPI)으로 매체 최적화를 되살리다</a></li><li><a href="/kb/scenario/b2b-technical-geo">영업사원 없이도, 엔지니어의 질문에 24시간 답하는 회사가 됐다</a></li><li><a href="/kb/scenario/beauty-competitor-response">경쟁사가 메인 카피를 바꾼 당일, 우리는 대응 콘텐츠를 내보냈다</a></li><li><a href="/kb/scenario/clinic-ai-citation">&quot;시술 부작용&quot;을 검색하는 환자에게, AI가 우리 병원 답을 읽어주기까지</a></li><li><a href="/kb/scenario/commerce-product-geo-landing">상품 3,000개 쇼핑몰이 상품마다 'AI가 읽는 페이지'를 갖게 된 방법</a></li><li><a href="/kb/scenario/ecommerce-incremental-budget">쇼핑광고 피드 낭비를 걷어내고, 증분 매출로 예산을 다시 짜다</a></li><li><a href="/kb/scenario/education-trend-timing">'AI 자격증' 검색이 뜨기 시작한 주에, 강의 페이지와 콘텐츠가 먼저 준비됐다</a></li><li><a href="/kb/scenario/franchise-central-management">지점 수십 곳의 검색광고 입찰과 소재를, 본사 한 명이 관리</a></li><li><a href="/kb/scenario/healthfood-white-space">경쟁사가 '유산균 100억'을 외칠 때, 데이터는 '생존율'을 가리켰다</a></li><li><a href="/kb/usecase/commerce-pack-asset">광고를 끄면 멈춘다 — 커머스 스튜디오</a></li><li><a href="/kb/usecase/commerce-pack-channel">채널마다 다시 만든다 — 커머스 스튜디오</a></li><li><a href="/kb/usecase/commerce-pack-make">만들 사람이 없다 — 커머스 스튜디오</a></li><li><a href="/kb/usecase/commerce-pack-proof">뭐가 효과인지 모른다 — 커머스 스튜디오</a></li><li><a href="/kb/usecase/commerce-pack-scale">상품이 많아 손이 안 닿는다 — 커머스 스튜디오</a></li><li><a href="/kb/usecase/commerce-pack-video">영상은 엄두가 안 난다 — 커머스 스튜디오</a></li><li><a href="/kb/usecase/medical-pack-ad-dependency">광고 의존 탈피 — 메디컬 팩</a></li><li><a href="/kb/usecase/medical-pack-ai-search">AI 탐색 대응 (GEO) — 메디컬 팩</a></li><li><a href="/kb/usecase/medical-pack-attribution">성과 불투명 — 메디컬 팩</a></li><li><a href="/kb/usecase/medical-pack-compliance">의료광고법 리스크 — 메디컬 팩</a></li><li><a href="/kb/usecase/medical-pack-content-load">콘텐츠 마케팅 수익성·효율화 — 메디컬 팩</a></li><li><a href="/kb/usecases/ai-agent-on-data">AI 에이전트가 우리 데이터를 쓰게 하기</a></li><li><a href="/kb/usecases/ai-answer-invisible">ChatGPT 답변에 우리 브랜드가 안 나올 때</a></li><li><a href="/kb/usecases/broken-conversion-tracking">전환 추적이 자꾸 깨질 때</a></li><li><a href="/kb/usecases/inhouse-behavior-log">행동로그를 인하우스로 직접 수집하기</a></li><li><a href="/kb/usecases/report-20-hours">광고 리포트에 매주 20시간 쓰는 대행사</a></li><li><a href="/kb/usecases/repurchase-ltv">재구매율과 LTV를 올리고 싶을 때</a></li></ul></details></li>
419  <li><a href="/kb/demos">
419샘플데모 <b>23</b></a></li>
420  <li><a href="/kb/gallery">스크린샷 자료실 <b>128</b></a></li>
421  <li><a href="/kb/materials">공개 자료실</a></li>
422  <li><details><summary>산업군 <b>8</b></summary><ul><li><a href="/kb/industries/agency">광고대행사 마케팅 솔루션</a></li><li><a href="/kb/industries/brand">브랜드기업 마케팅 솔루션</a></li><li><a href="/kb/industries/cafe24">Cafe24 입점몰 마케팅 솔루션</a></li><li><a href="/kb/industries/clinic">병의원·치과·한의원 마케팅 솔루션</a></li><li><a href="/kb/industries/d2c">D2C 이커머스 마케팅 솔루션</a></li><li><a href="/kb/industries/education">교육 마케팅 솔루션</a></li><li><a href="/kb/industries/finance">금융·증권 마케팅 솔루션</a></li><li><a href="/kb/industries/telecom">통신 마케팅 솔루션</a></li></ul></details></li>
423  <li><details><summary><a href="/kb/glossary">용어사전</a> <b>100</b></summary><ul><li><details><summary>ㄱ-ㄴ-ㄷ <b>13</b></summary><ul><li><a href="/kb/glossary/privacy-compliance">개인정보보호 컴플라이언스</a></li><li><a href="/kb/glossary/subscription-commerce">구독 커머스</a></li><li><a href="/kb/glossary/growth-loop">그로스 루프</a></li><li><a href="/kb/glossary/growth-hacking">그로스해킹</a></li><li><a href="/kb/glossary/attribution">기여분석 (Attribution)</a></li><li><a href="/kb/glossary/no-code">노코드·로우코드</a></li><li><a href="/kb/glossary/dark-pattern">다크 패턴</a></li><li><a href="/kb/glossary/dark-funnel">다크퍼널</a></li><li><a href="/kb/glossary/data-governance">데이터 거버넌스</a></li><li><a href="/kb/glossary/data-warehouse">데이터 웨어하우스·데이터 레이크</a></li><li><a href="/kb/glossary/data-clean-room">데이터 클린룸</a></li><li><a href="/kb/glossary/data-pipeline">데이터 파이프라인</a></li><li><a href="/kb/glossary/data-driven-marketing">데이터드리븐 마케팅</a></li></ul></details></li><li><details><summary>ㄹ-ㅁ-ㅂ <b>12</b></summary><ul><li><a href="/kb/glossary/live-commerce">라이브커머스</a></li><li><a href="/kb/glossary/lookalike-audience">룩얼라이크 오디언스</a></li><li><a href="/kb/glossary/lead-nurturing">리드 너처링</a></li><li><a href="/kb/glossary/reverse-etl">리버스 ETL</a></li><li><a href="/kb/glossary/retargeting">리타게팅·리마케팅</a></li><li><a href="/kb/glossary/retail-media-network">리테일 미디어 네트워크 (RMN)</a></li><li><a href="/kb/glossary/retention">리텐션 (잔존율)</a></li><li><a href="/kb/glossary/martech">마테크 (MarTech)</a></li><li><a href="/kb/glossary/multi-agent">멀티에이전트 시스템</a></li><li><a href="/kb/glossary/vertical-ai">버티컬 AI</a></li><li><a href="/kb/glossary/vector-search">벡터 검색</a></li><li><a href="/kb/glossary/brand-safety">브랜드 세이프티</a></li></ul></details></li><li><details><summary>ㅅ-ㅇ-ㅈ <b>21</b></summary><ul><li><a href="/kb/glossary/server-side-tagging">서버사이드 태깅</a></li><li><a href="/kb/glossary/server-side-gtm">서버사이드 GTM</a></li><li><a href="/kb/glossary/session-replay">세션 리플레이</a></li><li><a href="/kb/glossary/creative-fatigue">소재 피로도</a></li><li><a href="/kb/glossary/short-form">숏폼 콘텐츠</a></li><li><a href="/kb/glossary/semantic-search">시맨틱 검색</a></li><li><a href="/kb/glossary/real-time-personalization">실시간 개인화</a></li><li><a href="/kb/glossary/streaming-data">실시간 스트리밍 데이터</a></li><li><a href="/kb/glossary/agent-orchestration">에이전트 오케스트레이션</a></li><li><a href="/kb/glossary/agentic-commerce">에이전틱 커머스</a></li><li><a href="/kb/glossary/agentic-ai">에이전틱 AI (Agentic AI)</a></li><li><a href="/kb/glossary/entity-seo">엔티티 SEO</a></li><li><a href="/kb/glossary/omnichannel">옴니채널</a></li><li><a href="/kb/glossary/exit-intent">이탈 의도 (Exit-Intent)</a></li><li><a href="/kb/glossary/citability">인용 가능성 (Citability)</a></li><li><a href="/kb/glossary/incrementality">인크리멘탈리티 (증분효과)</a></li><li><a href="/kb/glossary/embedding">임베딩</a></li><li><a href="/kb/glossary/conversion-api">전환 API (CAPI)</a></li><li><a href="/kb/glossary/zero-click-search">제로클릭 검색</a></li><li><a href="/kb/glossary/zero-party-data">제로파티 데이터</a></li><li><a href="/kb/glossary/knowledge-graph">지식 그래프</a></li></ul></details></li><li>
423<details><summary>ㅊ-ㅋ-ㅌ <b>9</b></summary><ul><li><a href="/kb/glossary/answer-box">추천 스니펫 (피처드 스니펫)</a></li><li><a href="/kb/glossary/commerce-media">커머스 미디어</a></li><li><a href="/kb/glossary/consent-management">컨센트 매니지먼트 (동의 관리)</a></li><li><a href="/kb/glossary/contextual-targeting">컨텍스추얼 타겟팅</a></li><li><a href="/kb/glossary/context-engineering">컨텍스트 엔지니어링</a></li><li><a href="/kb/glossary/core-web-vitals">코어 웹 바이탈</a></li><li><a href="/kb/glossary/cohort-analysis">코호트 분석</a></li><li><a href="/kb/glossary/cookieless">쿠키리스</a></li><li><a href="/kb/glossary/creator-economy">크리에이터 이코노미</a></li></ul></details></li><li><details><summary>ㅍ-ㅎ <b>11</b></summary><ul><li><a href="/kb/glossary/fine-tuning">파인튜닝</a></li><li><a href="/kb/glossary/funnel-analysis">퍼널 분석</a></li><li><a href="/kb/glossary/first-party-data">퍼스트파티 데이터</a></li><li><a href="/kb/glossary/privacy-sandbox">프라이버시 샌드박스</a></li><li><a href="/kb/glossary/programmatic-ads">프로그래매틱 광고</a></li><li><a href="/kb/glossary/prompt-engineering">프롬프트 엔지니어링</a></li><li><a href="/kb/glossary/hallucination">할루시네이션 (환각)</a></li><li><a href="/kb/glossary/headless-commerce">헤드리스 커머스</a></li><li><a href="/kb/glossary/holdout-test">홀드아웃 테스트</a></li><li><a href="/kb/glossary/human-in-the-loop">휴먼인더루프 (Human-in-the-Loop)</a></li><li><a href="/kb/glossary/heatmap">히트맵</a></li></ul></details></li><li><details><summary>A-B-C <b>8</b></summary><ul><li><a href="/kb/glossary/ab-test">A/B 테스트</a></li><li><a href="/kb/glossary/aeo">AEO (답변엔진 최적화)</a></li><li><a href="/kb/glossary/ai-guardrail">AI 가드레일</a></li><li><a href="/kb/glossary/ai-slop">AI 슬롭 (AI Slop)</a></li><li><a href="/kb/glossary/ai-agent">AI 에이전트</a></li><li><a href="/kb/glossary/ai-overview">AI 오버뷰 (AI Overviews)</a></li><li><a href="/kb/glossary/ax">AX (AI 전환)</a></li><li><a href="/kb/glossary/cdp">CDP (고객데이터플랫폼)</a></li></ul></details></li><li><details><summary>D-E-F <b>6</b></summary><ul><li><a href="/kb/glossary/daas">DaaS (Data as a Service)</a></li><li><a href="/kb/glossary/dco">DCO (다이나믹 크리에이티브 최적화)</a></li><li><a href="/kb/glossary/dmp">DMP (데이터관리플랫폼)</a></li><li><a href="/kb/glossary/dsp">DSP (수요자 측 플랫폼)</a></li><li><a href="/kb/glossary/dx">DX (디지털 전환)</a></li><li><a href="/kb/glossary/etl-elt">ETL·ELT</a></li></ul></details></li><li><details><summary>G-H-I <b>3</b></summary><ul><li><a href="/kb/glossary/geo">GEO (생성형 엔진 최적화)</a></li><li><a href="/kb/glossary/idfa">IDFA·광고식별자</a></li><li><a href="/kb/glossary/itp">ITP (지능형 추적 방지)</a></li></ul></details></li><li><details><summary>J-K-L <b>2</b></summary><ul><li><a href="/kb/glossary/llms-txt">llms.txt</a></li><li><a href="/kb/glossary/ltv">LTV (고객생애가치)</a></li></ul></details></li><li><details><summary>M-N-O <b>5</b></summary><ul><li><a href="/kb/glossary/mcp">MCP (Model Context Protocol)</a></li><li><a href="/kb/glossary/mdm">MDM (마스터데이터관리)</a></li><li><a href="/kb/glossary/mmm">MMM (마케팅믹스모델링)</a></li><li><a href="/kb/glossary/mta">MTA (멀티터치 어트리뷰션)</a></li><li><a href="/kb/glossary/nl2sql">NL2SQL</a></li></ul></details></li><li><details><summary>P-Q-R <b>3</b></summary><ul><li><a href="/kb/glossary/plg">PLG (제품주도성장)</a></li><li><a href="/kb/glossary/paid-owned-earned">POE 미디어 (Paid·Owned·Earned)</a></li><li><a href="/kb/glossary/rag">RAG (검색증강생성)</a></li></ul></details></li><li><details><summary>S-T-U <b>7</b></summary><ul><li><a href="/kb/glossary/sdui">SDUI (서버 주도 UI)</a></li><li><a href="/kb/glossary/skan">SKAdNetwork (SKAN)</a></li><li><a href="/kb/glossary/sllm">sLLM (소형언어모델)</a></li><li><a href="/kb/glossary/ssp">SSP (공급자 측 플랫폼)</a></li><li><a href="/kb/glossary/ssr">SSR (서버사이드 렌더링)</a></li><li><a href="/kb/glossary/tcr">TCR 프레임워크</a></li><li><a href="/kb/glossary/ugc">UGC (사용자생성콘텐츠)</a></li></ul></details></li></ul></details></li>
424  <li>
424<details><summary>매뉴얼 · 기술자료 <b>92</b></summary><ul><li><details><summary>GEOcare <b>24</b></summary><ul><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-01-플랫폼-개요">01 플랫폼 개요</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-02-v2-대비-달라진-점">02 V2 대비 달라진 점</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-03-grand-파이프라인-원스텝">03 GRAND 파이프라인 (원스텝)</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-04-geo-상황실">04 GEO 상황실</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-05-geo-에이전트">05 GEO 에이전트</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-06-ai-응답-추적">06 AI 응답 추적</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-07-임팩트-분석">07 임팩트 분석</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-08-활동-타임라인">08 활동 타임라인</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-09-알림-센터">09 알림 센터</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-10-g1-진입-도메인">10 G1 · 진입·도메인</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-11-g2-사이트-geo-진단">11 G2 · 사이트 GEO 진단</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-12-g3-ai-점유율-som">12 G3 · AI 점유율(SoM)</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-13-g4-구조화-데이터-송출">13 G4 · 구조화 데이터 송출</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-14-g5-분석-리포트">14 G5 · 분석 리포트</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-15-g6-모니터링">15 G6 · 모니터링</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-16-g7-알림">16 G7 · 알림</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-17-설정-계정">17 설정·계정</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-18-mcp-연결-ai-에이전트용">18 MCP 연결 (AI 에이전트용)</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-19-rest-api-개발자-시스템-연동용">19 REST API (개발자·시스템 연동용)</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-20-플랜별-기능-비교">20 플랜별 기능 비교</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-21-상황별-활용-가이드">21 상황별 활용 가이드</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-22-사용자-faq">22 사용자 FAQ</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-23-용어사전">23 용어사전</a></li><li><a href="/kb/ref/manual/geocare-사용자-매뉴얼-geo-care-v3">GEO CARE.V3</a></li></ul></details></li><li><details><summary>콘텐츠 런처 <b>25</b></summary><ul><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-내-계정-my-account">내 계정 (My Account)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-네이버-블로그">네이버 블로그</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-리믹스-마스터">리믹스 마스터</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-리믹스-작업대-워크벤치">리믹스 작업대(워크벤치)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-소스-sources">소스 (Sources)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-시장-경쟁사-모니터-market-monitor">시장·경쟁사 모니터 (Market Monitor)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-에피소드-편집기">에피소드 편집기</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-유틸리티-utilities">유틸리티 (Utilities)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-자사-위키-bizspring-wiki">자사 위키(BizSpring Wiki)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-채널-channels">채널 (Channels)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-콘텐츠-가이드-content-guide">콘텐츠 가이드 (Content Guide)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-트리거-인박스-trigger-inbox">트리거 인박스 (Trigger Inbox)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-프롬프트-prompts">프롬프트 (Prompts)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-플러그인-plugins">플러그인 (Plugins)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-ai-사용량-ai-usage">AI 사용량 (AI Usage)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-ai-모델-관리-ai-models">AI·모델 관리 (AI Models)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-api-연결-rest-api">
424API 연결 (REST API)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-insight-성과">Insight (성과)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-launch-발행">Launch (발행)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-linkedin">LinkedIn</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-live-라이브-콘텐츠">Live (라이브 콘텐츠)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-mcp-연결">MCP 연결</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-notion">Notion</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-remix-리믹스-목록">Remix (리믹스 목록)</a></li><li><a href="/kb/ref/manual/content-launcher-콘텐츠-런처-wordpress-self-hosted">WordPress (self-hosted)</a></li></ul></details></li><li><details><summary>Growth Platform™ <b>21</b></summary><ul><li><a href="/kb/ref/manual/growth-platform-user-guide-고객-구매-여정-cjm">고객 구매 여정(CJM)</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-광고캠페인-예산-플래너-mmm">광고캠페인 예산 플래너(MMM)</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-기본-화면-구성">기본 화면 구성</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-뉴스미디어-통합-대시보드">뉴스미디어 통합 대시보드™</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-마케팅-자동화">마케팅 자동화</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-바이럴-마케팅">바이럴 마케팅™</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-부정-클릭-차단">부정 클릭 차단™</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-분석-스크립트-적용-가이드">분석 스크립트 적용 가이드</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-쇼핑-광고-분석">쇼핑 광고 분석™</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-앱-접근-권한">앱 접근 권한</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-캠페인-이상-징후-예측-alert">캠페인 이상 징후 예측(Alert)</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-admonster">ADMONSTER™</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-ai-광고-소재-생성-및-편집">AI 광고 소재 생성 및 편집</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-air-gpts-알파-버전-이용-가이드">AIR GPTs 알파 버전 이용 가이드</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-air-매체-통합-리포트">AIR™(매체 통합 리포트)</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-gpts-for-growth-platform-시작-가이드">GPTs for Growth Platform 시작 가이드</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-growth-platform-시작하기">Growth Platform™ 시작하기</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-growth-platform-주요-서비스">Growth Platform™ 주요 서비스</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-manager-console">MANAGER CONSOLE</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-ncp에서-카카오-채널-정보-확인하기">NCP에서 카카오 채널 정보 확인하기</a></li><li><a href="/kb/ref/manual/growth-platform-user-guide-tam">TAM™</a></li></ul></details></li><li><details><summary>BizSpring AMP <b>7</b></summary><ul><li><a href="/kb/ref/manual/bizspring-amp-user-guide-기본-화면-구성">기본 화면 구성</a></li><li><a href="/kb/ref/manual/bizspring-amp-user-guide-앱-접근-권한">앱 접근 권한</a></li><li><a href="/kb/ref/manual/bizspring-amp-user-guide-admon">ADMON</a></li><li><a href="/kb/ref/manual/bizspring-amp-user-guide-시작하기">BizSpring AMP 시작하기</a></li><li><a href="/kb/ref/manual/bizspring-amp-user-guide-주요-서비스">BizSpring AMP 주요 서비스</a></li><li><a href="/kb/ref/manual/bizspring-amp-user-guide-cts">CTS</a></li><li><a href="/kb/ref/manual/bizspring-amp-user-guide-logger">LOGGER</a></li></ul></details></li><li>
424<details><summary>어트리뷰션 CTS <b>2</b></summary><ul><li><a href="/kb/ref/manual/attribution-cts-guide-기여-분석">기여 분석</a></li><li><a href="/kb/ref/manual/attribution-cts-guide-리포트-가이드북">리포트 가이드북</a></li></ul></details></li><li><details><summary>스마트피드 <b>1</b></summary><ul><li><a href="/kb/ref/manual/비즈스프링-스마트피드-smartfeed-비즈스프링-스마트피드-smartfeed">비즈스프링 스마트피드(SmartFeed)</a></li></ul></details></li><li><details><summary>BizSpring AIR™ API <b>5</b></summary><ul><li><a href="/kb/ref/manual/bizspring-air-api-air-reporting-api">AIR™ Reporting API</a></li><li><a href="/kb/ref/manual/bizspring-air-api-api-사용을-위한-순서">API 사용을 위한 순서</a></li><li><a href="/kb/ref/manual/bizspring-air-api-auth-token-인증-토큰-발행">Auth Token(인증 토큰) 발행</a></li><li><a href="/kb/ref/manual/bizspring-air-api-bizspring-air-api-소개">BizSpring AIR™ API 소개</a></li><li><a href="/kb/ref/manual/bizspring-air-api-growth-platform-계정-생성">Growth Platform™ 계정 생성</a></li></ul></details></li><li><details><summary>Google OAuth 연동 API <b>1</b></summary><ul><li><a href="/kb/ref/manual/bizspring-google-oauth-연동-api-google-연동-요청">Google 연동 요청</a></li></ul></details></li><li><details><summary>Looker Connector <b>1</b></summary><ul><li><a href="/kb/ref/manual/looker-connector-사용-가이드-growth-platform-connector-for-looker-studio">Growth Platform Connector for Looker Studio</a></li></ul></details></li><li><details><summary>데이터 전송 서비스 <b>5</b></summary><ul><li><a href="/kb/ref/manual/비즈스프링-데이터-전송-서비스-가이드-비즈스프링-데이터-전송-서비스-가이드">비즈스프링 데이터 전송 서비스 가이드</a></li><li><a href="/kb/ref/manual/비즈스프링-데이터-전송-서비스-가이드-자주-묻는-질문">자주 묻는 질문</a></li><li><a href="/kb/ref/manual/guide-bigquery-권한-부여-bigquery-권한-부여">BigQuery 권한 부여</a></li><li><a href="/kb/ref/manual/비즈스프링-데이터-전송-서비스-가이드-google-bigquery">BigQuery 접근 권한 부여 방법</a></li><li><a href="/kb/ref/manual/비즈스프링-데이터-전송-서비스-가이드-google-cloud-storage">Google Cloud Storage</a></li></ul></details></li></ul></details></li>
425  <li><details><summary>계열 사이트 자료 <b>1</b></summary><ul><li><details><summary>인트렌치컨설팅 <b>1</b></summary><ul><li><a href="/kb/ref/web/entrench-consulting-com/tagman-tagman">TagMan - TagMan</a></li></ul></details></li></ul></details></li>
426  <li><details><summary>요금 안내 <b>3</b></summary><ul><li><a href="/kb/pricing/commerce-studio">커머스 스튜디오(Commerce Studio) 요금제 (공식)</a></li><li><a href="/kb/pricing/content-launcher">콘텐츠런처(Content Launcher) 요금제 (공식)</a></li><li><a href="/kb/pricing/geocare">GEOcare.ai 서비스 요금 (공식)</a></li></ul></details></li>
427  <li><details><summary>그 밖 <b>1</b></summary><ul><li><a href="/kb/ref/web/blog-bizspring-co-kr/geo-웹사이트-주소만-넣으면-진단은-알아서-시작됩니다-bizspring-blog">GEO, 웹사이트 주소만 넣으면, 진단은 알아서 시작됩니다 - BizSpring BLOG</a></li></ul></details></li>
428  <li><a href="/kb/faq">FAQ</a></li>
429  </ul></div></aside>
430  <main><p class="meta">TCR 프레임워크</p><h1>TCR 프레임워크 — T·C·R·O 4단계 16개 활동</h1>
431<div class="oneliner">고객 여정을 발견·전환·관계·최적화 4단계 16개 활동으로 나눠 마케팅 공백을 진단하는 비즈스프링 프레임워크입니다.</div>
432<div class="summary"><h2>핵심 요약</h2><ul><li>T 발견·트래픽 4개 활동</li><li>C 전환 4개 활동</li><li>R 관계·재구매 4개 활동</li><li>O 최적화·확장 4개 활동</li><li>16개 활동 모두 표준 솔루션이 커버</li></ul></div>
433<h2 id="matrix">커버리지 히트맵 (4단계 × 16활동)</h2>
434<table><tbody><tr><th>T 발견·트래픽</th><td class="cov"><a href="/kb/tcr/t-1-1">T-1-1</a><br>브랜드 지식 자산화<br><span class="meta">
434솔루션 3건</span></td><td class="cov"><a href="/kb/tcr/t-1-2">T-1-2</a><br>AI 검색·GEO 노출<br><span class="meta">솔루션 3건</span></td><td class="cov"><a href="/kb/tcr/t-1-3">T-1-3</a><br>유입·행동 데이터 수집<br><span class="meta">솔루션 5건</span></td><td class="cov"><a href="/kb/tcr/t-1-4">T-1-4</a><br>유입 채널 구조 분석<br><span class="meta">솔루션 1건</span></td></tr><tr><th>C 전환</th><td class="cov"><a href="/kb/tcr/c-2-1">C-2-1</a><br>매체 운영·입찰 최적화<br><span class="meta">솔루션 5건</span></td><td class="cov"><a href="/kb/tcr/c-2-2">C-2-2</a><br>전환 신호 전송<br><span class="meta">솔루션 4건</span></td><td class="cov"><a href="/kb/tcr/c-2-3">C-2-3</a><br>콘텐츠·소재 전환력<br><span class="meta">솔루션 8건</span></td><td class="cov"><a href="/kb/tcr/c-2-4">C-2-4</a><br>온사이트 전환 개입<br><span class="meta">솔루션 3건</span></td></tr><tr><th>R 관계·재구매</th><td class="cov"><a href="/kb/tcr/r-3-1">R-3-1</a><br>재방문 유도<br><span class="meta">솔루션 3건</span></td><td class="cov"><a href="/kb/tcr/r-3-2">R-3-2</a><br>측정 정합성 유지<br><span class="meta">솔루션 7건</span></td><td class="cov"><a href="/kb/tcr/r-3-3">R-3-3</a><br>고객 관계 심화·커뮤니티<br><span class="meta">솔루션 1건</span></td><td class="cov"><a href="/kb/tcr/r-3-4">R-3-4</a><br>재구매·LTV 자동화<br><span class="meta">솔루션 3건</span></td></tr><tr><th>O 최적화·확장</th><td class="cov"><a href="/kb/tcr/o-x-1">O-X-1</a><br>성과 원인 분석<br><span class="meta">솔루션 6건</span></td><td class="cov"><a href="/kb/tcr/o-x-2">O-X-2</a><br>예산·자원 재배분<br><span class="meta">솔루션 5건</span></td><td class="cov"><a href="/kb/tcr/o-x-3">O-X-3</a><br>리포팅 자동화<br><span class="meta">솔루션 7건</span></td><td class="cov"><a href="/kb/tcr/o-x-4">O-X-4</a><br>데이터 개방·AI 연동<br><span class="meta">솔루션 7건</span></td></tr></tbody></table>
435<h2 id="s-0-한-줄-정의">한 줄 정의</h2>
436<p>TCR은 고객 여정을 T(발견·트래픽)·C(전환)·R(관계·재구매)·O(최적화·확장) 4단계 16개 활동으로 나눠 마케팅 공백을 진단하는 비즈스프링의 프레임워크입니다.</p>
437<h2 id="s-1-t-발견-트래픽">T — 발견·트래픽</h2>
438<p>브랜드가 발견되고 방문이 만들어지는 단계. 검색·AI 답변·콘텐츠·매체를 통한 유입 확보와 유입 데이터 수집을 다룹니다.</p>
439<ul>
440<li><a href="/kb/tcr/t-1-1">T-1-1 브랜드 지식 자산화</a> — 브랜드 정보가 흩어져 있어 검색·AI가 무엇을 인용해야 할지 모릅니다.</li>
441<li><a href="/kb/tcr/t-1-2">T-1-2 AI 검색·GEO 노출</a> — ChatGPT·Perplexity 답변에 우리 브랜드가 등장하지 않습니다.</li>
442<li><a href="/kb/tcr/t-1-3">T-1-3 유입·행동 데이터 수집</a> — 유입과 행동 데이터를 내부에 남기지 못해 분석 기반이 없습니다.</li>
443<li><a href="/kb/tcr/t-1-4">T-1-4 유입 채널 구조 분석</a> — 어떤 채널이 실제로 좋은 방문을 데려오는지 구분되지 않습니다.</li>
444</ul>
445<h2 id="s-2-c-전환">C — 전환</h2>
446<p>방문이 실제 행동(구매·상담·가입)으로 이어지는 단계. 매체 운영, 소재, 온사이트 개입, 전환 전송을 다룹니다.</p>
447<ul>
448<li><a href="/kb/tcr/c-2-1">C-2-1 매체 운영·입찰 최적화</a> — 입찰과 예산 배분이 감으로 이뤄져 낭비가 발생합니다.</li>
449<li><a href="/kb/tcr/c-2-2">C-2-2 전환 신호 전송</a> — 추적 차단으로 전환이 매체에 전달되지 않아 학습이 망가집니다.</li>
450<li><a href="/kb/tcr/c-2-3">C-2-3 콘텐츠·소재 전환력</a> — 소재와 콘텐츠가 전환을 설득하지 못합니다.</li>
451<li><a href="/kb/tcr/c-2-4">C-2-4 온사이트 전환 개입</a> — 방문자가 아무 행동 없이 이탈하는데 개입 수단이 없습니다.</li>
452</ul>
453<h2 id="s-3-r-관계-재구매">R — 관계·재구매</h2>
454<p>한 번의 전환을 반복 거래와 LTV로 확장하는 단계. 재방문 설계, 측정 정합성, CRM 자동화를 다룹니다.</p>
455<ul>
456<li><a href="/kb/tcr/r-3-1">R-3-1 재방문 유도</a> — 첫 구매 이후 다시 오게 만드는 설계가 없습니다.</li>
457<li><a href="/kb/tcr/r-3-2">R-3-2 측정 정합성 유지</a> — 전환 추적이 자꾸 깨져 리포트를 믿을 수 없습니다.</li>
458<li><a href="/kb/tcr/r-3-3">R-3-3 고객 관계 심화·커뮤니티</a> — 고객과의 지속적 관계를 만드는 접점이 부족합니다.</li>
459<li><a href="/kb/tcr/r-3-4">R-3-4 재구매·LTV 자동화</a> — 재구매 캠페인이 수작업이라 시점을 놓칩니다.</li>
460</ul>
461<h2 id="s-4-o-최적화-확장">O — 최적화·확장</h2>
462<p>전 단계를 데이터로 최적화하고 AI·API로 확장하는 단계. 분석 자동화, 리포팅, 데이터 개방을 다룹니다.</p>
463<ul>
464<li><a href="/kb/tcr/o-x-1">O-X-1 성과 원인 분석</a> — 지표가 왜 변했는지 즉시 설명하지 못합니다.</li>
465<li><a href="/kb/tcr/o-x-2">O-X-2 예산·자원 재배분</a> — 채널 간 예산 이동 판단 근거가 없습니다.</li>
466<li><a href="/kb/tcr/o-x-3">O-X-3 리포팅 자동화</a> — 보고서 제작에 매주 수십 시간을 씁니다.</li>
467<li><a href="/kb/tcr/o-x-4">O-X-4 데이터 개방·AI 연동</a> — 데이터를 AI 에이전트와 사내 시스템이 쓰지 못합니다.</li>
468</ul>
469<h2 id="s-5-커버리지-히트맵-읽는-법">커버리지 히트맵 읽는 법</h2>
470<p>각 활동은 성공 지표가 정기적으로 측정되고 실행 주기가 정해져 있을 때만 '커버됨'으로 봅니다. 현재 비즈스프링 솔루션 포트폴리오는 16개 활동을 모두 표준 솔루션으로 커버합니다.</p>
471<h2 id="s-6-관련-문서">관련 문서</h2>
472<ul>
473<li><a href="/kb/solutions">솔루션 카탈로그</a></li>
474<li><a href="/kb/glossary/tcr">용어: TCR</a></li>
475</ul>
476<h2 id="faq">자주 묻는 질문</h2><h3>TCR은 무엇의 약자인가요?</h3><p>Traffic(발견), Conversion(전환), Relationship(관계), Optimization(최적화·확장)입니다.</p><h3>활동은 몇 개인가요?</h3><p>4단계 × 4개, 총 16개 활동입니다.</p>
477<h2 id="related">관련 문서</h2><ul><li><a href="/kb/tcr/t-1-1">T-1-1 브랜드 지식 자산화 — TCR 활동</a> — <span class="meta">브랜드 정보가 흩어져 있어 검색·AI가 무엇을 인용해야 할지 모릅니다.</span></li><li><a href="/kb/tcr/t-1-2">T-1-2 AI 검색·GEO 노출 — TCR 활동</a> — <span class="meta">ChatGPT·Perplexity 답변에 우리 브랜드가 등장하지 않습니다.</span></li><li><a href="/kb/tcr/t-1-3">T-1-3 유입·행동 데이터 수집 — TCR 활동</a> — <span class="meta">유입과 행동 데이터를 내부에 남기지 못해 분석 기반이 없습니다.</span></li><li><a href="/kb/tcr/t-1-4">T-1-4 유입 채널 구조 분석 — TCR 활동</a> — <span class="meta">어떤 채널이 실제로 좋은 방문을 데려오는지 구분되지 않습니다.</span></li><li><a href="/kb/tcr/c-2-1">C-2-1 매체 운영·입찰 최적화 — TCR 활동</a> — <span class="meta">입찰과 예산 배분이 감으로 이뤄져 낭비가 발생합니다.</span></li><li><a href="/kb/tcr/c-2-2">C-2-2 전환 신호 전송 — TCR 활동</a> — <span class="meta">추적 차단으로 전환이 매체에 전달되지 않아 학습이 망가집니다.</span></li><li><a href="/kb/tcr/c-2-3">C-2-3 콘텐츠·소재 전환력 — TCR 활동</a> — <span class="meta">소재와 콘텐츠가 전환을 설득하지 못합니다.</span></li><li><a href="/kb/tcr/c-2-4">C-2-4 온사이트 전환 개입 — TCR 활동</a> — <span class="meta">방문자가 아무 행동 없이 이탈하는데 개입 수단이 없습니다.</span></li><li><a href="/kb/tcr/r-3-1">R-3-1 재방문 유도 — TCR 활동</a> — <span class="meta">첫 구매 이후 다시 오게 만드는 설계가 없습니다.</span></li><li><a href="/kb/tcr/r-3-2">R-3-2 측정 정합성 유지 — TCR 활동</a> — <span class="meta">전환 추적이 자꾸 깨져 리포트를 믿을 수 없습니다.</span></li><li><a href="/kb/tcr/r-3-3">R-3-3 고객 관계 심화·커뮤니티 — TCR 활동</a> — <span class="meta">고객과의 지속적 관계를 만드는 접점이 부족합니다.</span></li><li><a href="/kb/tcr/r-3-4">R-3-4 재구매·LTV 자동화 — TCR 활동</a> — <span class="meta">재구매 캠페인이 수작업이라 시점을 놓칩니다.</span></li><li><a href="/kb/tcr/o-x-1">O-X-1 성과 원인 분석 — TCR 활동</a> — <span class="meta">지표가 왜 변했는지 즉시 설명하지 못합니다.</span></li><li><a href="/kb/tcr/o-x-2">O-X-2 예산·자원 재배분 — TCR 활동</a> — <span class="meta">채널 간 예산 이동 판단 근거가 없습니다.</span></li><li><a href="/kb/tcr/o-x-3">O-X-3 리포팅 자동화 — TCR 활동</a> — <span class="meta">보고서 제작에 매주 수십 시간을 씁니다.</span></li><li><a href="/kb/tcr/o-x-4">O-X-4 데이터 개방·AI 연동 — TCR 활동</a> — <span class="meta">데이터를 AI 에이전트와 사내 시스템이 쓰지 못합니다.</span></li><li><a href="/kb/solutions">
477비즈스프링 솔루션 카탈로그</a> — <span class="meta">패키지·솔루션·단위솔루션·레퍼런스로 구성된 비즈스프링 전체 솔루션 카탈로그입니다.</span></li><li><a href="/kb/glossary/tcr">TCR 프레임워크</a> — <span class="meta">고객 여정을 T(발견)·C(전환)·R(관계)·O(최적화) 4단계 16개 활동으로 나눠 솔루션 공백을 진단하는 비즈스프링의 프레임워크입니다.</span></li></ul>
478  <h2 id="backlinks">이 문서를 참조하는 문서 (역링크)</h2><ul><li><a href="/kb/industries/clinic">병의원·치과·한의원 마케팅 솔루션</a> — <span class="meta">지역 검색과 AI 추천에서 발견되고, 상담·예약 전환까지 이어지도록 설계하는 의료기관 마케팅입니다.</span></li><li><a href="/kb/industries/brand">브랜드기업 마케팅 솔루션</a> — <span class="meta">브랜드 지식을 자산화해 AI 검색에서 인용되고 전 채널 성과를 하나의 기준으로 관리합니다.</span></li><li><a href="/kb/industries/agency">광고대행사 마케팅 솔루션</a> — <span class="meta">광고주 수십 곳의 운영·리포트·정산을 자동화해 대행사의 수익 구조를 개선합니다.</span></li><li><a href="/kb/industries/d2c">D2C 이커머스 마케팅 솔루션</a> — <span class="meta">신규 획득 비용 상승 국면에서 재구매와 LTV로 수익 구조를 만드는 D2C 성장 설계입니다.</span></li><li><a href="/kb/tcr/r-3-1">R-3-1 재방문 유도 — TCR 활동</a> — <span class="meta">첫 구매 이후 다시 오게 만드는 설계가 없습니다.</span></li><li><a href="/kb/glossary">비즈스프링 용어사전</a> — <span class="meta">GEO·AI·데이터·애드테크 등 마케팅 업계 용어를 정의하고 대응 상품을 안내하는 용어사전입니다.</span></li><li><a href="/kb/industries/telecom">통신 마케팅 솔루션</a> — <span class="meta">대규모 트래픽과 복잡한 상품 구조에서 행동 데이터를 통합해 이탈을 방지합니다.</span></li><li><a href="/kb/industries/cafe24">Cafe24 입점몰 마케팅 솔루션</a> — <span class="meta">Cafe24 기반 쇼핑몰에 태깅·피드·전환추적을 빠르게 붙여 광고 성과를 정상화합니다.</span></li><li><a href="/kb/cases/intranet-private-ad-system">폐쇄형 사내 시스템 A사 — 인트라넷 광고 운영 전용 시스템 구축</a> — <span class="meta">입점사 광고를 수기로 판매·정산하던 국내 대형 폐쇄형 사내 시스템 운영사에 셀프서브 광고 등록부터 정산까지 처리하는 전용 광고 운영 시스템을 구축한 사례입니다.</span></li><li><a href="/kb/solutions">비즈스프링 솔루션 카탈로그</a> — <span class="meta">패키지·솔루션·단위솔루션·레퍼런스로 구성된 비즈스프링 전체 솔루션 카탈로그입니다.</span></li><li><a href="/kb/faq">비즈스프링 자주 묻는 질문</a> — <span class="meta">비즈스프링 솔루션·TCR 프레임워크·GEO에 대한 질문과 답변 아카이브입니다.</span></li><li><a href="/kb/usecases/inhouse-behavior-log">행동로그를 인하우스로 직접 수집하기</a> — <span class="meta">외부 분석 도구 의존을 줄이고 원천 행동 데이터를 자산으로 축적하는 시나리오입니다.</span></li><li><a href="/kb/usecases/report-20-hours">광고 리포트에 매주 20시간 쓰는 대행사</a> — <span class="meta">매체 취합·검산·배포를 자동화해 리포트 시간을 1시간 수준으로 줄이는 시나리오입니다.</span></li><li><a href="/kb/industries/education">교육 마케팅 솔루션</a> — <span class="meta">상담·수강신청까지의 긴 검토 여정을 콘텐츠와 자동화로 관리합니다.</span></li><li><a href="/kb/tcr/c-2-1">C-2-1 매체 운영·입찰 최적화 — TCR 활동</a> — <span class="meta">입찰과 예산 배분이 감으로 이뤄져 낭비가 발생합니다.</span></li><li><a href="/kb/industries/finance">금융·증권 마케팅 솔루션</a> — <span class="meta">규제 환경에서 퍼스트파티 데이터로 안전하게 측정하고 전환을 최적화하는 금융권 마케팅입니다.</span></li><li><a href="/kb/tcr/c-2-2">C-2-2 전환 신호 전송 — TCR 활동</a> — <span class="meta">추적 차단으로 전환이 매체에 전달되지 않아 학습이 망가집니다.</span></li><li><a href="/kb/usecases/ai-answer-invisible">ChatGPT 답변에 우리 브랜드가 안 나올 때</a> — <span class="meta">생성형 검색 답변에서 브랜드가 누락되는 원인을 진단하고 인용 가능한 구조로 전환하는 시나리오입니다.</span></li><li><a href="/kb/usecases/broken-conversion-tracking">전환 추적이 자꾸 깨질 때</a> — <span class="meta">브라우저 정책 변화와 태그 유실로 인한 전환 누락을 구조적으로 해결하는 시나리오입니다.</span></li><li><a href="/kb/usecases/repurchase-ltv">재구매율과 LTV를 올리고 싶을 때</a> — <span class="meta">첫 구매 이후 90일을 설계해 재구매율과 고객생애가치를 끌어올리는 시나리오입니다.</span></li><li><a href="/kb/tcr/c-2-3">C-2-3 콘텐츠·소재 전환력 — TCR 활동</a> — <span class="meta">소재와 콘텐츠가 전환을 설득하지 못합니다.</span></li><li><a href="/kb/tcr/c-2-4">C-2-4 온사이트 전환 개입 — TCR 활동</a> — <span class="meta">방문자가 아무 행동 없이 이탈하는데 개입 수단이 없습니다.</span></li><li><a href="/kb/tcr/o-x-1">O-X-1 성과 원인 분석 — TCR 활동</a> — <span class="meta">지표가 왜 변했는지 즉시 설명하지 못합니다.</span></li><li><a href="/kb/tcr/o-x-2">O-X-2 예산·자원 재배분 — TCR 활동</a> — <span class="meta">채널 간 예산 이동 판단 근거가 없습니다.</span></li><li><a href="/kb/tcr/o-x-3">O-X-3 리포팅 자동화 — TCR 활동</a> — <span class="meta">보고서 제작에 매주 수십 시간을 씁니다.</span></li><li><a href="/kb/tcr/t-1-3">T-1-3 유입·행동 데이터 수집 — TCR 활동</a> — <span class="meta">유입과 행동 데이터를 내부에 남기지 못해 분석 기반이 없습니다.</span></li><li><a href="/kb/tcr/t-1-4">T-1-4 유입 채널 구조 분석 — TCR 활동</a> — <span class="meta">어떤 채널이 실제로 좋은 방문을 데려오는지 구분되지 않습니다.</span></li><li><a href="/kb/tcr/o-x-4">O-X-4 데이터 개방·AI 연동 — TCR 활동</a> — <span class="meta">데이터를 AI 에이전트와 사내 시스템이 쓰지 못합니다.</span></li><li><a href="/kb/tcr/r-3-2">R-3-2 측정 정합성 유지 — TCR 활동</a> — <span class="meta">전환 추적이 자꾸 깨져 리포트를 믿을 수 없습니다.</span></li><li><a href="/kb/tcr/r-3-3">R-3-3 고객 관계 심화·커뮤니티 — TCR 활동</a> — <span class="meta">고객과의 지속적 관계를 만드는 접점이 부족합니다.</span></li><li><a href="/kb/tcr/r-3-4">R-3-4 재구매·LTV 자동화 — TCR 활동</a> — <span class="meta">재구매 캠페인이 수작업이라 시점을 놓칩니다.</span></li><li><a href="/kb/tcr/t-1-1">T-1-1 브랜드 지식 자산화 — TCR 활동</a> — <span class="meta">브랜드 정보가 흩어져 있어 검색·AI가 무엇을 인용해야 할지 모릅니다.</span></li><li><a href="/kb/tcr/t-1-2">T-1-2 AI 검색·GEO 노출 — TCR 활동</a> — <span class="meta">ChatGPT·Perplexity 답변에 우리 브랜드가 등장하지 않습니다.</span></li><li><a href="/kb/usecases/ai-agent-on-data">AI 에이전트가 우리 데이터를 쓰게 하기</a> — <span class="meta">사내 마케팅 데이터를 AI 에이전트가 안전하게 조회·활용하도록 개방하는 시나리오입니다.</span></li></ul>
479<p class="meta">
479이 문서의 다른 표현: <a href="/kb/tcr.md">Markdown</a> · <a href="/api/kb/tcr">JSON</a></p></main>
480  <aside class="toc"><h3>목차</h3><a href="#matrix" style="padding-left:0px">커버리지 히트맵</a><a href="#s-0-한-줄-정의" style="padding-left:0px">한 줄 정의</a><a href="#s-1-t-발견-트래픽" style="padding-left:0px">T — 발견·트래픽</a><a href="#s-2-c-전환" style="padding-left:0px">C — 전환</a><a href="#s-3-r-관계-재구매" style="padding-left:0px">R — 관계·재구매</a><a href="#s-4-o-최적화-확장" style="padding-left:0px">O — 최적화·확장</a><a href="#s-5-커버리지-히트맵-읽는-법" style="padding-left:0px">커버리지 히트맵 읽는 법</a><a href="#s-6-관련-문서" style="padding-left:0px">관련 문서</a></aside>
481</div>
482<footer>
483  <div class="copy">
484    <p style="margin:0 0 8px">이 문서는 서버에서 완성된 HTML로 제공되며 <a href="/llms.txt">llms.txt</a>, <a href="/llms-full.txt">llms-full.txt</a>, <a href="/sitemap.xml">sitemap.xml</a>, <a href="/feed.xml">RSS</a>로도 접근할 수 있습니다.</p>
485    <p style="margin:0"><button type="button" id="ui-contact-2" class="chip">문의하기</button></p>
486    <p style="margin:8px 0 0">© 2026 BizSpring Inc. × Entrench Consulting Inc.</p>
487    <p style="margin:6px 0 0"><button type="button" id="ui-privacy" class="linkish">개인정보처리방침</button></p>
488  </div>
489</footer>
490<div class="cdlg" id="ui-contact-dialog" role="dialog" aria-modal="true" aria-label="문의하기">
491  <div class="cdlg-box">
492    <button type="button" class="cdlg-x" data-cdlg-close aria-label="닫기">&#10005;</button>
493    <h2>문의하기</h2>
494    <p class="sub">담당자가 확인하고 회신드립니다. 지금까지 보신 페이지가 함께 전달됩니다.</p>
495    <form id="ui-contact-form" novalidate>
496      <p class="err" id="ui-contact-err" hidden></p>
497      <div class="row"><label><input name="name" required maxlength="80" placeholder="이름 *"></label><label><input name="company" maxlength="120" placeholder="회사명"></label></div>
498      <div class="row"><label><input name="email" type="email" required maxlength="160" placeholder="이메일 *"></label><label><input name="phone" maxlength="40" placeholder="연락처"></label></div>
499      <label><textarea name="message" rows="4" maxlength="4000" placeholder="어떤 점이 궁금하신가요?"></textarea></label>
500      <button type="submit" class="send">보내기</button>
501      <p class="note">보내주신 이름·이메일과 회사명·연락처는 문의 응대 목적으로만 쓰고, 상담 완료 후 1년 뒤 삭제합니다. 담당자가 맥락을 알고 회신할 수 있도록, 직전까지 나눈 대화 요약과 보신 문서 목록이 함께 전달됩니다.<br><button type="button" id="ui-privacy-2" class="linkish">개인정보처리방침 보기</button></p>
502    </form>
503    <div id="ui-contact-done" hidden>
504      <p style="font-size:.875rem;color:var(--fg)">문의가 접수되었습니다.</p>
505      <p style="font-size:.8125rem;color:var(--muted)">영업일 기준 1~2일 내에 회신드립니다.</p>
506      <button type="button" class="send" data-cdlg-close style="margin-top:12px">닫기</button>
507    </div>
508  </div>
509</div>
510<div class="cdlg" id="ui-privacy-dialog" role="dialog" aria-modal="true" aria-label="개인정보처리방침">
511  <div class="cdlg-box pdlg-box">
512    <button type="button" class="cdlg-x" data-cdlg-close aria-label="닫기">&#10005;</button>
513    <h2>개인정보처리방침</h2>
514    <p class="sub">bizspring.ai · 시행일 2026-09-02</p>
515    <h3>1. 수집하는 개인정보와 목적</h3><p>㈜비즈스프링(이하 "회사")은 bizspring.ai 에서 아래 정보를 수집합니다. 법령에 따른 경우를 빼면, 적어 주신 목적 외로는 쓰지 않습니다.</p>
516<ul>
517  <li><strong>문의하기</strong>: 이름·이메일(필수), 회사명·연락처·문의 내용(선택). 문의 응대와 상담 진행에 씁니다. 문의를 보내실 때 직전까지 나눈 대화 요약과 보신 문서 목록이 함께 담겨, 담당자가 맥락을 알고 회신할 수 있게 합니다.</li>
518  <li><strong>AI 상담 대화</strong>: 주고받은 대화 내용과 접속 환경(국가·지역·도시·기기·운영체제·브라우저). 답변 품질 개선과 오류 확인에 씁니다. <strong>IP 주소는 저장하지 않습니다.</strong> 다만 자동화된 대량 호출을 막기 위해, 접속 IP 를 되돌릴 수 없는 값으로 바꾼 뒤 그 값만 <strong>2시간</strong> 동안 세는 데 씁니다. 그 값으로는 개인을 알아볼 수 없으며 2시간이 지나면 자동 삭제됩니다.</li>
519  <li><strong>대화 내보내기</strong>: 받으실 이메일 주소. 요청하신 대화 내용을 보내 드리는 데만 씁니다.</li>
520</ul>
521<p>회원가입은 없습니다. 주민등록번호를 비롯한 고유식별정보와 민감정보는 수집하지 않으니, 대화창에도 적지 말아 주세요.</p><h3>2. 보유 기간</h3><ul>
522  <li><strong>AI 상담 대화</strong>: 방문자가 다시 열어볼 수 있는 기간은 마지막 대화로부터 <strong>24시간</strong>이며, 대화를 시작한 그 브라우저에서만 열립니다. 대화 주소를 다른 사람에게 보내도 그 사람에게는 보이지 않습니다. 회
522사 내부에는 응답 품질 점검을 위해 <strong>60일</strong>까지 보관하고, 그 뒤 자동 삭제합니다.</li>
523  <li><strong>문의 정보</strong>: 상담 완료 후 <strong>1년</strong> 뒤 자동 삭제합니다.</li>
524  <li>관계 법령에 따라 보관해야 하는 경우에는 그 법령이 정한 기간을 따릅니다.</li>
525</ul><h3>3. 처리 위탁</h3><p>서비스 제공에 필요한 범위에서 아래 업체에 처리를 맡기고 있습니다.</p>
526<ul>
527  <li><strong>OpenAI, Anthropic</strong>: AI 응답 생성. 대화 내용이 전달됩니다.</li>
528  <li><strong>Resend</strong>: 문의 알림과 대화 내보내기 메일 발송.</li>
529  <li><strong>Supabase, Cloudflare</strong>: 데이터 보관과 서비스 운영.</li>
530</ul>
531<p>위 업체들은 국외에 서버를 두고 있어, 처리 과정에서 개인정보가 국외로 이전될 수 있습니다. 이전되는 항목과 목적은 위에 적은 것과 같습니다.</p><h3>4. 이용자의 권리</h3><p>언제든지 본인의 개인정보에 대해 열람·정정·삭제·처리정지를 요구하실 수 있습니다. 아래 연락처로 알려 주시면 지체 없이 처리하고 결과를 알려 드립니다. 상담 대화는 새 대화를 시작하시면 화면에서 바로 지워집니다.</p><h3>5. 개인정보 보호책임자</h3><p>성명 구자훈 (대표이사) · 이메일 <a href="mailto:[email protected]">[email protected]</a> · 전화 02-6919-5516</p>
532<p>개인정보 침해로 도움이 필요하시면 개인정보침해신고센터(privacy.kisa.or.kr, 국번없이 118)에 문의하실 수 있습니다.</p><h3>6. 변경 안내</h3><p>이 방침이 바뀌면 시행일과 함께 이 화면에서 알려 드립니다. 현재 시행일은 2026-09-02 입니다.</p>
533    <button type="button" class="send" data-cdlg-close style="margin-top:16px">확인</button>
534  </div>
535</div>
536<script>(function(){
537var d=document.documentElement;
538
539var isDark=function(){
540var m=localStorage.getItem('bizspring-theme')||'auto';
541if(m==='light') return false;
542if(m==='dark') return true;
543if(m==='system') return !(window.matchMedia&&window.matchMedia('(prefers-color-scheme: light)').matches);
544var n=new Date(),tz=-n.getTimezoneOffset()/60,lon=tz*15,lat=37.5,rad=Math.PI/180;
545var doy=Math.floor((Date.UTC(n.getFullYear(),n.getMonth(),n.getDate())-Date.UTC(n.getFullYear(),0,0))/864e5);
546var g=2*Math.PI/365*(doy-1);
547var eq=229.18*(75e-6+.001868*Math.cos(g)-.032077*Math.sin(g)-.014615*Math.cos(2*g)-.040849*Math.sin(2*g));
548var de=.006918-.399912*Math.cos(g)+.070257*Math.sin(g)-.006758*Math.cos(2*g)+9.07e-4*Math.sin(2*g)-.002697*Math.cos(3*g)+.00148*Math.sin(3*g);
549var la=lat*rad,ch=Math.cos(90.833*rad)/(Math.cos(la)*Math.cos(de))-Math.tan(la)*Math.tan(de);
550if(ch>1) return true;
551if(ch<-1) return false;
552var ha=Math.acos(ch)/rad;
553var sr=((720-4*(lon+ha)-eq)/60+tz+24)%24, ss=((720-4*(lon-ha)-eq)/60+tz+24)%24;
554var h=n.getHours()+n.getMinutes()/60;
555return !(h>=sr&&h<ss);
556};
557function save(k,v){try{localStorage.setItem(k,v)}catch(e){}}
558function mode(){try{var m=localStorage.getItem('bizspring-theme');
559  return ['light','dark','system','auto'].indexOf(m)>=0?m:'auto'}catch(e){return 'auto'}}
560function font(){return d.getAttribute('data-font')||'md';}
561function fontFamily(){return d.getAttribute('data-font-family')||'sans';}
562
563function applyTheme(){
564  var dark=isDark();
565  d.classList.toggle('light',!dark);
566  d.style.colorScheme=dark?'dark':'light';
567}
568
569/**
570 * 동그란 버튼 하나 + 드롭다운. 대화 화면의 IconMenu 와 같은 동작이다.
571 * 지금 값을 읽는 함수와 값을 적용하는 함수만 갈아 끼우면 테마·글자크기 모두 이걸 쓴다.
572 */
573function wire(id, getValue, setValue){
574  var root=document.getElementById(id);
575  if(!root) return;
576  var btn=root.querySelector('[data-menu-trigger]');
577  var list=root.querySelector('[data-menu-list]');
578  if(!btn||!list) return;
579
580  function paint(){
581    var v=getValue();
582    [].slice.call(list.querySelectorAll('[data-value]')).forEach(function(el){
583      var on=el.getAttribute('data-value')===v;
584      el.setAttribute('aria-checked',on?'true':'false');
585    });
586    var cur=list.querySelector('[data-value="'+v+'"]');
587    var icon=cur?cur.querySelector('[data-menu-icon]'):null;
588    if(icon) btn.innerHTML=icon.innerHTML;
589    var label=cur?(cur.getAttribute('data-label')||''):'';
590    btn.setAttribute('aria-label',root.getAttribute('data-label')+': '+label+'. 눌러서 변경');
591    btn.title=root.getAttribute('data-label')+': '+label;
592  }
593  function close(){ list.hidden=true; btn.setAttribute('aria-expanded','false'); }
594  function open(){ list.hidden=false; btn.setAttribute('aria-expanded','true'); }
595
596  btn.addEventListener('click',function(e){
597    e.stopPropagation();
598    if(list.hidden) open(); else close();
599  });
600  list.addEventListener('click',function(e){
601    var t=e.target.closest('[data-value]');
602    if(!t) return;
603    setValue(t.getAttribute('data-value'));
604    paint(); close();
605  });
606  document.addEventListener('click',function(e){ if(!root.contains(e.target)) close(); });
607  document.addEventListener('keydown',function(e){ if(e.key==='Escape') close(); });
608  paint();
609}
610
611/**
612 * wire() 의 여러-묶음 버전. 한 팝업 안에 값이 둘(크기·모양) 있고, 항목마다
613 * data-group 으로 어느 묶음인지 표시돼 있다 — 그 묶음의 getValue/setValue 만 건드린다.
614 */
615function wireMulti(id, groups){
616  var root=document.getElementById(id);
617  if(!root) return;
618  var btn=root.querySelector('[data-menu-trigger]');
619  var list=root.querySelector('[data-menu-list]');
620  if(!btn||!list) return;
621  var byGroup={};
622  groups.forEach(function(g){ byGroup[g.group]=g; });
623
624  function paint(){
625    var labels=[];
626    groups.forEach(function(g){
627      var v=g.getValue();
628      [].slice.call(list.querySelectorAll('[data-group="'+g.group+'"]')).forEach(function(el){
629        el.setAttribute('aria-checked', el.getAttribute('data-value')===v?'true':'false');
630      });
631      var cur=list.querySelector('[data-group="'+g.group+'"][data-value="'+v+'"]');
632      if(cur) labels.push(cur.getAttribute('data-label')||'');
633    });
634    var sizeVal=byGroup.size?byGroup.size.getValue():null;
635    var familyVal=byGroup.family?byGroup.family.getValue():null;
636    var sizeEl=sizeVal?list.querySelector('[data-group="size"][data-value="'+sizeVal+'"]'):null;
637    var familyEl=familyVal?list.querySelector('[data-group="family"][data-value="'+familyVal+'"]'):null;
638    if(sizeEl){
639      var icon=sizeEl.querySelector('[data-menu-icon]');
640      if(icon){
641        btn.innerHTML=icon.innerHTML;
642        var span=btn.querySelector('span');
643        if(span&&familyEl) span.style.fontFamily=familyEl.getAttribute('data-fontcss')||'';
644      }
645    }
646    var lbl=root.getAttribute('data-label')+': '+labels.join(' · ');
647    btn.setAttribute('aria-label',lbl+'. 눌러서 변경');
648    btn.title=lbl;
649  }
650  function close(){ list.hidden=true; btn.setAttribute('aria-expanded','false'); }
651  function open(){ list.hidden=false; btn.setAttribute('aria-expanded','true'); }
652
653  btn.addEventListener('click',function(e){
654    e.stopPropagation();
655    if(list.hidden) open(); else close();
656  });
657  list.addEventListener('click',function(e){
658    var t=e.target.closest('[data-value]');
659    if(!t) return;
660    var g=byGroup[t.getAttribute('data-group')];
661    if(!g) return;
662    g.setValue(t.getAttribute('data-value'));
663    paint(); close();
664  });
665  document.addEventListener('click',function(e){ if(!root.contains(e.target)) close(); });
666  document.addEventListener('keydown',function(e){ if(e.key==='Escape') close(); });
667  paint();
668}
669
670applyTheme();
671wire('ui-theme', mode, function(v){ save('bizspring-theme',v); applyTheme(); });
672wireMulti('ui-font', [
673  { group:'size', getValue: font, setValue: function(v){ d.setAttribute('data-font',v); save('bsw-font',v); } },
674  { group:'family', getValue: fontFamily, setValue: function(v){ d.setAttribute('data-font-family',v); save('bsw-font-family',v); } },
675]);
676
677// 자동 모드는 일출·일몰 기준이라 시간이 지나면 스스로 바뀌어야 한다.
678setInterval(function(){ if(mode()==='auto') applyTheme(); },60000);
679
680// 지식센터 열람 기록. 문의 메일에 붙일 맥락으로 대화 화면과 같은 저장소를 쓴다.
681try{
682  var K='bsw-trail';
683  var list2=JSON.parse(localStorage.getItem(K)||'[]');
684  var title=(document.title||location.pathname).split('|')[0].trim();
685  var v2=title+' ('+location.pathname+')';
686  var last=list2[list2.length-1];
687  if(!(last&&last.kind==='page'&&last.value===v2)){
688    list2.push({kind:'page',value:v2.slice(0,300),at:new Date().toISOString()});
689    localStorage.setItem(K,JSON.stringify(list2.slice(-30)));
690  }
691}catch(e){}
692
693/**
694 * 좌상단 전환 스위치 — 왔던 곳으로 되돌려 보낸다.
695 *
696 * 서버는 지금 문서와 가장 가까운 본사 페이지를 미리 넣어 두었다. 여기서는
697 * 그보다 나은 것이 있으면(본사에서 넘어온 기록) 그걸로 바꾼다. 기록은
698 * 브라우저만 아는 것이라 서버가 알 수 없다.
699 *
700 * 대화 화면의 lib/corp-origin.ts 와 같은 키를 쓴다 — 두 화면을 오가도 같은
701 * 기록을 본다. 한쪽 키를 바꾸면 다른 쪽도 바꿔야 한다.
702 */
703try{
704  var CORP_KEY='bsw-corp-origin';
705  var saved=null;
706  try{ saved=JSON.parse(sessionStorage.getItem(CORP_KEY)||'null'); }catch(e){}
707  if(!saved && document.referrer){
708    try{
709      var ru=new URL(document.referrer);
710      if(ru.hostname.toLowerCase().replace(/^www[.]/,'')==='bizspring.co.kr'){
711        saved={url:ru.href,label:'보시던 페이지'};
712        sessionStorage.setItem(CORP_KEY,JSON.stringify(saved));
713      }
714    }catch(e){}
715  }
716  var sw=document.getElementById('ui-siteswitch');
717  if(sw&&saved&&saved.url){
718    sw.setAttribute('href',saved.url);
719    sw.setAttribute('title','AI 모드가 켜져 있습니다. 끄면 '+(saved.label||'보시던 페이지')+'(bizspring.co.kr) 페이지로 돌아갑니다');
720  }
721}catch(e){}
722
723/**
724 * 문의는 이 페이지에서 끝난다. 예전에는 /?contact=1 로 넘겨서 대화 화면을 새로 띄웠는데,
725 * 문의 버튼을 눌렀을 뿐인데 보던 문서에서 튕겨 나가는 셈이라 이상했다.
726 */
727var dlg=document.getElementById('ui-contact-dialog');
728function closeContact(){ if(dlg) dlg.setAttribute('data-open','0'); }
729function openContact(){
730  if(!dlg){ window.location.href='/?contact=1'; return; }
731  dlg.setAttribute('data-open','1');
732  var first=dlg.querySelector('input[name=name]');
733  if(first) first.focus();
734}
735['ui-contact','ui-contact-2','ui-contact-mnav'].forEach(function(id){
736  var el=document.getElementById(id);
737  if(el) el.addEventListener('click',openContact);
738});
739
740/* 개인정보처리방침도 같은 자리에서 연다 — 문의를 적다 말고 페이지를 옮기면
741   적던 내용이 날아간다. */
742var pdlg=document.getElementById('ui-privacy-dialog');
743['ui-privacy','ui-privacy-2'].forEach(function(id){
744  var el=document.getElementById(id);
745  if(el&&pdlg) el.addEventListener('click',function(){ pdlg.setAttribute('data-open','1'); });
746});
747if(pdlg){
748  pdlg.addEventListener('click',function(e){
749    if(e.target===pdlg||e.target.closest('[data-cdlg-close]')) pdlg.setAttribute('data-open','0');
750  });
751  document.addEventListener('keydown',function(e){
752    if(e.key==='Escape'&&pdlg.getAttribute('data-open')==='1') pdlg.setAttribute('data-open','0');
753  });
754}
755if(dlg){
756  dlg.addEventListener('click',function(e){
757    if(e.target===dlg||e.target.closest('[data-cdlg-close]')) closeContact();
758  });
759  document.addEventListener('keydown',function(e){
760    if(e.key==='Escape'&&dlg.getAttribute('data-open')==='1') closeContact();
761  });
762
763  var form=document.getElementById('ui-contact-form');
764  var errBox=document.getElementById('ui-contact-err');
765  var doneBox=document.getElementById('ui-contact-done');
766  form.addEventListener('submit',function(e){
767    e.preventDefault();
768    var btn=form.querySelector('.send');
769    var fd=new FormData(form);
770    var trail=[];
771    try{ trail=JSON.parse(localStorage.getItem('bsw-trail')||'[]'); }catch(e2){}
772    errBox.hidden=true;
773    btn.disabled=true; btn.textContent='보내는 중…';
774    fetch('/api/contact',{
775      method:'POST',
776      headers:{'content-type':'application/json'},
777      body:JSON.stringify({
778        name:fd.get('name')||'', company:fd.get('company')||'',
779        email:fd.get('email')||'', phone:fd.get('phone')||'',
780        message:fd.get('message')||'', trail:trail.slice(-30)
781      })
782    }).then(function(r){
783      btn.disabled=false; btn.textContent='보내기';
784      if(r.ok){ form.hidden=true; doneBox.hidden=false; return; }
785      errBox.textContent='전송에 실패했습니다. 잠시 후 다시 시도해 주세요.';
786      errBox.hidden=false;
787    }).catch(function(){
788      btn.disabled=false; btn.textContent='보내기';
789      errBox.textContent='전송에 실패했습니다. 잠시 후 다시 시도해 주세요.';
790      errBox.hidden=false;
791    });
792  });
793}
794})();</script>
794
795</body>
796</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.