로그인 시 블러조건 추가, mock데이터 추가
parent
bbb7a0de60
commit
c063399001
|
|
@ -7,6 +7,7 @@ import { SeverityBadge } from './ui/SeverityBadge';
|
||||||
import type { ChannelScore } from '../../types/report';
|
import type { ChannelScore } from '../../types/report';
|
||||||
|
|
||||||
interface ChannelOverviewProps {
|
interface ChannelOverviewProps {
|
||||||
|
blurred?: boolean;
|
||||||
channels: ChannelScore[];
|
channels: ChannelScore[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -30,9 +31,9 @@ function getChannelColor(icon: string | undefined): string | undefined {
|
||||||
return brandColor[icon?.toLowerCase() ?? ''];
|
return brandColor[icon?.toLowerCase() ?? ''];
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function ChannelOverview({ channels }: ChannelOverviewProps) {
|
export default function ChannelOverview({ channels, blurred }: ChannelOverviewProps) {
|
||||||
return (
|
return (
|
||||||
<SectionWrapper id="channel-overview" title="Channel Health Score" subtitle="채널별 건강도 종합">
|
<SectionWrapper id="channel-overview" title="Channel Health Score" subtitle="채널별 건강도 종합" blurred={blurred}>
|
||||||
<div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4">
|
<div className="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4">
|
||||||
{channels.map((ch, i) => {
|
{channels.map((ch, i) => {
|
||||||
const Icon = iconMap[ch.icon?.toLowerCase()] ?? Globe;
|
const Icon = iconMap[ch.icon?.toLowerCase()] ?? Globe;
|
||||||
|
|
|
||||||
|
|
@ -324,9 +324,9 @@ function ConsolidationCard({ text }: { text: string }) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ─── Main Component ─── */
|
/* ─── Main Component ─── */
|
||||||
export default function FacebookAudit({ data }: { data: FacebookAuditType }) {
|
export default function FacebookAudit({ data, blurred }: { data: FacebookAuditType; blurred?: boolean }) {
|
||||||
return (
|
return (
|
||||||
<SectionWrapper id="facebook-audit" title="Facebook Analysis" subtitle="페이스북 페이지 분석">
|
<SectionWrapper id="facebook-audit" title="Facebook Analysis" subtitle="페이스북 페이지 분석" blurred={blurred}>
|
||||||
{/* Page cards side by side */}
|
{/* Page cards side by side */}
|
||||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||||
{data.pages.map((page, i) => (
|
{data.pages.map((page, i) => (
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import { DiagnosisRow } from './ui/DiagnosisRow';
|
||||||
import type { InstagramAudit as InstagramAuditType, InstagramAccount } from '../../types/report';
|
import type { InstagramAudit as InstagramAuditType, InstagramAccount } from '../../types/report';
|
||||||
|
|
||||||
interface InstagramAuditProps {
|
interface InstagramAuditProps {
|
||||||
|
blurred?: boolean;
|
||||||
data: InstagramAuditType;
|
data: InstagramAuditType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -106,9 +107,9 @@ function AccountCard({ account, index }: { key?: string | number; account: Insta
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function InstagramAudit({ data }: InstagramAuditProps) {
|
export default function InstagramAudit({ data, blurred }: InstagramAuditProps) {
|
||||||
return (
|
return (
|
||||||
<SectionWrapper id="instagram-audit" title="Instagram Analysis" subtitle="인스타그램 채널 분석">
|
<SectionWrapper id="instagram-audit" title="Instagram Analysis" subtitle="인스타그램 채널 분석" blurred={blurred}>
|
||||||
{/* Account cards */}
|
{/* Account cards */}
|
||||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-6 mb-8">
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-6 mb-8">
|
||||||
{data.accounts.map((account, i) => (
|
{data.accounts.map((account, i) => (
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ import { useExportPDF } from '../../hooks/useExportPDF';
|
||||||
import type { KPIMetric } from '../../types/report';
|
import type { KPIMetric } from '../../types/report';
|
||||||
|
|
||||||
interface KPIDashboardProps {
|
interface KPIDashboardProps {
|
||||||
|
blurred?: boolean;
|
||||||
metrics: KPIMetric[];
|
metrics: KPIMetric[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -13,11 +14,11 @@ function isNegativeValue(value: string): boolean {
|
||||||
return lower === '0' || lower.includes('없음') || lower.includes('불가') || lower === 'n/a';
|
return lower === '0' || lower.includes('없음') || lower.includes('불가') || lower === 'n/a';
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function KPIDashboard({ metrics }: KPIDashboardProps) {
|
export default function KPIDashboard({ metrics, blurred }: KPIDashboardProps) {
|
||||||
const { exportPDF, isExporting } = useExportPDF();
|
const { exportPDF, isExporting } = useExportPDF();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SectionWrapper id="kpi-dashboard" title="KPI Dashboard" subtitle="핵심 성과 지표 목표">
|
<SectionWrapper id="kpi-dashboard" title="KPI Dashboard" subtitle="핵심 성과 지표 목표" blurred={blurred}>
|
||||||
{/* KPI Table */}
|
{/* KPI Table */}
|
||||||
<motion.div
|
<motion.div
|
||||||
className="rounded-2xl overflow-hidden border border-slate-100 mb-10"
|
className="rounded-2xl overflow-hidden border border-slate-100 mb-10"
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import type { OtherChannel, WebsiteAudit } from '../../types/report';
|
||||||
interface OtherChannelsProps {
|
interface OtherChannelsProps {
|
||||||
channels: OtherChannel[];
|
channels: OtherChannel[];
|
||||||
website: WebsiteAudit;
|
website: WebsiteAudit;
|
||||||
|
blurred?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
const statusConfig = {
|
const statusConfig = {
|
||||||
|
|
@ -15,9 +16,9 @@ const statusConfig = {
|
||||||
not_found: { icon: XCircle, color: 'text-[#D4889A]', label: '미발견' },
|
not_found: { icon: XCircle, color: 'text-[#D4889A]', label: '미발견' },
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function OtherChannels({ channels, website }: OtherChannelsProps) {
|
export default function OtherChannels({ channels, website, blurred }: OtherChannelsProps) {
|
||||||
return (
|
return (
|
||||||
<SectionWrapper id="other-channels" title="Other Channels & Website" subtitle="기타 채널 및 웹사이트 기술 진단">
|
<SectionWrapper id="other-channels" title="Other Channels & Website" subtitle="기타 채널 및 웹사이트 기술 진단" blurred={blurred}>
|
||||||
{/* Other Channels */}
|
{/* Other Channels */}
|
||||||
<motion.div
|
<motion.div
|
||||||
className="rounded-2xl bg-white border border-slate-100 shadow-sm overflow-hidden mb-8"
|
className="rounded-2xl bg-white border border-slate-100 shadow-sm overflow-hidden mb-8"
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import { SectionWrapper } from './ui/SectionWrapper';
|
||||||
import type { DiagnosisItem } from '../../types/report';
|
import type { DiagnosisItem } from '../../types/report';
|
||||||
|
|
||||||
interface ProblemDiagnosisProps {
|
interface ProblemDiagnosisProps {
|
||||||
|
blurred?: boolean;
|
||||||
diagnosis: DiagnosisItem[];
|
diagnosis: DiagnosisItem[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -15,9 +16,9 @@ const severityDot: Record<string, string> = {
|
||||||
unknown: 'bg-slate-400',
|
unknown: 'bg-slate-400',
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function ProblemDiagnosis({ diagnosis }: ProblemDiagnosisProps) {
|
export default function ProblemDiagnosis({ diagnosis, blurred }: ProblemDiagnosisProps) {
|
||||||
return (
|
return (
|
||||||
<SectionWrapper id="problem-diagnosis" title="Critical Issues" subtitle="핵심 문제 진단" dark>
|
<SectionWrapper id="problem-diagnosis" title="Critical Issues" subtitle="핵심 문제 진단" dark blurred={blurred}>
|
||||||
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||||
{diagnosis.map((item, i) => (
|
{diagnosis.map((item, i) => (
|
||||||
<motion.div
|
<motion.div
|
||||||
|
|
|
||||||
|
|
@ -4,12 +4,13 @@ import { SectionWrapper } from './ui/SectionWrapper';
|
||||||
import type { RoadmapMonth } from '../../types/report';
|
import type { RoadmapMonth } from '../../types/report';
|
||||||
|
|
||||||
interface RoadmapTimelineProps {
|
interface RoadmapTimelineProps {
|
||||||
|
blurred?: boolean;
|
||||||
months: RoadmapMonth[];
|
months: RoadmapMonth[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function RoadmapTimeline({ months }: RoadmapTimelineProps) {
|
export default function RoadmapTimeline({ months, blurred }: RoadmapTimelineProps) {
|
||||||
return (
|
return (
|
||||||
<SectionWrapper id="roadmap" title="90-Day Roadmap" subtitle="실행 로드맵">
|
<SectionWrapper id="roadmap" title="90-Day Roadmap" subtitle="실행 로드맵" blurred={blurred}>
|
||||||
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
|
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
|
||||||
{months.map((month, i) => (
|
{months.map((month, i) => (
|
||||||
<motion.div
|
<motion.div
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import { ComparisonRow } from './ui/ComparisonRow';
|
||||||
import type { TransformationProposal as TransformationProposalType, PlatformStrategy } from '../../types/report';
|
import type { TransformationProposal as TransformationProposalType, PlatformStrategy } from '../../types/report';
|
||||||
|
|
||||||
interface TransformationProposalProps {
|
interface TransformationProposalProps {
|
||||||
|
blurred?: boolean;
|
||||||
data: TransformationProposalType;
|
data: TransformationProposalType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -83,11 +84,11 @@ const priorityColor: Record<string, string> = {
|
||||||
낮음: 'bg-[#F3F0FF] text-[#4A3A7C] border-[#D5CDF5]',
|
낮음: 'bg-[#F3F0FF] text-[#4A3A7C] border-[#D5CDF5]',
|
||||||
};
|
};
|
||||||
|
|
||||||
export default function TransformationProposal({ data }: TransformationProposalProps) {
|
export default function TransformationProposal({ data, blurred }: TransformationProposalProps) {
|
||||||
const [activeTab, setActiveTab] = useState<TabKey>('brand');
|
const [activeTab, setActiveTab] = useState<TabKey>('brand');
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SectionWrapper id="transformation" title="Transformation Proposal" subtitle="As-Is → To-Be 전환 제안">
|
<SectionWrapper id="transformation" title="Transformation Proposal" subtitle="As-Is → To-Be 전환 제안" blurred={blurred}>
|
||||||
{/* Tabs */}
|
{/* Tabs */}
|
||||||
<div className="flex flex-wrap gap-2 mb-8">
|
<div className="flex flex-wrap gap-2 mb-8">
|
||||||
{tabItems.map((tab) => (
|
{tabItems.map((tab) => (
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ import { DiagnosisRow } from './ui/DiagnosisRow';
|
||||||
import type { YouTubeAudit as YouTubeAuditType } from '../../types/report';
|
import type { YouTubeAudit as YouTubeAuditType } from '../../types/report';
|
||||||
|
|
||||||
interface YouTubeAuditProps {
|
interface YouTubeAuditProps {
|
||||||
|
blurred?: boolean;
|
||||||
data: YouTubeAuditType;
|
data: YouTubeAuditType;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -15,9 +16,9 @@ function formatNumber(n: number): string {
|
||||||
return n.toLocaleString();
|
return n.toLocaleString();
|
||||||
}
|
}
|
||||||
|
|
||||||
export default function YouTubeAudit({ data }: YouTubeAuditProps) {
|
export default function YouTubeAudit({ data, blurred }: YouTubeAuditProps) {
|
||||||
return (
|
return (
|
||||||
<SectionWrapper id="youtube-audit" title="YouTube Analysis" subtitle="유튜브 채널 분석">
|
<SectionWrapper id="youtube-audit" title="YouTube Analysis" subtitle="유튜브 채널 분석" blurred={blurred}>
|
||||||
{/* Metrics row */}
|
{/* Metrics row */}
|
||||||
<div className="grid grid-cols-2 md:grid-cols-4 gap-4 mb-8">
|
<div className="grid grid-cols-2 md:grid-cols-4 gap-4 mb-8">
|
||||||
<MetricCard
|
<MetricCard
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ interface SectionWrapperProps {
|
||||||
children: ReactNode;
|
children: ReactNode;
|
||||||
dark?: boolean;
|
dark?: boolean;
|
||||||
className?: string;
|
className?: string;
|
||||||
|
blurred?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function SectionWrapper({
|
export function SectionWrapper({
|
||||||
|
|
@ -17,6 +18,7 @@ export function SectionWrapper({
|
||||||
children,
|
children,
|
||||||
dark = false,
|
dark = false,
|
||||||
className = '',
|
className = '',
|
||||||
|
blurred = false,
|
||||||
}: SectionWrapperProps) {
|
}: SectionWrapperProps) {
|
||||||
return (
|
return (
|
||||||
<motion.section
|
<motion.section
|
||||||
|
|
@ -58,7 +60,17 @@ export function SectionWrapper({
|
||||||
</p>
|
</p>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
{children}
|
{blurred ? (
|
||||||
|
<div className="relative">
|
||||||
|
<div className="blur-sm pointer-events-none select-none">{children}</div>
|
||||||
|
<div className="absolute inset-0 flex items-center justify-center z-10">
|
||||||
|
<div className="bg-white/90 backdrop-blur-sm border border-slate-200 rounded-2xl px-10 py-8 text-center shadow-lg">
|
||||||
|
<p className="text-slate-700 font-semibold text-lg mb-1">전체 리포트 열람을 원하시나요?</p>
|
||||||
|
<p className="text-slate-500 text-sm">로그인 후 전체 분석 결과를 확인하세요.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
) : children}
|
||||||
</div>
|
</div>
|
||||||
</motion.section>
|
</motion.section>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,500 @@
|
||||||
|
import type { MarketingReport } from '../types/report';
|
||||||
|
|
||||||
|
export const mockReport: MarketingReport = {
|
||||||
|
id: 'view-clinic',
|
||||||
|
createdAt: '2026-03-22',
|
||||||
|
targetUrl: 'https://www.viewclinic.com',
|
||||||
|
overallScore: 62,
|
||||||
|
|
||||||
|
clinicSnapshot: {
|
||||||
|
name: '뷰성형외과의원',
|
||||||
|
nameEn: 'VIEW Plastic Surgery',
|
||||||
|
established: '2005',
|
||||||
|
yearsInBusiness: 21,
|
||||||
|
staffCount: 28,
|
||||||
|
leadDoctor: {
|
||||||
|
name: '최순우',
|
||||||
|
credentials: '서울대 출신, 의학박사',
|
||||||
|
rating: 4.7, // TODO: 강남언니 실제 의료진 평점 확인
|
||||||
|
reviewCount: 1809,
|
||||||
|
},
|
||||||
|
overallRating: 4.8, // TODO: 강남언니 실제 병원 평점 확인 (5.0 만점)
|
||||||
|
totalReviews: 18840,
|
||||||
|
priceRange: { min: '97,900', max: '13,200,000+', currency: '₩' },
|
||||||
|
certifications: [
|
||||||
|
'수술실 CCTV',
|
||||||
|
'전담 마취과 전문의',
|
||||||
|
'응급대응 시스템',
|
||||||
|
'여의사 상담',
|
||||||
|
'보건복지부장관 표창',
|
||||||
|
'안면윤곽 수상',
|
||||||
|
'모티바 사용량 1위',
|
||||||
|
'19층 안전스마트 빌딩',
|
||||||
|
'렛미인 출연',
|
||||||
|
'All-In-One 시스템',
|
||||||
|
],
|
||||||
|
mediaAppearances: ['렛미인 TV 프로그램', '보건복지부장관 표창', '안면윤곽 수상'],
|
||||||
|
medicalTourism: ['VisitKorea 등재', '강남 메디컬투어센터 협력기관', '외국인 전용 서비스'],
|
||||||
|
location: '서울시 강남구 봉은사로 107 (논현동)',
|
||||||
|
nearestStation: '9호선 신논현역 3번 출구 50m',
|
||||||
|
phone: '02-539-1177',
|
||||||
|
domain: 'viewclinic.com',
|
||||||
|
logoImages: {
|
||||||
|
circle: '/assets/clients/view-clinic/logo-circle.png',
|
||||||
|
horizontal: '/assets/clients/view-clinic/logo-horizontal.png',
|
||||||
|
korean: '/assets/clients/view-clinic/logo-korean.png',
|
||||||
|
},
|
||||||
|
brandColors: {
|
||||||
|
primary: '#7B2D8E',
|
||||||
|
accent: '#E8B931',
|
||||||
|
text: '#6B2D7B',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
channelScores: [
|
||||||
|
{ channel: 'YouTube', icon: 'youtube', score: 65, maxScore: 100, status: 'warning', headline: '103K 구독자, 조회수 하락세' },
|
||||||
|
{ channel: 'Instagram KR', icon: 'instagram', score: 35, maxScore: 100, status: 'critical', headline: '14K 팔로워, Reels 0개' },
|
||||||
|
{ channel: 'Instagram EN', icon: 'instagram', score: 55, maxScore: 100, status: 'warning', headline: '68.8K 팔로워, 활발한 편' },
|
||||||
|
{ channel: 'Facebook', icon: 'facebook', score: 40, maxScore: 100, status: 'critical', headline: '브랜드 불일치, 계정 분산' },
|
||||||
|
{ channel: '강남언니', icon: 'star', score: 95, maxScore: 100, status: 'excellent', headline: '4.8점, 18,840 리뷰' },
|
||||||
|
{ channel: 'Website', icon: 'globe', score: 50, maxScore: 100, status: 'warning', headline: 'SNS 연결 없음, 트래킹만 존재' },
|
||||||
|
],
|
||||||
|
|
||||||
|
youtubeAudit: {
|
||||||
|
channelName: '뷰성형외과 VIEW Plastic Surgery',
|
||||||
|
handle: '@ViewclinicKR',
|
||||||
|
subscribers: 103000,
|
||||||
|
totalVideos: 1064,
|
||||||
|
totalViews: 9952722,
|
||||||
|
weeklyViewGrowth: { absolute: 67097, percentage: 4.09 },
|
||||||
|
estimatedMonthlyRevenue: { min: 499, max: 1000 },
|
||||||
|
avgVideoLength: '4.4분',
|
||||||
|
uploadFrequency: '~주 1회',
|
||||||
|
channelCreatedDate: '2015-06-29',
|
||||||
|
subscriberRank: '#570K',
|
||||||
|
channelDescription: '💜뷰성형외과💜\nVIEW가 예술이다! ✨\n19층 규모의 안전스마트 빌딩\n환자의 관점에서 생각하고\n환자의 입장에서 아름다움의 가치를 찾습니다.',
|
||||||
|
linkedUrls: [
|
||||||
|
{ label: '뷰성형외과 홈페이지', url: 'viewclinic.com' },
|
||||||
|
{ label: 'Instagram', url: 'instagram.com/viewplastic' },
|
||||||
|
{ label: '이벤트 보기', url: 'viewclinic.com/board/events' },
|
||||||
|
{ label: '상담 예약', url: 'viewclinic.com/counsel/reservation' },
|
||||||
|
{ label: '카톡 상담', url: 'pf.kakao.com/_xbtVxjl' },
|
||||||
|
],
|
||||||
|
playlists: [
|
||||||
|
'VIEW 💜 무엇이든 물어보세요',
|
||||||
|
'VIEW 💜 재수술',
|
||||||
|
'VIEW 💜 가슴',
|
||||||
|
'VIEW 💜 눈+코',
|
||||||
|
'VIEW 💜 윤곽+양악',
|
||||||
|
'VIEW 💜 지방성형',
|
||||||
|
'VIEW 💜 피부+안티에이징',
|
||||||
|
'VIEW랜딩 💜',
|
||||||
|
'VIEW 💜 방송영상',
|
||||||
|
],
|
||||||
|
topVideos: [
|
||||||
|
{ title: '한번에 성공하는 성형', views: 574000, uploadedAgo: '4년 전', type: 'Short' },
|
||||||
|
{ title: '코성형+지방이식 전후', views: 525000, uploadedAgo: '4년 전', type: 'Short' },
|
||||||
|
{ title: '쌍수+뒤밑트임 전후', views: 392000, uploadedAgo: '3년 전', type: 'Short' },
|
||||||
|
{ title: 'V라인턱 변신과정 전격공개', views: 194000, uploadedAgo: '4년 전', type: 'Short' },
|
||||||
|
{ title: 'K-미녀 클라스', views: 161000, uploadedAgo: '4년 전', type: 'Short' },
|
||||||
|
{ title: '앞트임하면 대박나는 사람', views: 154000, uploadedAgo: '2년 전', type: 'Short' },
|
||||||
|
{ title: '코성형! 내 얼굴에 가장 예쁜 코 찾아드립니다', views: 124000, uploadedAgo: '3년 전', type: 'Long', duration: '7:59' },
|
||||||
|
{ title: '아나운서 박은영, 가슴 할 결심을 하다', views: 127000, uploadedAgo: '9개월 전', type: 'Long', duration: '43:39' },
|
||||||
|
],
|
||||||
|
diagnosis: [
|
||||||
|
{ category: '구독자 대비 조회수 비율', detail: '영상당 평균 ~9,300회 (103K 구독자 대비 9% 도달률)', severity: 'critical', evidenceIds: ['yt-channel'] },
|
||||||
|
{ category: '최근 롱폼 조회수', detail: '대부분 1,000~4,000회 수준', severity: 'critical' },
|
||||||
|
{ category: 'Shorts 조회수', detail: '최근 업로드 500~1,000회 (과거 대비 급감)', severity: 'warning' },
|
||||||
|
{ category: '업로드 빈도', detail: '주 1회 — 알고리즘 노출 최소 기준 미달', severity: 'warning' },
|
||||||
|
{ category: '콘텐츠 톤앤매너', detail: '일관성 없음 — 교육/Q&A/전후/브랜딩 혼재', severity: 'critical' },
|
||||||
|
{ category: '썸네일 디자인', detail: '통일된 브랜드 시스템 없음', severity: 'warning' },
|
||||||
|
{ category: '최고 성과 Shorts', detail: '4년 전 콘텐츠 — 최근 재현 실패', severity: 'critical' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
instagramAudit: {
|
||||||
|
accounts: [
|
||||||
|
{
|
||||||
|
handle: '@viewplastic',
|
||||||
|
language: 'KR',
|
||||||
|
label: '국내 (한국어)',
|
||||||
|
posts: 1409,
|
||||||
|
followers: 14000,
|
||||||
|
following: 4760,
|
||||||
|
category: 'Health/beauty',
|
||||||
|
profileLink: 'litt.ly/viewplasticsurgery',
|
||||||
|
highlights: ['수술정보', 'ABOUT VIEW', '모델 모집', 'VIEW EVENT', '진료안내'],
|
||||||
|
reelsCount: 0,
|
||||||
|
contentFormat: '카드뉴스 (정보형 이미지) 100%',
|
||||||
|
profilePhoto: '모델 사진 (브랜드 로고 아님)',
|
||||||
|
bio: '뷰 성형외과 | 가슴성형 · 안면윤곽 · 눈성형 · 코성형 · 리프팅\n💕신논현역 3번 출구 | 카톡 \'뷰성형외과의원\' | 02-539-1177',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
handle: '@view_plastic_surgery',
|
||||||
|
language: 'EN',
|
||||||
|
label: '국제 (영어)',
|
||||||
|
posts: 2524,
|
||||||
|
followers: 68800,
|
||||||
|
following: 2834,
|
||||||
|
category: 'Health/beauty',
|
||||||
|
profileLink: 'litt.ly/viewplasticsurgeryenglish',
|
||||||
|
highlights: ['Mathilde', 'Thet San', 'Katerina', 'Yuri', 'Liposuction', 'Why VIEW?', 'Face Contour'],
|
||||||
|
reelsCount: 50,
|
||||||
|
contentFormat: 'Before/After + 환자 스토리 + Reels',
|
||||||
|
profilePhoto: 'VIEW 골드 로고',
|
||||||
|
bio: 'VIEW Plastic Surgery Official by VIEW Partners\n⚕ Most Renowned Hospital in Korea\n107 Bongeunsa-ro Gangnam-gu, Seoul, Korea',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
diagnosis: [
|
||||||
|
{ category: '계정 분리 → 팔로워 분산', detail: 'KR 14K + EN 68.8K = 합산 82.8K이지만 각각 약함', severity: 'warning' },
|
||||||
|
{ category: 'KR 계정 Reels 전무', detail: '인스타 알고리즘 핵심인 Reels 콘텐츠 0개', severity: 'critical', evidenceIds: ['ig-kr-profile'] },
|
||||||
|
{ category: '브랜드 비주얼 불일치', detail: 'KR=모델 프사, EN=VIEW 골드 로고', severity: 'warning', evidenceIds: ['ig-kr-profile', 'ig-en-profile'] },
|
||||||
|
{ category: 'KR 팔로잉 과다', detail: '4,760 팔로잉 — 팔로우백 전략 의심', severity: 'warning' },
|
||||||
|
{ category: '크로스포스팅 없음', detail: 'YouTube Shorts → Instagram Reels 연동 없음', severity: 'critical' },
|
||||||
|
{ category: '유튜브 ↔ 인스타 유입 단절', detail: '103K 구독자 → 14K 팔로워 전환 실패', severity: 'critical' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
facebookAudit: {
|
||||||
|
pages: [
|
||||||
|
{
|
||||||
|
url: 'facebook.com/viewps1',
|
||||||
|
pageName: '뷰성형외과',
|
||||||
|
language: 'KR',
|
||||||
|
label: '국내 (한국어)',
|
||||||
|
followers: 253,
|
||||||
|
following: 0,
|
||||||
|
category: '성형외과 의사',
|
||||||
|
bio: '예쁨이 일상이 되는 순간! #뷰성형외과',
|
||||||
|
logo: '일치 (공식 로고)',
|
||||||
|
logoDescription: '보라색+골드 깃털 공식 로고 사용 — 웹사이트와 동일한 공식 브랜드 자산. 원형 테두리 안에 깃털 심볼 + VIEW / Plastic Surgery 텍스트가 정확히 배치됨.',
|
||||||
|
link: 'viewclinic.com',
|
||||||
|
linkedDomain: 'viewclinic.com',
|
||||||
|
reviews: 0,
|
||||||
|
recentPostAge: '1일 전',
|
||||||
|
hasWhatsApp: false,
|
||||||
|
postFrequency: '주 1~2회 (카드뉴스 크로스포스팅)',
|
||||||
|
topContentType: 'Instagram 카드뉴스 그대로 복사 게시',
|
||||||
|
engagement: '게시물당 좋아요 0~3개, 댓글 거의 없음',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: 'facebook.com/viewclinic',
|
||||||
|
pageName: 'View Plastic Surgery',
|
||||||
|
language: 'EN',
|
||||||
|
label: '국제 (영어)',
|
||||||
|
followers: 88000,
|
||||||
|
following: 11,
|
||||||
|
category: '건강/뷰티',
|
||||||
|
bio: 'Official Account by VIEW Partners',
|
||||||
|
logo: '불일치 (비공식 변형)',
|
||||||
|
logoDescription: 'VIEW 텍스트 전용 골드 로고 — 공식 깃털 심볼이 빠진 비공식 변형 버전. YouTube, Instagram EN과 동일하지만, 공식 브랜드 가이드(보라색+골드 깃털)와 불일치.',
|
||||||
|
link: 'viewplasticsurgery.com',
|
||||||
|
linkedDomain: 'viewplasticsurgery.com (메인 도메인 viewclinic.com과 다름)',
|
||||||
|
reviews: 3,
|
||||||
|
recentPostAge: '14분 전',
|
||||||
|
hasWhatsApp: true,
|
||||||
|
postFrequency: '일 1~2회 (Before/After, 환자 스토리)',
|
||||||
|
topContentType: 'Before/After 사진 + 환자 여정 Reels',
|
||||||
|
engagement: '게시물당 좋아요 50~300개, 댓글 10~50개',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
diagnosis: [
|
||||||
|
{
|
||||||
|
category: '채널 간 로고 파편화',
|
||||||
|
detail: 'Facebook KR만 공식 깃털 로고를 사용하고, EN 페이지는 비공식 VIEW 골드 텍스트 로고를 사용. YouTube, Instagram도 각각 다른 변형 로고 사용 중.',
|
||||||
|
severity: 'critical',
|
||||||
|
evidenceIds: ['fb-en-page', 'ig-kr-profile', 'ig-en-profile'],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: 'KR 페이지 사실상 방치',
|
||||||
|
detail: '팔로워 253명, 리뷰 0개, 게시물 참여율 0% — 운영 비용 대비 효과 없음',
|
||||||
|
severity: 'critical',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: '도메인 불일치',
|
||||||
|
detail: 'KR 페이지 → viewclinic.com, EN 페이지 → viewplasticsurgery.com — 서로 다른 도메인으로 연결, SEO 및 트래픽 분산',
|
||||||
|
severity: 'warning',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: 'KR/EN 팔로워 348:1 격차',
|
||||||
|
detail: 'EN 88K vs KR 253 — 국내 환자 유입 채널로서 Facebook KR은 완전히 실패',
|
||||||
|
severity: 'critical',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: 'KR 콘텐츠 전략 없음',
|
||||||
|
detail: 'Instagram 카드뉴스를 그대로 복사 게시 — Facebook 네이티브 콘텐츠(동영상, 이벤트, 그룹) 활용 0%',
|
||||||
|
severity: 'warning',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: 'Facebook Pixel ↔ 페이지 비연동',
|
||||||
|
detail: '웹사이트에 Facebook Pixel(ID: 299151214739571)이 설치되어 있으나, KR 페이지와의 광고 리타겟 연동 미확인',
|
||||||
|
severity: 'warning',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
brandInconsistencies: [
|
||||||
|
{
|
||||||
|
field: '로고',
|
||||||
|
values: [
|
||||||
|
{ channel: 'YouTube', value: 'VIEW 텍스트 전용 골드 로고 (깃털 심볼 없음)', isCorrect: false },
|
||||||
|
{ channel: 'Instagram KR', value: '모델 프로필 사진 (로고 아님)', isCorrect: false },
|
||||||
|
{ channel: 'Instagram EN', value: 'VIEW 텍스트 전용 골드 로고 (깃털 심볼 없음)', isCorrect: false },
|
||||||
|
{ channel: 'Facebook KR', value: '보라색+골드 깃털 로고 (공식)', isCorrect: true },
|
||||||
|
{ channel: 'Facebook EN', value: 'VIEW 텍스트 전용 골드 로고 (깃털 심볼 없음)', isCorrect: false },
|
||||||
|
{ channel: 'Website', value: '보라색+골드 깃털 로고 (공식)', isCorrect: true },
|
||||||
|
],
|
||||||
|
impact: '공식 깃털 로고를 사용하는 채널은 Facebook KR과 웹사이트 2곳뿐. YouTube, Instagram, Facebook EN은 비공식 변형 로고 사용',
|
||||||
|
recommendation: '전 채널에 보라색+골드 깃털 공식 로고 통일 (원형: 프로필, 가로형: 배너)',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: '연결 도메인',
|
||||||
|
values: [
|
||||||
|
{ channel: 'YouTube', value: 'viewclinic.com', isCorrect: true },
|
||||||
|
{ channel: 'Instagram KR', value: 'litt.ly/viewplasticsurgery', isCorrect: true },
|
||||||
|
{ channel: 'Instagram EN', value: 'litt.ly/viewplasticsurgeryenglish', isCorrect: true },
|
||||||
|
{ channel: 'Facebook KR', value: 'viewclinic.com', isCorrect: true },
|
||||||
|
{ channel: 'Facebook EN', value: 'viewplasticsurgery.com', isCorrect: false },
|
||||||
|
],
|
||||||
|
impact: 'EN 페이지가 별도 도메인(viewplasticsurgery.com)으로 연결 → 도메인 권위(Domain Authority) 분산, SEO 불이익',
|
||||||
|
recommendation: 'viewclinic.com/en 하위 경로로 국제 페이지 통합, 기존 도메인은 301 리다이렉트',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
field: '바이오/소개 메시지',
|
||||||
|
values: [
|
||||||
|
{ channel: 'YouTube', value: '💜뷰성형외과💜 VIEW가 예술이다!', isCorrect: false },
|
||||||
|
{ channel: 'Instagram KR', value: '뷰 성형외과 | 가슴성형·안면윤곽·눈성형·코성형·리프팅', isCorrect: false },
|
||||||
|
{ channel: 'Facebook KR', value: '예쁨이 일상이 되는 순간! #뷰성형외과', isCorrect: false },
|
||||||
|
{ channel: 'Facebook EN', value: 'Official Account by VIEW Partners', isCorrect: false },
|
||||||
|
],
|
||||||
|
impact: '4개 채널, 4개의 서로 다른 소개 메시지 → 통일된 브랜드 포지셔닝 부재, 핵심 USP(안전/21년 무사고) 미전달',
|
||||||
|
recommendation: '핵심 USP 포함 통일 바이오: "안전이 예술이 되는 곳 — 21년 무사고 VIEW 성형외과"',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
consolidationRecommendation: 'Facebook KR 페이지(253명)는 폐쇄 또는 EN 페이지(88K)로 통합을 권장합니다. KR 페이지는 투자 대비 효과가 사실상 제로이며, 브랜드 혼란만 가중시키고 있습니다. Facebook은 한국 시장에서 오가닉 도달 목적이 아닌, Facebook Pixel 기반 리타겟 광고 전용 채널로 운영하는 것이 효율적입니다.',
|
||||||
|
},
|
||||||
|
|
||||||
|
otherChannels: [
|
||||||
|
{ name: '카카오톡', status: 'active', details: '상담 전용 채널 운영', url: 'pf.kakao.com/_xbtVxjl' },
|
||||||
|
{ name: '네이버 블로그', status: 'unknown', details: 'Naver API 연동 필요' },
|
||||||
|
{ name: '네이버 플레이스', status: 'unknown', details: 'Naver API 연동 필요' },
|
||||||
|
{ name: 'TikTok', status: 'not_found', details: '계정 없음 또는 비활성' },
|
||||||
|
{ name: '강남언니', status: 'active', details: '4.8점, 18,840 리뷰, 28 의료진', url: 'gangnamunni.com/hospitals/189' },
|
||||||
|
{ name: '모두닥', status: 'active', details: '기본 정보 등재' },
|
||||||
|
{ name: 'Goodoc', status: 'active', details: '기본 정보 등재' },
|
||||||
|
{ name: '닥터나우', status: 'active', details: '기본 정보 등재' },
|
||||||
|
],
|
||||||
|
|
||||||
|
websiteAudit: {
|
||||||
|
primaryDomain: 'viewclinic.com',
|
||||||
|
additionalDomains: [
|
||||||
|
{ domain: 'viewplasticsurgery.com', purpose: '영문 국제 사이트' },
|
||||||
|
{ domain: 'viewclinic-chat.com', purpose: '채팅 상담 전용' },
|
||||||
|
{ domain: 'viewclinic.modoo.at', purpose: '구 모두홈페이지' },
|
||||||
|
],
|
||||||
|
snsLinksOnSite: false,
|
||||||
|
trackingPixels: [
|
||||||
|
{ name: 'Facebook Pixel', installed: true, details: 'ID: 299151214739571' },
|
||||||
|
{ name: 'Kakao Pixel', installed: true },
|
||||||
|
{ name: 'Google Tag Manager', installed: true, details: 'GTM-52RT6DMK' },
|
||||||
|
],
|
||||||
|
mainCTA: '전화 + 카카오톡 상담',
|
||||||
|
},
|
||||||
|
|
||||||
|
problemDiagnosis: [
|
||||||
|
{
|
||||||
|
category: '브랜드 아이덴티티 파편화',
|
||||||
|
detail: '공식 깃털 로고(보라색+골드)는 Facebook KR과 웹사이트에만 사용. YouTube/Instagram EN/Facebook EN은 비공식 골드 텍스트 로고, Instagram KR은 모델 사진 사용 — 6개 채널에 4종의 서로 다른 시각적 아이덴티티',
|
||||||
|
severity: 'critical',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: '콘텐츠 전략 부재',
|
||||||
|
detail: '콘텐츠 캘린더 없음, 톤앤매너 가이드 없음, KR↔EN 시너지 없음, YouTube→Instagram 크로스포스팅 없음',
|
||||||
|
severity: 'critical',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
category: '플랫폼 간 유입 단절',
|
||||||
|
detail: 'YouTube 103K → Instagram 14K 전환 실패, 웹사이트에 SNS 링크 0개, 강남언니 18.8K 리뷰→영상 전환 없음',
|
||||||
|
severity: 'critical',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
|
transformation: {
|
||||||
|
brandIdentity: [
|
||||||
|
{ area: '로고', asIs: '채널마다 다른 로고 4종', toBe: 'VIEW 골드 로고 1종 통일' },
|
||||||
|
{ area: '컬러 팔레트', asIs: '없음 (혼재)', toBe: 'Primary: Gold (#C4A462) + Dark (#1A1A1A)' },
|
||||||
|
{ area: '프로필 사진', asIs: 'KR=모델, EN=로고, FB=깃털', toBe: '전 채널 VIEW 골드 로고 통일' },
|
||||||
|
{ area: '바이오 메시지', asIs: '채널마다 다른 메시지', toBe: '"안전이 예술이 되는 곳 — 21년 무사고 VIEW"' },
|
||||||
|
{ area: '해시태그', asIs: '비체계적', toBe: '#뷰성형외과 #VIEW성형 #강남성형외과 #21년무사고' },
|
||||||
|
],
|
||||||
|
contentStrategy: [
|
||||||
|
{ area: '콘텐츠 캘린더', asIs: '없음', toBe: '월간 콘텐츠 캘린더 (4주 사이클)' },
|
||||||
|
{ area: '업로드 빈도', asIs: 'YouTube 주1회, Instagram 비정기', toBe: 'YouTube 주3회 + Instagram 일1회 + Shorts/Reels 주5회' },
|
||||||
|
{ area: '콘텐츠 포맷', asIs: 'KR Instagram = 카드뉴스만', toBe: '카드뉴스 30% + Reels 40% + 카루셀 20% + Stories 10%' },
|
||||||
|
{ area: '콘텐츠 앵글', asIs: '시술 정보 중심 (병원 관점)', toBe: '환자 의사결정 보조 중심 (환자 관점)' },
|
||||||
|
{ area: '톤앤매너', asIs: '없음', toBe: '"차분한 전문가" — 과장 없이, 설명으로 설득' },
|
||||||
|
],
|
||||||
|
platformStrategies: [
|
||||||
|
{
|
||||||
|
platform: 'YouTube',
|
||||||
|
icon: 'youtube',
|
||||||
|
currentMetric: '103K subscribers',
|
||||||
|
targetMetric: '200K / 12개월',
|
||||||
|
strategies: [
|
||||||
|
{ strategy: '업로드 빈도 3배 증가', detail: '주 3회 (롱폼 1 + Shorts 2)' },
|
||||||
|
{ strategy: '기존 영상 재활용', detail: '1,064개 기존 영상에서 AI 숏폼 100개 추출' },
|
||||||
|
{ strategy: '썸네일 시스템화', detail: 'VIEW 골드 워터마크 + 일관된 폰트/컬러' },
|
||||||
|
{ strategy: '커뮤니티 탭 활용', detail: '주 2회 투표/질문 — 구독자 참여 활성화' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
platform: 'Instagram KR',
|
||||||
|
icon: 'instagram',
|
||||||
|
currentMetric: '14K followers',
|
||||||
|
targetMetric: '50K / 12개월',
|
||||||
|
strategies: [
|
||||||
|
{ strategy: 'Reels 즉시 시작', detail: 'YouTube Shorts 동시 게시 → 최소 주 5개' },
|
||||||
|
{ strategy: '프로필 사진 교체', detail: '모델 사진 → VIEW 골드 로고' },
|
||||||
|
{ strategy: '팔로잉 정리', detail: '4,760 → 300 이하로 정리' },
|
||||||
|
{ strategy: 'Stories 활성화', detail: '일 2~3개 (상담 비하인드, 병원 일상)' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
platform: 'Facebook',
|
||||||
|
icon: 'facebook',
|
||||||
|
currentMetric: 'KR 253 + EN 88K',
|
||||||
|
targetMetric: '통합 관리',
|
||||||
|
strategies: [
|
||||||
|
{ strategy: '계정 통합', detail: 'KR 253명 페이지 → EN 88K 페이지로 통합 또는 폐쇄' },
|
||||||
|
{ strategy: '로고 통일', detail: '보라색 깃털 → VIEW 골드 로고' },
|
||||||
|
{ strategy: '역할 정의', detail: 'FB = 광고 랜딩 + 리타겟 전용' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
websiteImprovements: [
|
||||||
|
{ area: 'SNS 링크', asIs: '홈페이지에 0개', toBe: 'Header/Footer에 YouTube + Instagram + KakaoTalk 링크' },
|
||||||
|
{ area: 'YouTube 임베드', asIs: '없음', toBe: '시술 페이지별 관련 YouTube 영상 임베드' },
|
||||||
|
{ area: '콘텐츠 허브', asIs: '없음', toBe: 'SEO 콘텐츠 허브 구축 (시술별 가이드)' },
|
||||||
|
{ area: '도메인 통합', asIs: '4개 도메인 분산', toBe: 'viewclinic.com 단일 도메인 + /en 국제 페이지' },
|
||||||
|
],
|
||||||
|
newChannelProposals: [
|
||||||
|
{ channel: 'TikTok', priority: 'P1', rationale: '20~30대 첫 수술 고민층 도달, YouTube Shorts 동시 배포' },
|
||||||
|
{ channel: '네이버 블로그', priority: 'P0', rationale: '한국 검색 1위 플랫폼 — SEO 핵심' },
|
||||||
|
{ channel: '네이버 플레이스', priority: 'P0', rationale: '지역 검색 노출 필수' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
|
||||||
|
roadmap: [
|
||||||
|
{
|
||||||
|
month: 1,
|
||||||
|
title: 'Foundation',
|
||||||
|
subtitle: '기반 구축',
|
||||||
|
tasks: [
|
||||||
|
{ task: '브랜드 아이덴티티 가이드 확정 (로고, 컬러, 폰트, 톤앤매너)', completed: false },
|
||||||
|
{ task: '전 채널 프로필 사진/배너 통일 교체', completed: false },
|
||||||
|
{ task: 'Facebook KR 페이지 정리 (통합 또는 폐쇄)', completed: false },
|
||||||
|
{ task: 'Instagram KR 팔로잉 정리 (4,760 → 300)', completed: false },
|
||||||
|
{ task: '웹사이트에 YouTube/Instagram 링크 추가', completed: false },
|
||||||
|
{ task: '기존 YouTube 영상 100개 → AI 숏폼 추출 시작', completed: false },
|
||||||
|
{ task: '콘텐츠 캘린더 v1 수립', completed: false },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
month: 2,
|
||||||
|
title: 'Content Engine',
|
||||||
|
subtitle: '콘텐츠 엔진 가동',
|
||||||
|
tasks: [
|
||||||
|
{ task: 'YouTube Shorts 주 3~5회 업로드 시작', completed: false },
|
||||||
|
{ task: 'Instagram Reels 주 5회 업로드 시작', completed: false },
|
||||||
|
{ task: '원장 촬영 세션 월 2회 스케줄 확정', completed: false },
|
||||||
|
{ task: '"원장이 설명하는" 시리즈 4편 제작/업로드', completed: false },
|
||||||
|
{ task: '네이버 블로그 개설 및 시술 가이드 10편 게시', completed: false },
|
||||||
|
{ task: 'TikTok 계정 개설 및 Shorts 동시 배포', completed: false },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
month: 3,
|
||||||
|
title: 'Optimization',
|
||||||
|
subtitle: '최적화 & 광고',
|
||||||
|
tasks: [
|
||||||
|
{ task: '콘텐츠 성과 분석 리포트 v1', completed: false },
|
||||||
|
{ task: '고성과 콘텐츠 기반 Instagram/Facebook 광고 세팅', completed: false },
|
||||||
|
{ task: 'YouTube 썸네일 A/B 테스트', completed: false },
|
||||||
|
{ task: '콘텐츠 캘린더 v2 (성과 데이터 반영)', completed: false },
|
||||||
|
{ task: '네이버 플레이스 최적화', completed: false },
|
||||||
|
{ task: 'KPI 리뷰: 구독자/팔로워 성장률, 상담 전환 추적', completed: false },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
|
||||||
|
kpiDashboard: [
|
||||||
|
{ metric: 'YouTube 구독자', current: '103K', target3Month: '115K', target12Month: '200K' },
|
||||||
|
{ metric: 'YouTube 월 조회수', current: '~270K', target3Month: '500K', target12Month: '1.5M' },
|
||||||
|
{ metric: 'YouTube Shorts 평균 조회수', current: '500~1,000', target3Month: '5,000', target12Month: '20,000' },
|
||||||
|
{ metric: 'Instagram KR 팔로워', current: '14K', target3Month: '20K', target12Month: '50K' },
|
||||||
|
{ metric: 'Instagram KR Reels 평균 조회수', current: '0 (없음)', target3Month: '3,000', target12Month: '10,000' },
|
||||||
|
{ metric: 'Instagram EN 팔로워', current: '68.8K', target3Month: '75K', target12Month: '100K' },
|
||||||
|
{ metric: '네이버 블로그 방문자', current: '0 (없음)', target3Month: '5,000/월', target12Month: '30,000/월' },
|
||||||
|
{ metric: '웹사이트 → SNS 유입', current: '0%', target3Month: '5%', target12Month: '15%' },
|
||||||
|
{ metric: '콘텐츠 → 상담 전환', current: '측정 불가', target3Month: 'UTM 추적 시작', target12Month: '월 50건' },
|
||||||
|
],
|
||||||
|
|
||||||
|
screenshots: [
|
||||||
|
{
|
||||||
|
id: 'yt-channel',
|
||||||
|
url: '/assets/clients/view-clinic/screenshots/yt-channel.svg',
|
||||||
|
channel: 'YouTube',
|
||||||
|
capturedAt: '2026-03-22T10:00:00Z',
|
||||||
|
caption: 'YouTube 채널 메인 — 구독자 103K, 주 1회 업로드, Shorts 조회수 하락세',
|
||||||
|
sourceUrl: 'https://youtube.com/@ViewclinicKR',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'yt-about-links',
|
||||||
|
url: '/assets/clients/view-clinic/screenshots/yt-about-links.svg',
|
||||||
|
channel: 'YouTube',
|
||||||
|
capturedAt: '2026-03-22T10:01:00Z',
|
||||||
|
caption: 'YouTube 정보 탭 — Instagram @viewplastic 연결, Facebook 미연결',
|
||||||
|
sourceUrl: 'https://youtube.com/@ViewclinicKR/about',
|
||||||
|
annotations: [
|
||||||
|
{ type: 'highlight', x: 55, y: 68, width: 30, height: 5, label: 'Instagram 링크' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'ig-kr-profile',
|
||||||
|
url: '/assets/clients/view-clinic/screenshots/ig-kr-profile.svg',
|
||||||
|
channel: 'Instagram',
|
||||||
|
capturedAt: '2026-03-22T10:02:00Z',
|
||||||
|
caption: 'Instagram KR (@viewplastic) — 14K 팔로워, 1,409 게시물, Reels 미활용',
|
||||||
|
sourceUrl: 'https://instagram.com/viewplastic',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'ig-en-profile',
|
||||||
|
url: '/assets/clients/view-clinic/screenshots/ig-en-profile.svg',
|
||||||
|
channel: 'Instagram',
|
||||||
|
capturedAt: '2026-03-22T10:03:00Z',
|
||||||
|
caption: 'Instagram EN (@view_plastic_surgery) — 68.9K 팔로워, Reels 활발, 환자 스토리',
|
||||||
|
sourceUrl: 'https://instagram.com/view_plastic_surgery',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'fb-en-page',
|
||||||
|
url: '/assets/clients/view-clinic/screenshots/fb-en-page.svg',
|
||||||
|
channel: 'Facebook',
|
||||||
|
capturedAt: '2026-03-22T10:04:00Z',
|
||||||
|
caption: 'Facebook EN — 타이어 텍스트 Bio, bit.ly 링크, 브랜드 불일치 확인',
|
||||||
|
sourceUrl: 'https://facebook.com/viewplasticsurgery',
|
||||||
|
annotations: [
|
||||||
|
{ type: 'highlight', x: 15, y: 20, width: 25, height: 15, label: '로고 불일치' },
|
||||||
|
{ type: 'highlight', x: 15, y: 70, width: 20, height: 5, label: 'bit.ly 링크' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 'website-homepage',
|
||||||
|
url: '/assets/clients/view-clinic/screenshots/website-homepage.svg',
|
||||||
|
channel: 'Website',
|
||||||
|
capturedAt: '2026-03-22T10:05:00Z',
|
||||||
|
caption: 'viewclinic.com 홈페이지 — 팝업 오버레이, SNS 링크 미노출',
|
||||||
|
sourceUrl: 'https://www.viewclinic.com',
|
||||||
|
annotations: [
|
||||||
|
{ type: 'highlight', x: 30, y: 15, width: 40, height: 60, label: '팝업 차단' },
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
@ -52,333 +52,251 @@ export const mockReport: MarketingReport = {
|
||||||
},
|
},
|
||||||
|
|
||||||
channelScores: [
|
channelScores: [
|
||||||
{ channel: 'YouTube', icon: 'youtube', score: 65, maxScore: 100, status: 'warning', headline: '103K 구독자, 조회수 하락세' },
|
{ channel: 'YouTube', icon: 'youtube', score: 48, maxScore: 100, status: 'warning', headline: '채널 분석 결과 (로그인 후 확인)' },
|
||||||
{ channel: 'Instagram KR', icon: 'instagram', score: 35, maxScore: 100, status: 'critical', headline: '14K 팔로워, Reels 0개' },
|
{ channel: 'Instagram', icon: 'instagram', score: 31, maxScore: 100, status: 'critical', headline: '채널 분석 결과 (로그인 후 확인)' },
|
||||||
{ channel: 'Instagram EN', icon: 'instagram', score: 55, maxScore: 100, status: 'warning', headline: '68.8K 팔로워, 활발한 편' },
|
{ channel: 'Facebook', icon: 'facebook', score: 57, maxScore: 100, status: 'warning', headline: '채널 분석 결과 (로그인 후 확인)' },
|
||||||
{ channel: 'Facebook', icon: 'facebook', score: 40, maxScore: 100, status: 'critical', headline: '브랜드 불일치, 계정 분산' },
|
{ channel: '리뷰 플랫폼', icon: 'star', score: 82, maxScore: 100, status: 'good', headline: '채널 분석 결과 (로그인 후 확인)' },
|
||||||
{ channel: '강남언니', icon: 'star', score: 95, maxScore: 100, status: 'excellent', headline: '4.8점, 18,840 리뷰' },
|
{ channel: 'Website', icon: 'globe', score: 44, maxScore: 100, status: 'warning', headline: '채널 분석 결과 (로그인 후 확인)' },
|
||||||
{ channel: 'Website', icon: 'globe', score: 50, maxScore: 100, status: 'warning', headline: 'SNS 연결 없음, 트래킹만 존재' },
|
{ channel: '검색 최적화', icon: 'search', score: 29, maxScore: 100, status: 'critical', headline: '채널 분석 결과 (로그인 후 확인)' },
|
||||||
],
|
],
|
||||||
|
|
||||||
youtubeAudit: {
|
youtubeAudit: {
|
||||||
channelName: '뷰성형외과 VIEW Plastic Surgery',
|
channelName: '분석 대상 채널명 (로그인 후 확인)',
|
||||||
handle: '@ViewclinicKR',
|
handle: '@channel_handle',
|
||||||
subscribers: 103000,
|
subscribers: 54000,
|
||||||
totalVideos: 1064,
|
totalVideos: 312,
|
||||||
totalViews: 9952722,
|
totalViews: 4280000,
|
||||||
weeklyViewGrowth: { absolute: 67097, percentage: 4.09 },
|
weeklyViewGrowth: { absolute: 18400, percentage: 2.1 },
|
||||||
estimatedMonthlyRevenue: { min: 499, max: 1000 },
|
estimatedMonthlyRevenue: { min: 200, max: 600 },
|
||||||
avgVideoLength: '4.4분',
|
avgVideoLength: '5.2분',
|
||||||
uploadFrequency: '~주 1회',
|
uploadFrequency: '~주 1회',
|
||||||
channelCreatedDate: '2015-06-29',
|
channelCreatedDate: '2018-04-11',
|
||||||
subscriberRank: '#570K',
|
subscriberRank: '#980K',
|
||||||
channelDescription: '💜뷰성형외과💜\nVIEW가 예술이다! ✨\n19층 규모의 안전스마트 빌딩\n환자의 관점에서 생각하고\n환자의 입장에서 아름다움의 가치를 찾습니다.',
|
channelDescription: '채널 소개 내용은 로그인 후 확인하실 수 있습니다.',
|
||||||
linkedUrls: [
|
linkedUrls: [
|
||||||
{ label: '뷰성형외과 홈페이지', url: 'viewclinic.com' },
|
{ label: '공식 홈페이지', url: 'example.com' },
|
||||||
{ label: 'Instagram', url: 'instagram.com/viewplastic' },
|
{ label: 'Instagram', url: 'instagram.com/example' },
|
||||||
{ label: '이벤트 보기', url: 'viewclinic.com/board/events' },
|
|
||||||
{ label: '상담 예약', url: 'viewclinic.com/counsel/reservation' },
|
|
||||||
{ label: '카톡 상담', url: 'pf.kakao.com/_xbtVxjl' },
|
|
||||||
],
|
],
|
||||||
playlists: [
|
playlists: [
|
||||||
'VIEW 💜 무엇이든 물어보세요',
|
'시술 정보',
|
||||||
'VIEW 💜 재수술',
|
'전후 사례',
|
||||||
'VIEW 💜 가슴',
|
'원장 Q&A',
|
||||||
'VIEW 💜 눈+코',
|
'이벤트',
|
||||||
'VIEW 💜 윤곽+양악',
|
|
||||||
'VIEW 💜 지방성형',
|
|
||||||
'VIEW 💜 피부+안티에이징',
|
|
||||||
'VIEW랜딩 💜',
|
|
||||||
'VIEW 💜 방송영상',
|
|
||||||
],
|
],
|
||||||
topVideos: [
|
topVideos: [
|
||||||
{ title: '한번에 성공하는 성형', views: 574000, uploadedAgo: '4년 전', type: 'Short' },
|
{ title: '인기 영상 제목 (로그인 후 확인)', views: 210000, uploadedAgo: '2년 전', type: 'Short' },
|
||||||
{ title: '코성형+지방이식 전후', views: 525000, uploadedAgo: '4년 전', type: 'Short' },
|
{ title: '인기 영상 제목 (로그인 후 확인)', views: 185000, uploadedAgo: '3년 전', type: 'Short' },
|
||||||
{ title: '쌍수+뒤밑트임 전후', views: 392000, uploadedAgo: '3년 전', type: 'Short' },
|
{ title: '인기 영상 제목 (로그인 후 확인)', views: 97000, uploadedAgo: '1년 전', type: 'Short' },
|
||||||
{ title: 'V라인턱 변신과정 전격공개', views: 194000, uploadedAgo: '4년 전', type: 'Short' },
|
{ title: '인기 영상 제목 (로그인 후 확인)', views: 63000, uploadedAgo: '8개월 전', type: 'Long', duration: '12:34' },
|
||||||
{ title: 'K-미녀 클라스', views: 161000, uploadedAgo: '4년 전', type: 'Short' },
|
|
||||||
{ title: '앞트임하면 대박나는 사람', views: 154000, uploadedAgo: '2년 전', type: 'Short' },
|
|
||||||
{ title: '코성형! 내 얼굴에 가장 예쁜 코 찾아드립니다', views: 124000, uploadedAgo: '3년 전', type: 'Long', duration: '7:59' },
|
|
||||||
{ title: '아나운서 박은영, 가슴 할 결심을 하다', views: 127000, uploadedAgo: '9개월 전', type: 'Long', duration: '43:39' },
|
|
||||||
],
|
],
|
||||||
diagnosis: [
|
diagnosis: [
|
||||||
{ category: '구독자 대비 조회수 비율', detail: '영상당 평균 ~9,300회 (103K 구독자 대비 9% 도달률)', severity: 'critical', evidenceIds: ['yt-channel'] },
|
{ category: '진단 항목 A', detail: '상세 내용은 로그인 후 확인하실 수 있습니다.', severity: 'critical' },
|
||||||
{ category: '최근 롱폼 조회수', detail: '대부분 1,000~4,000회 수준', severity: 'critical' },
|
{ category: '진단 항목 B', detail: '상세 내용은 로그인 후 확인하실 수 있습니다.', severity: 'warning' },
|
||||||
{ category: 'Shorts 조회수', detail: '최근 업로드 500~1,000회 (과거 대비 급감)', severity: 'warning' },
|
{ category: '진단 항목 C', detail: '상세 내용은 로그인 후 확인하실 수 있습니다.', severity: 'critical' },
|
||||||
{ category: '업로드 빈도', detail: '주 1회 — 알고리즘 노출 최소 기준 미달', severity: 'warning' },
|
{ category: '진단 항목 D', detail: '상세 내용은 로그인 후 확인하실 수 있습니다.', severity: 'warning' },
|
||||||
{ category: '콘텐츠 톤앤매너', detail: '일관성 없음 — 교육/Q&A/전후/브랜딩 혼재', severity: 'critical' },
|
|
||||||
{ category: '썸네일 디자인', detail: '통일된 브랜드 시스템 없음', severity: 'warning' },
|
|
||||||
{ category: '최고 성과 Shorts', detail: '4년 전 콘텐츠 — 최근 재현 실패', severity: 'critical' },
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
instagramAudit: {
|
instagramAudit: {
|
||||||
accounts: [
|
accounts: [
|
||||||
{
|
{
|
||||||
handle: '@viewplastic',
|
handle: '@account_kr',
|
||||||
language: 'KR',
|
language: 'KR',
|
||||||
label: '국내 (한국어)',
|
label: '국내 계정',
|
||||||
posts: 1409,
|
posts: 430,
|
||||||
followers: 14000,
|
followers: 9200,
|
||||||
following: 4760,
|
following: 1840,
|
||||||
category: 'Health/beauty',
|
category: 'Health/beauty',
|
||||||
profileLink: 'litt.ly/viewplasticsurgery',
|
profileLink: 'example.com',
|
||||||
highlights: ['수술정보', 'ABOUT VIEW', '모델 모집', 'VIEW EVENT', '진료안내'],
|
highlights: ['이벤트', '시술 정보', '공지사항'],
|
||||||
reelsCount: 0,
|
reelsCount: 5,
|
||||||
contentFormat: '카드뉴스 (정보형 이미지) 100%',
|
contentFormat: '로그인 후 확인 가능',
|
||||||
profilePhoto: '모델 사진 (브랜드 로고 아님)',
|
profilePhoto: '로그인 후 확인 가능',
|
||||||
bio: '뷰 성형외과 | 가슴성형 · 안면윤곽 · 눈성형 · 코성형 · 리프팅\n💕신논현역 3번 출구 | 카톡 \'뷰성형외과의원\' | 02-539-1177',
|
bio: '계정 상세 정보는 로그인 후 확인하실 수 있습니다.',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
handle: '@view_plastic_surgery',
|
handle: '@account_en',
|
||||||
language: 'EN',
|
language: 'EN',
|
||||||
label: '국제 (영어)',
|
label: '국제 계정',
|
||||||
posts: 2524,
|
posts: 780,
|
||||||
followers: 68800,
|
followers: 31500,
|
||||||
following: 2834,
|
following: 620,
|
||||||
category: 'Health/beauty',
|
category: 'Health/beauty',
|
||||||
profileLink: 'litt.ly/viewplasticsurgeryenglish',
|
profileLink: 'example.com/en',
|
||||||
highlights: ['Mathilde', 'Thet San', 'Katerina', 'Yuri', 'Liposuction', 'Why VIEW?', 'Face Contour'],
|
highlights: ['Before/After', 'Our Story', 'FAQ'],
|
||||||
reelsCount: 50,
|
reelsCount: 28,
|
||||||
contentFormat: 'Before/After + 환자 스토리 + Reels',
|
contentFormat: '로그인 후 확인 가능',
|
||||||
profilePhoto: 'VIEW 골드 로고',
|
profilePhoto: '로그인 후 확인 가능',
|
||||||
bio: 'VIEW Plastic Surgery Official by VIEW Partners\n⚕ Most Renowned Hospital in Korea\n107 Bongeunsa-ro Gangnam-gu, Seoul, Korea',
|
bio: '계정 상세 정보는 로그인 후 확인하실 수 있습니다.',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
diagnosis: [
|
diagnosis: [
|
||||||
{ category: '계정 분리 → 팔로워 분산', detail: 'KR 14K + EN 68.8K = 합산 82.8K이지만 각각 약함', severity: 'warning' },
|
{ category: '진단 항목 A', detail: '상세 내용은 로그인 후 확인하실 수 있습니다.', severity: 'critical' },
|
||||||
{ category: 'KR 계정 Reels 전무', detail: '인스타 알고리즘 핵심인 Reels 콘텐츠 0개', severity: 'critical', evidenceIds: ['ig-kr-profile'] },
|
{ category: '진단 항목 B', detail: '상세 내용은 로그인 후 확인하실 수 있습니다.', severity: 'warning' },
|
||||||
{ category: '브랜드 비주얼 불일치', detail: 'KR=모델 프사, EN=VIEW 골드 로고', severity: 'warning', evidenceIds: ['ig-kr-profile', 'ig-en-profile'] },
|
{ category: '진단 항목 C', detail: '상세 내용은 로그인 후 확인하실 수 있습니다.', severity: 'critical' },
|
||||||
{ category: 'KR 팔로잉 과다', detail: '4,760 팔로잉 — 팔로우백 전략 의심', severity: 'warning' },
|
{ category: '진단 항목 D', detail: '상세 내용은 로그인 후 확인하실 수 있습니다.', severity: 'warning' },
|
||||||
{ category: '크로스포스팅 없음', detail: 'YouTube Shorts → Instagram Reels 연동 없음', severity: 'critical' },
|
|
||||||
{ category: '유튜브 ↔ 인스타 유입 단절', detail: '103K 구독자 → 14K 팔로워 전환 실패', severity: 'critical' },
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
facebookAudit: {
|
facebookAudit: {
|
||||||
pages: [
|
pages: [
|
||||||
{
|
{
|
||||||
url: 'facebook.com/viewps1',
|
url: 'facebook.com/example_kr',
|
||||||
pageName: '뷰성형외과',
|
pageName: '국내 페이지 (로그인 후 확인)',
|
||||||
language: 'KR',
|
language: 'KR',
|
||||||
label: '국내 (한국어)',
|
label: '국내 (한국어)',
|
||||||
followers: 253,
|
followers: 1240,
|
||||||
following: 0,
|
following: 0,
|
||||||
category: '성형외과 의사',
|
category: '건강/뷰티',
|
||||||
bio: '예쁨이 일상이 되는 순간! #뷰성형외과',
|
bio: '상세 정보는 로그인 후 확인하실 수 있습니다.',
|
||||||
logo: '일치 (공식 로고)',
|
logo: '로그인 후 확인',
|
||||||
logoDescription: '보라색+골드 깃털 공식 로고 사용 — 웹사이트와 동일한 공식 브랜드 자산. 원형 테두리 안에 깃털 심볼 + VIEW / Plastic Surgery 텍스트가 정확히 배치됨.',
|
logoDescription: '로고 분석 내용은 로그인 후 확인하실 수 있습니다.',
|
||||||
link: 'viewclinic.com',
|
link: 'example.com',
|
||||||
linkedDomain: 'viewclinic.com',
|
linkedDomain: 'example.com',
|
||||||
reviews: 0,
|
reviews: 12,
|
||||||
recentPostAge: '1일 전',
|
recentPostAge: '3일 전',
|
||||||
hasWhatsApp: false,
|
hasWhatsApp: false,
|
||||||
postFrequency: '주 1~2회 (카드뉴스 크로스포스팅)',
|
postFrequency: '로그인 후 확인',
|
||||||
topContentType: 'Instagram 카드뉴스 그대로 복사 게시',
|
topContentType: '로그인 후 확인',
|
||||||
engagement: '게시물당 좋아요 0~3개, 댓글 거의 없음',
|
engagement: '로그인 후 확인',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
url: 'facebook.com/viewclinic',
|
url: 'facebook.com/example_en',
|
||||||
pageName: 'View Plastic Surgery',
|
pageName: 'Official Page (로그인 후 확인)',
|
||||||
language: 'EN',
|
language: 'EN',
|
||||||
label: '국제 (영어)',
|
label: '국제 (영어)',
|
||||||
followers: 88000,
|
followers: 42000,
|
||||||
following: 11,
|
following: 8,
|
||||||
category: '건강/뷰티',
|
category: '건강/뷰티',
|
||||||
bio: 'Official Account by VIEW Partners',
|
bio: '상세 정보는 로그인 후 확인하실 수 있습니다.',
|
||||||
logo: '불일치 (비공식 변형)',
|
logo: '로그인 후 확인',
|
||||||
logoDescription: 'VIEW 텍스트 전용 골드 로고 — 공식 깃털 심볼이 빠진 비공식 변형 버전. YouTube, Instagram EN과 동일하지만, 공식 브랜드 가이드(보라색+골드 깃털)와 불일치.',
|
logoDescription: '로고 분석 내용은 로그인 후 확인하실 수 있습니다.',
|
||||||
link: 'viewplasticsurgery.com',
|
link: 'example.com/en',
|
||||||
linkedDomain: 'viewplasticsurgery.com (메인 도메인 viewclinic.com과 다름)',
|
linkedDomain: 'example.com/en',
|
||||||
reviews: 3,
|
reviews: 7,
|
||||||
recentPostAge: '14분 전',
|
recentPostAge: '1일 전',
|
||||||
hasWhatsApp: true,
|
hasWhatsApp: true,
|
||||||
postFrequency: '일 1~2회 (Before/After, 환자 스토리)',
|
postFrequency: '로그인 후 확인',
|
||||||
topContentType: 'Before/After 사진 + 환자 여정 Reels',
|
topContentType: '로그인 후 확인',
|
||||||
engagement: '게시물당 좋아요 50~300개, 댓글 10~50개',
|
engagement: '로그인 후 확인',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
diagnosis: [
|
diagnosis: [
|
||||||
{
|
{ category: '진단 항목 A', detail: '상세 내용은 로그인 후 확인하실 수 있습니다.', severity: 'critical' },
|
||||||
category: '채널 간 로고 파편화',
|
{ category: '진단 항목 B', detail: '상세 내용은 로그인 후 확인하실 수 있습니다.', severity: 'warning' },
|
||||||
detail: 'Facebook KR만 공식 깃털 로고를 사용하고, EN 페이지는 비공식 VIEW 골드 텍스트 로고를 사용. YouTube, Instagram도 각각 다른 변형 로고 사용 중.',
|
{ category: '진단 항목 C', detail: '상세 내용은 로그인 후 확인하실 수 있습니다.', severity: 'critical' },
|
||||||
severity: 'critical',
|
|
||||||
evidenceIds: ['fb-en-page', 'ig-kr-profile', 'ig-en-profile'],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
category: 'KR 페이지 사실상 방치',
|
|
||||||
detail: '팔로워 253명, 리뷰 0개, 게시물 참여율 0% — 운영 비용 대비 효과 없음',
|
|
||||||
severity: 'critical',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
category: '도메인 불일치',
|
|
||||||
detail: 'KR 페이지 → viewclinic.com, EN 페이지 → viewplasticsurgery.com — 서로 다른 도메인으로 연결, SEO 및 트래픽 분산',
|
|
||||||
severity: 'warning',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
category: 'KR/EN 팔로워 348:1 격차',
|
|
||||||
detail: 'EN 88K vs KR 253 — 국내 환자 유입 채널로서 Facebook KR은 완전히 실패',
|
|
||||||
severity: 'critical',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
category: 'KR 콘텐츠 전략 없음',
|
|
||||||
detail: 'Instagram 카드뉴스를 그대로 복사 게시 — Facebook 네이티브 콘텐츠(동영상, 이벤트, 그룹) 활용 0%',
|
|
||||||
severity: 'warning',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
category: 'Facebook Pixel ↔ 페이지 비연동',
|
|
||||||
detail: '웹사이트에 Facebook Pixel(ID: 299151214739571)이 설치되어 있으나, KR 페이지와의 광고 리타겟 연동 미확인',
|
|
||||||
severity: 'warning',
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
brandInconsistencies: [
|
brandInconsistencies: [
|
||||||
{
|
{
|
||||||
field: '로고',
|
field: '로고',
|
||||||
values: [
|
values: [
|
||||||
{ channel: 'YouTube', value: 'VIEW 텍스트 전용 골드 로고 (깃털 심볼 없음)', isCorrect: false },
|
{ channel: 'YouTube', value: '로그인 후 확인', isCorrect: false },
|
||||||
{ channel: 'Instagram KR', value: '모델 프로필 사진 (로고 아님)', isCorrect: false },
|
{ channel: 'Instagram', value: '로그인 후 확인', isCorrect: false },
|
||||||
{ channel: 'Instagram EN', value: 'VIEW 텍스트 전용 골드 로고 (깃털 심볼 없음)', isCorrect: false },
|
{ channel: 'Facebook KR', value: '로그인 후 확인', isCorrect: true },
|
||||||
{ channel: 'Facebook KR', value: '보라색+골드 깃털 로고 (공식)', isCorrect: true },
|
{ channel: 'Facebook EN', value: '로그인 후 확인', isCorrect: false },
|
||||||
{ channel: 'Facebook EN', value: 'VIEW 텍스트 전용 골드 로고 (깃털 심볼 없음)', isCorrect: false },
|
{ channel: 'Website', value: '로그인 후 확인', isCorrect: true },
|
||||||
{ channel: 'Website', value: '보라색+골드 깃털 로고 (공식)', isCorrect: true },
|
|
||||||
],
|
],
|
||||||
impact: '공식 깃털 로고를 사용하는 채널은 Facebook KR과 웹사이트 2곳뿐. YouTube, Instagram, Facebook EN은 비공식 변형 로고 사용',
|
impact: '로그인 후 확인하실 수 있습니다.',
|
||||||
recommendation: '전 채널에 보라색+골드 깃털 공식 로고 통일 (원형: 프로필, 가로형: 배너)',
|
recommendation: '로그인 후 확인하실 수 있습니다.',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: '연결 도메인',
|
field: '연결 도메인',
|
||||||
values: [
|
values: [
|
||||||
{ channel: 'YouTube', value: 'viewclinic.com', isCorrect: true },
|
{ channel: 'YouTube', value: '로그인 후 확인', isCorrect: true },
|
||||||
{ channel: 'Instagram KR', value: 'litt.ly/viewplasticsurgery', isCorrect: true },
|
{ channel: 'Instagram', value: '로그인 후 확인', isCorrect: true },
|
||||||
{ channel: 'Instagram EN', value: 'litt.ly/viewplasticsurgeryenglish', isCorrect: true },
|
{ channel: 'Facebook KR', value: '로그인 후 확인', isCorrect: true },
|
||||||
{ channel: 'Facebook KR', value: 'viewclinic.com', isCorrect: true },
|
{ channel: 'Facebook EN', value: '로그인 후 확인', isCorrect: false },
|
||||||
{ channel: 'Facebook EN', value: 'viewplasticsurgery.com', isCorrect: false },
|
|
||||||
],
|
],
|
||||||
impact: 'EN 페이지가 별도 도메인(viewplasticsurgery.com)으로 연결 → 도메인 권위(Domain Authority) 분산, SEO 불이익',
|
impact: '로그인 후 확인하실 수 있습니다.',
|
||||||
recommendation: 'viewclinic.com/en 하위 경로로 국제 페이지 통합, 기존 도메인은 301 리다이렉트',
|
recommendation: '로그인 후 확인하실 수 있습니다.',
|
||||||
},
|
|
||||||
{
|
|
||||||
field: '바이오/소개 메시지',
|
|
||||||
values: [
|
|
||||||
{ channel: 'YouTube', value: '💜뷰성형외과💜 VIEW가 예술이다!', isCorrect: false },
|
|
||||||
{ channel: 'Instagram KR', value: '뷰 성형외과 | 가슴성형·안면윤곽·눈성형·코성형·리프팅', isCorrect: false },
|
|
||||||
{ channel: 'Facebook KR', value: '예쁨이 일상이 되는 순간! #뷰성형외과', isCorrect: false },
|
|
||||||
{ channel: 'Facebook EN', value: 'Official Account by VIEW Partners', isCorrect: false },
|
|
||||||
],
|
|
||||||
impact: '4개 채널, 4개의 서로 다른 소개 메시지 → 통일된 브랜드 포지셔닝 부재, 핵심 USP(안전/21년 무사고) 미전달',
|
|
||||||
recommendation: '핵심 USP 포함 통일 바이오: "안전이 예술이 되는 곳 — 21년 무사고 VIEW 성형외과"',
|
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
consolidationRecommendation: 'Facebook KR 페이지(253명)는 폐쇄 또는 EN 페이지(88K)로 통합을 권장합니다. KR 페이지는 투자 대비 효과가 사실상 제로이며, 브랜드 혼란만 가중시키고 있습니다. Facebook은 한국 시장에서 오가닉 도달 목적이 아닌, Facebook Pixel 기반 리타겟 광고 전용 채널로 운영하는 것이 효율적입니다.',
|
consolidationRecommendation: '상세 분석 내용은 로그인 후 확인하실 수 있습니다.',
|
||||||
},
|
},
|
||||||
|
|
||||||
otherChannels: [
|
otherChannels: [
|
||||||
{ name: '카카오톡', status: 'active', details: '상담 전용 채널 운영', url: 'pf.kakao.com/_xbtVxjl' },
|
{ name: '카카오톡', status: 'active', details: '로그인 후 확인' },
|
||||||
{ name: '네이버 블로그', status: 'unknown', details: 'Naver API 연동 필요' },
|
{ name: '네이버 블로그', status: 'unknown', details: '로그인 후 확인' },
|
||||||
{ name: '네이버 플레이스', status: 'unknown', details: 'Naver API 연동 필요' },
|
{ name: '네이버 플레이스', status: 'active', details: '로그인 후 확인' },
|
||||||
{ name: 'TikTok', status: 'not_found', details: '계정 없음 또는 비활성' },
|
{ name: 'TikTok', status: 'not_found', details: '로그인 후 확인' },
|
||||||
{ name: '강남언니', status: 'active', details: '4.8점, 18,840 리뷰, 28 의료진', url: 'gangnamunni.com/hospitals/189' },
|
{ name: '리뷰 플랫폼', status: 'active', details: '로그인 후 확인' },
|
||||||
{ name: '모두닥', status: 'active', details: '기본 정보 등재' },
|
{ name: '의료 정보 플랫폼', status: 'active', details: '로그인 후 확인' },
|
||||||
{ name: 'Goodoc', status: 'active', details: '기본 정보 등재' },
|
|
||||||
{ name: '닥터나우', status: 'active', details: '기본 정보 등재' },
|
|
||||||
],
|
],
|
||||||
|
|
||||||
websiteAudit: {
|
websiteAudit: {
|
||||||
primaryDomain: 'viewclinic.com',
|
primaryDomain: 'example.com',
|
||||||
additionalDomains: [
|
additionalDomains: [
|
||||||
{ domain: 'viewplasticsurgery.com', purpose: '영문 국제 사이트' },
|
{ domain: 'example-en.com', purpose: '로그인 후 확인' },
|
||||||
{ domain: 'viewclinic-chat.com', purpose: '채팅 상담 전용' },
|
{ domain: 'example-chat.com', purpose: '로그인 후 확인' },
|
||||||
{ domain: 'viewclinic.modoo.at', purpose: '구 모두홈페이지' },
|
|
||||||
],
|
],
|
||||||
snsLinksOnSite: false,
|
snsLinksOnSite: false,
|
||||||
trackingPixels: [
|
trackingPixels: [
|
||||||
{ name: 'Facebook Pixel', installed: true, details: 'ID: 299151214739571' },
|
{ name: 'Facebook Pixel', installed: true, details: '로그인 후 확인' },
|
||||||
{ name: 'Kakao Pixel', installed: true },
|
{ name: 'Google Tag Manager', installed: true, details: '로그인 후 확인' },
|
||||||
{ name: 'Google Tag Manager', installed: true, details: 'GTM-52RT6DMK' },
|
|
||||||
],
|
],
|
||||||
mainCTA: '전화 + 카카오톡 상담',
|
mainCTA: '로그인 후 확인',
|
||||||
},
|
},
|
||||||
|
|
||||||
problemDiagnosis: [
|
problemDiagnosis: [
|
||||||
{
|
{ category: '핵심 문제 진단 A', detail: '상세 내용은 로그인 후 확인하실 수 있습니다.', severity: 'critical' },
|
||||||
category: '브랜드 아이덴티티 파편화',
|
{ category: '핵심 문제 진단 B', detail: '상세 내용은 로그인 후 확인하실 수 있습니다.', severity: 'critical' },
|
||||||
detail: '공식 깃털 로고(보라색+골드)는 Facebook KR과 웹사이트에만 사용. YouTube/Instagram EN/Facebook EN은 비공식 골드 텍스트 로고, Instagram KR은 모델 사진 사용 — 6개 채널에 4종의 서로 다른 시각적 아이덴티티',
|
{ category: '핵심 문제 진단 C', detail: '상세 내용은 로그인 후 확인하실 수 있습니다.', severity: 'warning' },
|
||||||
severity: 'critical',
|
{ category: '핵심 문제 진단 D', detail: '상세 내용은 로그인 후 확인하실 수 있습니다.', severity: 'critical' },
|
||||||
},
|
|
||||||
{
|
|
||||||
category: '콘텐츠 전략 부재',
|
|
||||||
detail: '콘텐츠 캘린더 없음, 톤앤매너 가이드 없음, KR↔EN 시너지 없음, YouTube→Instagram 크로스포스팅 없음',
|
|
||||||
severity: 'critical',
|
|
||||||
},
|
|
||||||
{
|
|
||||||
category: '플랫폼 간 유입 단절',
|
|
||||||
detail: 'YouTube 103K → Instagram 14K 전환 실패, 웹사이트에 SNS 링크 0개, 강남언니 18.8K 리뷰→영상 전환 없음',
|
|
||||||
severity: 'critical',
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
|
|
||||||
transformation: {
|
transformation: {
|
||||||
brandIdentity: [
|
brandIdentity: [
|
||||||
{ area: '로고', asIs: '채널마다 다른 로고 4종', toBe: 'VIEW 골드 로고 1종 통일' },
|
{ area: '항목 A', asIs: '로그인 후 확인', toBe: '로그인 후 확인' },
|
||||||
{ area: '컬러 팔레트', asIs: '없음 (혼재)', toBe: 'Primary: Gold (#C4A462) + Dark (#1A1A1A)' },
|
{ area: '항목 B', asIs: '로그인 후 확인', toBe: '로그인 후 확인' },
|
||||||
{ area: '프로필 사진', asIs: 'KR=모델, EN=로고, FB=깃털', toBe: '전 채널 VIEW 골드 로고 통일' },
|
{ area: '항목 C', asIs: '로그인 후 확인', toBe: '로그인 후 확인' },
|
||||||
{ area: '바이오 메시지', asIs: '채널마다 다른 메시지', toBe: '"안전이 예술이 되는 곳 — 21년 무사고 VIEW"' },
|
{ area: '항목 D', asIs: '로그인 후 확인', toBe: '로그인 후 확인' },
|
||||||
{ area: '해시태그', asIs: '비체계적', toBe: '#뷰성형외과 #VIEW성형 #강남성형외과 #21년무사고' },
|
|
||||||
],
|
],
|
||||||
contentStrategy: [
|
contentStrategy: [
|
||||||
{ area: '콘텐츠 캘린더', asIs: '없음', toBe: '월간 콘텐츠 캘린더 (4주 사이클)' },
|
{ area: '항목 A', asIs: '로그인 후 확인', toBe: '로그인 후 확인' },
|
||||||
{ area: '업로드 빈도', asIs: 'YouTube 주1회, Instagram 비정기', toBe: 'YouTube 주3회 + Instagram 일1회 + Shorts/Reels 주5회' },
|
{ area: '항목 B', asIs: '로그인 후 확인', toBe: '로그인 후 확인' },
|
||||||
{ area: '콘텐츠 포맷', asIs: 'KR Instagram = 카드뉴스만', toBe: '카드뉴스 30% + Reels 40% + 카루셀 20% + Stories 10%' },
|
{ area: '항목 C', asIs: '로그인 후 확인', toBe: '로그인 후 확인' },
|
||||||
{ area: '콘텐츠 앵글', asIs: '시술 정보 중심 (병원 관점)', toBe: '환자 의사결정 보조 중심 (환자 관점)' },
|
|
||||||
{ area: '톤앤매너', asIs: '없음', toBe: '"차분한 전문가" — 과장 없이, 설명으로 설득' },
|
|
||||||
],
|
],
|
||||||
platformStrategies: [
|
platformStrategies: [
|
||||||
{
|
{
|
||||||
platform: 'YouTube',
|
platform: 'YouTube',
|
||||||
icon: 'youtube',
|
icon: 'youtube',
|
||||||
currentMetric: '103K subscribers',
|
currentMetric: '로그인 후 확인',
|
||||||
targetMetric: '200K / 12개월',
|
targetMetric: '로그인 후 확인',
|
||||||
strategies: [
|
strategies: [
|
||||||
{ strategy: '업로드 빈도 3배 증가', detail: '주 3회 (롱폼 1 + Shorts 2)' },
|
{ strategy: '전략 항목 A', detail: '로그인 후 확인하실 수 있습니다.' },
|
||||||
{ strategy: '기존 영상 재활용', detail: '1,064개 기존 영상에서 AI 숏폼 100개 추출' },
|
{ strategy: '전략 항목 B', detail: '로그인 후 확인하실 수 있습니다.' },
|
||||||
{ strategy: '썸네일 시스템화', detail: 'VIEW 골드 워터마크 + 일관된 폰트/컬러' },
|
{ strategy: '전략 항목 C', detail: '로그인 후 확인하실 수 있습니다.' },
|
||||||
{ strategy: '커뮤니티 탭 활용', detail: '주 2회 투표/질문 — 구독자 참여 활성화' },
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
platform: 'Instagram KR',
|
platform: 'Instagram',
|
||||||
icon: 'instagram',
|
icon: 'instagram',
|
||||||
currentMetric: '14K followers',
|
currentMetric: '로그인 후 확인',
|
||||||
targetMetric: '50K / 12개월',
|
targetMetric: '로그인 후 확인',
|
||||||
strategies: [
|
strategies: [
|
||||||
{ strategy: 'Reels 즉시 시작', detail: 'YouTube Shorts 동시 게시 → 최소 주 5개' },
|
{ strategy: '전략 항목 A', detail: '로그인 후 확인하실 수 있습니다.' },
|
||||||
{ strategy: '프로필 사진 교체', detail: '모델 사진 → VIEW 골드 로고' },
|
{ strategy: '전략 항목 B', detail: '로그인 후 확인하실 수 있습니다.' },
|
||||||
{ strategy: '팔로잉 정리', detail: '4,760 → 300 이하로 정리' },
|
|
||||||
{ strategy: 'Stories 활성화', detail: '일 2~3개 (상담 비하인드, 병원 일상)' },
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
platform: 'Facebook',
|
platform: 'Facebook',
|
||||||
icon: 'facebook',
|
icon: 'facebook',
|
||||||
currentMetric: 'KR 253 + EN 88K',
|
currentMetric: '로그인 후 확인',
|
||||||
targetMetric: '통합 관리',
|
targetMetric: '로그인 후 확인',
|
||||||
strategies: [
|
strategies: [
|
||||||
{ strategy: '계정 통합', detail: 'KR 253명 페이지 → EN 88K 페이지로 통합 또는 폐쇄' },
|
{ strategy: '전략 항목 A', detail: '로그인 후 확인하실 수 있습니다.' },
|
||||||
{ strategy: '로고 통일', detail: '보라색 깃털 → VIEW 골드 로고' },
|
{ strategy: '전략 항목 B', detail: '로그인 후 확인하실 수 있습니다.' },
|
||||||
{ strategy: '역할 정의', detail: 'FB = 광고 랜딩 + 리타겟 전용' },
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
websiteImprovements: [
|
websiteImprovements: [
|
||||||
{ area: 'SNS 링크', asIs: '홈페이지에 0개', toBe: 'Header/Footer에 YouTube + Instagram + KakaoTalk 링크' },
|
{ area: '항목 A', asIs: '로그인 후 확인', toBe: '로그인 후 확인' },
|
||||||
{ area: 'YouTube 임베드', asIs: '없음', toBe: '시술 페이지별 관련 YouTube 영상 임베드' },
|
{ area: '항목 B', asIs: '로그인 후 확인', toBe: '로그인 후 확인' },
|
||||||
{ area: '콘텐츠 허브', asIs: '없음', toBe: 'SEO 콘텐츠 허브 구축 (시술별 가이드)' },
|
{ area: '항목 C', asIs: '로그인 후 확인', toBe: '로그인 후 확인' },
|
||||||
{ area: '도메인 통합', asIs: '4개 도메인 분산', toBe: 'viewclinic.com 단일 도메인 + /en 국제 페이지' },
|
|
||||||
],
|
],
|
||||||
newChannelProposals: [
|
newChannelProposals: [
|
||||||
{ channel: 'TikTok', priority: 'P1', rationale: '20~30대 첫 수술 고민층 도달, YouTube Shorts 동시 배포' },
|
{ channel: '채널 A', priority: 'P0', rationale: '로그인 후 확인하실 수 있습니다.' },
|
||||||
{ channel: '네이버 블로그', priority: 'P0', rationale: '한국 검색 1위 플랫폼 — SEO 핵심' },
|
{ channel: '채널 B', priority: 'P1', rationale: '로그인 후 확인하실 수 있습니다.' },
|
||||||
{ channel: '네이버 플레이스', priority: 'P0', rationale: '지역 검색 노출 필수' },
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -388,13 +306,9 @@ export const mockReport: MarketingReport = {
|
||||||
title: 'Foundation',
|
title: 'Foundation',
|
||||||
subtitle: '기반 구축',
|
subtitle: '기반 구축',
|
||||||
tasks: [
|
tasks: [
|
||||||
{ task: '브랜드 아이덴티티 가이드 확정 (로고, 컬러, 폰트, 톤앤매너)', completed: false },
|
{ task: '실행 항목은 로그인 후 확인하실 수 있습니다.', completed: false },
|
||||||
{ task: '전 채널 프로필 사진/배너 통일 교체', completed: false },
|
{ task: '실행 항목은 로그인 후 확인하실 수 있습니다.', completed: false },
|
||||||
{ task: 'Facebook KR 페이지 정리 (통합 또는 폐쇄)', completed: false },
|
{ task: '실행 항목은 로그인 후 확인하실 수 있습니다.', completed: false },
|
||||||
{ task: 'Instagram KR 팔로잉 정리 (4,760 → 300)', completed: false },
|
|
||||||
{ task: '웹사이트에 YouTube/Instagram 링크 추가', completed: false },
|
|
||||||
{ task: '기존 YouTube 영상 100개 → AI 숏폼 추출 시작', completed: false },
|
|
||||||
{ task: '콘텐츠 캘린더 v1 수립', completed: false },
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -402,12 +316,9 @@ export const mockReport: MarketingReport = {
|
||||||
title: 'Content Engine',
|
title: 'Content Engine',
|
||||||
subtitle: '콘텐츠 엔진 가동',
|
subtitle: '콘텐츠 엔진 가동',
|
||||||
tasks: [
|
tasks: [
|
||||||
{ task: 'YouTube Shorts 주 3~5회 업로드 시작', completed: false },
|
{ task: '실행 항목은 로그인 후 확인하실 수 있습니다.', completed: false },
|
||||||
{ task: 'Instagram Reels 주 5회 업로드 시작', completed: false },
|
{ task: '실행 항목은 로그인 후 확인하실 수 있습니다.', completed: false },
|
||||||
{ task: '원장 촬영 세션 월 2회 스케줄 확정', completed: false },
|
{ task: '실행 항목은 로그인 후 확인하실 수 있습니다.', completed: false },
|
||||||
{ task: '"원장이 설명하는" 시리즈 4편 제작/업로드', completed: false },
|
|
||||||
{ task: '네이버 블로그 개설 및 시술 가이드 10편 게시', completed: false },
|
|
||||||
{ task: 'TikTok 계정 개설 및 Shorts 동시 배포', completed: false },
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -415,26 +326,19 @@ export const mockReport: MarketingReport = {
|
||||||
title: 'Optimization',
|
title: 'Optimization',
|
||||||
subtitle: '최적화 & 광고',
|
subtitle: '최적화 & 광고',
|
||||||
tasks: [
|
tasks: [
|
||||||
{ task: '콘텐츠 성과 분석 리포트 v1', completed: false },
|
{ task: '실행 항목은 로그인 후 확인하실 수 있습니다.', completed: false },
|
||||||
{ task: '고성과 콘텐츠 기반 Instagram/Facebook 광고 세팅', completed: false },
|
{ task: '실행 항목은 로그인 후 확인하실 수 있습니다.', completed: false },
|
||||||
{ task: 'YouTube 썸네일 A/B 테스트', completed: false },
|
{ task: '실행 항목은 로그인 후 확인하실 수 있습니다.', completed: false },
|
||||||
{ task: '콘텐츠 캘린더 v2 (성과 데이터 반영)', completed: false },
|
|
||||||
{ task: '네이버 플레이스 최적화', completed: false },
|
|
||||||
{ task: 'KPI 리뷰: 구독자/팔로워 성장률, 상담 전환 추적', completed: false },
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
||||||
kpiDashboard: [
|
kpiDashboard: [
|
||||||
{ metric: 'YouTube 구독자', current: '103K', target3Month: '115K', target12Month: '200K' },
|
{ metric: 'KPI 지표 A', current: '로그인 후 확인', target3Month: '로그인 후 확인', target12Month: '로그인 후 확인' },
|
||||||
{ metric: 'YouTube 월 조회수', current: '~270K', target3Month: '500K', target12Month: '1.5M' },
|
{ metric: 'KPI 지표 B', current: '로그인 후 확인', target3Month: '로그인 후 확인', target12Month: '로그인 후 확인' },
|
||||||
{ metric: 'YouTube Shorts 평균 조회수', current: '500~1,000', target3Month: '5,000', target12Month: '20,000' },
|
{ metric: 'KPI 지표 C', current: '로그인 후 확인', target3Month: '로그인 후 확인', target12Month: '로그인 후 확인' },
|
||||||
{ metric: 'Instagram KR 팔로워', current: '14K', target3Month: '20K', target12Month: '50K' },
|
{ metric: 'KPI 지표 D', current: '로그인 후 확인', target3Month: '로그인 후 확인', target12Month: '로그인 후 확인' },
|
||||||
{ metric: 'Instagram KR Reels 평균 조회수', current: '0 (없음)', target3Month: '3,000', target12Month: '10,000' },
|
{ metric: 'KPI 지표 E', current: '로그인 후 확인', target3Month: '로그인 후 확인', target12Month: '로그인 후 확인' },
|
||||||
{ metric: 'Instagram EN 팔로워', current: '68.8K', target3Month: '75K', target12Month: '100K' },
|
|
||||||
{ metric: '네이버 블로그 방문자', current: '0 (없음)', target3Month: '5,000/월', target12Month: '30,000/월' },
|
|
||||||
{ metric: '웹사이트 → SNS 유입', current: '0%', target3Month: '5%', target12Month: '15%' },
|
|
||||||
{ metric: '콘텐츠 → 상담 전환', current: '측정 불가', target3Month: 'UTM 추적 시작', target12Month: '월 50건' },
|
|
||||||
],
|
],
|
||||||
|
|
||||||
screenshots: [
|
screenshots: [
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,10 @@ export default function ReportPage() {
|
||||||
const { id } = useParams<{ id: string }>();
|
const { id } = useParams<{ id: string }>();
|
||||||
const { data, isLoading, error } = useReport(id);
|
const { data, isLoading, error } = useReport(id);
|
||||||
|
|
||||||
|
// 로그인 false 블러처리
|
||||||
|
const isLogin = false;
|
||||||
|
const isBlurred = !isLogin;
|
||||||
|
|
||||||
if (isLoading) {
|
if (isLoading) {
|
||||||
return (
|
return (
|
||||||
<div className="min-h-screen flex items-center justify-center pt-20">
|
<div className="min-h-screen flex items-center justify-center pt-20">
|
||||||
|
|
@ -75,26 +79,27 @@ export default function ReportPage() {
|
||||||
|
|
||||||
<ClinicSnapshot data={data.clinicSnapshot} />
|
<ClinicSnapshot data={data.clinicSnapshot} />
|
||||||
|
|
||||||
<ChannelOverview channels={data.channelScores} />
|
<ChannelOverview channels={data.channelScores} blurred={isBlurred} />
|
||||||
|
|
||||||
<YouTubeAudit data={data.youtubeAudit} />
|
<YouTubeAudit data={data.youtubeAudit} blurred={isBlurred} />
|
||||||
|
|
||||||
<InstagramAudit data={data.instagramAudit} />
|
<InstagramAudit data={data.instagramAudit} blurred={isBlurred} />
|
||||||
|
|
||||||
<FacebookAudit data={data.facebookAudit} />
|
<FacebookAudit data={data.facebookAudit} blurred={isBlurred} />
|
||||||
|
|
||||||
<OtherChannels
|
<OtherChannels
|
||||||
channels={data.otherChannels}
|
channels={data.otherChannels}
|
||||||
website={data.websiteAudit}
|
website={data.websiteAudit}
|
||||||
|
blurred={isBlurred}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<ProblemDiagnosis diagnosis={data.problemDiagnosis} />
|
<ProblemDiagnosis diagnosis={data.problemDiagnosis} blurred={isBlurred} />
|
||||||
|
|
||||||
<TransformationProposal data={data.transformation} />
|
<TransformationProposal data={data.transformation} blurred={isBlurred} />
|
||||||
|
|
||||||
<RoadmapTimeline months={data.roadmap} />
|
<RoadmapTimeline months={data.roadmap} blurred={isBlurred} />
|
||||||
|
|
||||||
<KPIDashboard metrics={data.kpiDashboard} />
|
<KPIDashboard metrics={data.kpiDashboard} blurred={isBlurred} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</ScreenshotProvider>
|
</ScreenshotProvider>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue