fix(supporters): 의료진 영상·뉴스룸·병원 정보의 운영자 시점 설명을 고객 문장으로 교체

- 의료진 영상: 선별 기준 설명(60초 롱폼/쇼츠 분류, 임베드·복제 고지)을 "무엇을 볼 수 있는지"로. 탭명 설명 영상 Top 10 / 1분 답변 영상, 1위 통계는 설명 영상 기준으로
- 뉴스룸: "링크 트리", 수집 질의 수 등 제거. In The News, "제목을 누르면 원문으로". 제3자 보도 미포함 사실은 고객 문장으로 유지
- 병원 정보: "홈페이지에 텍스트가 없어 강남언니 표기 사용" 사정 설명 제거, 출처 표기만 유지
- 홈 칩: "영상 1,215편을 근거로" → "원장이 직접 설명한 영상을 근거로" (채널 전체 편수를 근거 수로 읽히지 않게)
- 글 상세 영상 메모 "이 글의 주 원천" → "이 글의 바탕이 된 영상"

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Haewon Kam 2026-09-07 09:37:42 +09:00
parent f683fca187
commit 8198051632
16 changed files with 28 additions and 28 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 MiB

After

Width:  |  Height:  |  Size: 14 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 MiB

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 252 KiB

After

Width:  |  Height:  |  Size: 264 KiB

View File

@ -26,7 +26,7 @@ sources:
- { label: "유튜브 · [바디성형] 보형물 촉감과 수술 후 촉감은 다르다 (오원석 원장)", url: "https://www.youtube.com/watch?v=UHY7WDyFggk", accessed: "2026-09-04" }
tags: [보형물, 촉감, 피막, 구형구축]
videos:
- { id: UHY7WDyFggk, title: "[바디성형] 보형물 촉감과 수술 후 촉감은 다르다", speaker: "오원석 원장", published: "2026-07-31", note: "이 글의 주 원천" }
- { id: UHY7WDyFggk, title: "[바디성형] 보형물 촉감과 수술 후 촉감은 다르다", speaker: "오원석 원장", published: "2026-07-31", note: "이 글의 바탕이 된 영상" }
- { id: f_LcqexakoM, title: "[바디성형] 보형물 표면이 촉감에 영향을 미친다?", published: "2026-07-31" }
- { id: SnRlnyi6XSE, title: "[바디성형] 진짜 내 것 같은 보형물, 전문의는 이렇게 봅니다", published: "2026-07-12" }
- { id: ydJFFSF82a4, title: "[바디성형] 내 몸이 보형물을 거부하면 생기는 무서운 현상", published: "2026-07-12" }

View File

@ -32,7 +32,7 @@ sources:
- { label: "뷰성형외과 홈페이지 · 모티바 가슴성형", url: "https://www.viewclinic.com/breast/breast-augmentation/motiva/", accessed: "2026-09-04" }
tags: [보형물, 스무스, 텍스처, 나노텍스처, 구형구축, 모티바]
videos:
- { id: k8p9JU4H-Zo, title: "[바디성형] 다 다른 보형물 표면? 이 영상만 보면 당신도 전문가", speaker: "손유성 원장", published: "2026-07-28", note: "이 글의 주 원천" }
- { id: k8p9JU4H-Zo, title: "[바디성형] 다 다른 보형물 표면? 이 영상만 보면 당신도 전문가", speaker: "손유성 원장", published: "2026-07-28", note: "이 글의 바탕이 된 영상" }
- { id: pzd7OzllM8U, title: "[바디성형] 내 몸이 '진짜 내 가슴'으로 착각하는 보형물의 비밀", speaker: "손유성 원장", published: "2026-07-12" }
- { id: HHnLD9PPVXU, title: "[바디성형] 나노텍스처 보형물은 장점만 뽑아 만들었다?", published: "2026-07-28" }
- { id: 4w8n55nqKeU, title: "[바디성형] 성형외과 전문의가 생각하는 가장 좋은 보형물은?", published: "2026-07-28" }

View File

@ -32,7 +32,7 @@ sources:
- { label: "뷰성형외과 홈페이지 · 프리저베", url: "https://www.viewclinic.com/preserve/", accessed: "2026-09-04" }
tags: [가슴성형, 모티바, 프리저베, 수술시간, 회복기간]
videos:
- { id: kxNFX7ihPaA, title: "[모티바 프리저베] 전신마취없이 볼륨을 살릴 수 있다?", speaker: "정재현 원장", published: "2026-08-04", note: "이 글의 주 원천" }
- { id: kxNFX7ihPaA, title: "[모티바 프리저베] 전신마취없이 볼륨을 살릴 수 있다?", speaker: "정재현 원장", published: "2026-08-04", note: "이 글의 바탕이 된 영상" }
- { id: xohC5C6aY70, title: "모티바 프리저베는 수술 직후 만세가 가능하다?", published: "2026-08-31" }
- { id: K9jUsOS7V5I, title: "[모티바 프리저베] 200cc로 300cc 볼륨감 내는 법?", published: "2026-08-05" }
- { id: X1wQ2dMhMV8, title: "[모티바 프리저베] 의외로 나에게도 적합할 수 있다?", published: "2026-08-21" }

View File

@ -27,7 +27,7 @@ sources:
- { label: "뷰성형외과 홈페이지 · 가슴재수술", url: "https://www.viewclinic.com/breast/breast-re-operation/", accessed: "2026-09-04" }
tags: [가슴재수술, 체크리스트, 구형구축, 보형물]
videos:
- { id: 7MsCQkc1isc, title: "[바디성형] 안 보면 후회합니다. 재수술 전 체크리스트", speaker: "정재현 원장", published: "2026-06-28", note: "이 글의 주 원천" }
- { id: 7MsCQkc1isc, title: "[바디성형] 안 보면 후회합니다. 재수술 전 체크리스트", speaker: "정재현 원장", published: "2026-06-28", note: "이 글의 바탕이 된 영상" }
- { id: y2MKjz3G10M, title: "[바디성형] 재수술 전 '이것' 꼭 확인하세요!", published: "2026-06-28" }
- { id: lVm-RdD7w5w, title: "[바디성형] 재수술 보형물 선택 기준?", published: "2026-07-05" }
- { id: yaajS7iXlkM, title: "[바디성형] 재수술에서 포켓이 중요한 이유", published: "2026-07-05" }

View File

@ -35,7 +35,7 @@ sources:
- { label: "유튜브 · [바디성형] 마취과 전문의 상주 병원이 중요한 이유", url: "https://www.youtube.com/watch?v=fJBmZSwJvAU", accessed: "2026-09-04" }
tags: [안전, 마취과, CCTV, 수술실명제, 검진센터]
videos:
- { id: fJBmZSwJvAU, title: "[바디성형] 마취과 전문의 상주 병원이 중요한 이유", published: "2026-08-29", note: "이 글의 주 원천" }
- { id: fJBmZSwJvAU, title: "[바디성형] 마취과 전문의 상주 병원이 중요한 이유", published: "2026-08-29", note: "이 글의 바탕이 된 영상" }
- { id: HVWuRuAyQmw, title: "성형외과 전문의가 말하는 진짜 안전 체크리스트", published: "2025-12-18" }
- { id: Nbemu6mL_uY, title: "가장 VIEW다운 가치 : 안전과 신뢰의 약속", published: "2026-05-19" }
- { id: YtagsnBZGq8, title: "[코성형] 전신마취가 안전한 이유?", published: "2026-05-05" }

View File

@ -9,11 +9,11 @@ const ld = [clinicSchema(site), physicianSchema('dr-choi')];
---
<Base title="뷰성형외과 기본 정보" description="뷰성형외과의원의 주소·전화·진료시간·층별 구성·진료과·공개 이력을 한 곳에 정리했습니다. 방문 전에 확인하세요." jsonLd={ld}>
<article class="wrap" style="padding-bottom:4rem">
<header class="article-head"><div class="eyebrow">Fact Sheet</div><h1 class="serif">Fact Sheet</h1><p style="color:var(--slate-600);margin-top:0.6rem"><strong style="color:var(--primary-900)">뷰성형외과 기본 정보.</strong> 주소, 전화, 진료시간, 층별 안내, 의료진을 한 곳에 모았습니다. 표기는 공식 홈페이지를 따르고, 홈페이지에 없는 항목은 출처를 따로 적습니다.</p></header>
<header class="article-head"><div class="eyebrow">Fact Sheet</div><h1 class="serif">Fact Sheet</h1><p style="color:var(--slate-600);margin-top:0.6rem"><strong style="color:var(--primary-900)">뷰성형외과 기본 정보.</strong> 주소, 전화, 진료시간, 층별 안내, 의료진을 한 곳에 모았습니다. 항목마다 어디서 확인한 정보인지 출처를 적어 두었습니다.</p></header>
<FactBlock />
<h2>진료시간</h2>
<div class="table-wrap"><table><thead><tr><th>요일</th><th>진료</th></tr></thead><tbody>{fact.hours.rows.map((r) => <tr><td>{r.days}</td><td>{r.open ? `${r.open} ~ ${r.close}` : r.note}</td></tr>)}</tbody></table></div>
<p style="font-size:0.88rem;color:var(--slate-500)">출처: <a href={fact.hours.source} rel="noopener">{fact.hours.sourceLabel}</a>. 공식 홈페이지에는 진료시간이 텍스트로 없어 강남언니 표기를 사용했습니다. 방문 전 전화로 확인을 권합니다.</p>
<p style="font-size:0.88rem;color:var(--slate-500)">출처: <a href={fact.hours.source} rel="noopener">{fact.hours.sourceLabel}</a>. 진료시간은 바뀔 수 있으니 방문 전 전화로 한 번 더 확인하세요.</p>
<h2>건물과 층별 구성</h2>
<figure class="figure"><img src="/img/clinic/building-clean.jpg" alt="뷰성형외과 빌딩 외관. 유리 외벽에 VIEW 로고가 있는 고층 건물" /><figcaption>뷰성형외과 빌딩 외관. 출처: 공식 홈페이지 병원둘러보기</figcaption></figure>
<p>{fact.building.summary}입니다.</p>
@ -29,10 +29,10 @@ const ld = [clinicSchema(site), physicianSchema('dr-choi')];
<h2>진료과와 진료 분야</h2>
<p>진료과: {fact.departments.join(', ')}</p>
<p>진료 분야: {fact.specialties.join(', ')}</p>
<h2>이 사이트 글에 등장하는 의료진</h2>
<h2>글과 영상에서 설명하는 의료진</h2>
{docs.map((p) => (<div class="doctor-strip">{p.image && <img src={p.image} alt={`${p.name} ${p.title}`} />}<div><div class="name">{p.name} <span style="font-weight:500;color:var(--slate-600)">{p.title}</span></div><p class="creds">{p.credentials.slice(0,3).join(' · ')} <a href={p.url} rel="noopener">프로필</a></p></div></div>))}
<p style="font-size:0.88rem;color:var(--slate-500)">전체 의료진 {fact.surfaces.gangnamunni.doctors}명(강남언니 등록 기준)은 <a href="https://www.viewclinic.com/viewis/doctors/" rel="noopener">홈페이지 의료진 소개</a>에서 확인할 수 있습니다.</p>
<h2>공개된 이력</h2>
<h2>병원이 공개한 이력</h2>
<ul>{fact.recognitions.map((r) => <li>{r.text} <a href={r.source} rel="noopener" style="font-size:0.85rem">(출처)</a></li>)}</ul>
<h2>공식 채널</h2>
<ul>

View File

@ -23,7 +23,7 @@ const ld = [
<p class="lede">{fact.shortName}는 {fact.founded}년 개원한 서울 강남 신논현역 인근 성형외과입니다. 이곳은 병원을 알아보는 분들이 실제로 묻는 질문을 골라, 원장 설명 영상과 병원이 공개한 자료를 근거로 답하는 곳입니다. 글마다 누가 썼고 원장 감수를 거쳤는지 밝힙니다.</p>
<div class="chips">
<span class="chip"><span class="dot"></span>{fact.founded}년 개원 · 신논현역 3번 출구 50m</span>
<span class="chip"><span class="dot"></span>원장 설명 영상 {fact.surfaces.youtube.videos}편을 근거로</span>
<span class="chip"><span class="dot"></span>원장이 직접 설명한 영상을 근거로</span>
</div>
<div class="hero .actions" style="display:flex;gap:0.8rem;flex-wrap:wrap;margin-top:1.6rem">
<a class="btn primary" href="/posts">전체 글 보기</a>

View File

@ -16,15 +16,15 @@ const ld = [
{ '@type': 'ItemList', '@id': `${site}/newsroom#list`, name: '뷰성형외과 언론 보도 목록', numberOfItems: items.length, itemListOrder: 'https://schema.org/ItemListOrderDescending', itemListElement: items.slice(0, 200).map((i, idx) => ({ '@type': 'ListItem', position: idx + 1, url: i.url, name: i.title })) },
];
---
<Base title="뉴스룸 · 뷰성형외과 언론 보도 링크 트리" description={`뷰성형외과가 배포한 보도자료와 원장 기고·인터뷰, 언론 언급 기사 ${items.length}건을 연도·주제별로 정리한 링크 모음. ${years[years.length - 1]}년부터 ${years[0]}년까지, 매체 ${outlets}곳.`} jsonLd={ld}>
<Base title="뉴스룸 · 뷰성형외과 언론 보도 모음" description={`뷰성형외과 보도자료와 원장 기고·인터뷰, 언론 보도 ${items.length}건을 연도와 주제별로 모았습니다. ${years[years.length - 1]}년부터 ${years[0]}년까지, 매체 ${outlets}곳. 제목을 누르면 기사 원문으로 이동합니다.`} jsonLd={ld}>
<section class="section dark" style="padding:3.5rem 0 3rem">
<div class="wrap-wide">
<div class="sec-head"><div class="eyebrow" style="color:var(--purple-300)">Newsroom</div><h1 class="serif" style="font-size:2rem;color:#fff;display:inline-block;background:linear-gradient(to right,var(--purple-300),var(--blue-300));-webkit-background-clip:text;background-clip:text;color:transparent">Press Link Tree</h1><p class="sub">뷰성형외과가 배포한 보도자료와 원장 기고, 언론 언급 기사를 연도별로 모았습니다. 기사 본문은 싣지 않고 원문으로 연결합니다.</p></div>
<div class="sec-head"><div class="eyebrow" style="color:var(--purple-300)">Newsroom</div><h1 class="serif" style="font-size:2rem;color:#fff;display:inline-block;background:linear-gradient(to right,var(--purple-300),var(--blue-300));-webkit-background-clip:text;background-clip:text;color:transparent">In The News</h1><p class="sub">뷰성형외과 보도자료와 원장 기고·인터뷰, 언론 보도를 연도와 주제별로 모았습니다. 제목을 누르면 기사 원문으로 이동합니다.</p></div>
<div class="stats">
<div class="stat"><b>{items.length.toLocaleString()}</b><span class="label">기사 링크</span><span class="desc">{years[years.length - 1]}년부터 {years[0]}년까지. 기사 본문은 싣지 않고 원문으로 연결합니다.</span></div>
<div class="stat"><b>{counts.release.toLocaleString()}</b><span class="label">보도자료</span><span class="desc">병원이 주체로 배포한 기사. 수상·도입·행사·협약.</span></div>
<div class="stat"><b>{counts.column.toLocaleString()}</b><span class="label">원장 기고·인터뷰</span><span class="desc">뷰성형외과 원장 인용이 들어간 시술 설명 기사.</span></div>
<div class="stat"><b>{outlets}</b><span class="label">매체</span><span class="desc">메디컬투데이·전민일보·아주경제·머니S·뉴시스 등.</span></div>
<div class="stat"><b>{items.length.toLocaleString()}</b><span class="label">기사</span><span class="desc">{years[years.length - 1]}년부터 {years[0]}년까지</span></div>
<div class="stat"><b>{counts.release.toLocaleString()}</b><span class="label">보도자료</span><span class="desc">병원이 직접 알린 소식. 수상, 장비 도입, 행사, 협약</span></div>
<div class="stat"><b>{counts.column.toLocaleString()}</b><span class="label">원장 기고·인터뷰</span><span class="desc">원장이 언론에 직접 설명한 수술 이야기</span></div>
<div class="stat"><b>{outlets}</b><span class="label">매체</span><span class="desc">메디컬투데이, 전민일보, 아주경제, 머니S, 뉴시스 등</span></div>
</div>
</div>
</section>
@ -66,7 +66,7 @@ const ld = [
</section>
);
})}
<p class="disclosure">수집 기준: 뷰성형외과 홈페이지 언론보도 게시판(2012~2021년 7월, 이후 갱신 없음)과 네이버 뉴스 검색(2026-09-04 기준, "뷰성형외과" 등 6개 질의). 규제·사건 등 제3자 보도는 이 링크 트리의 범위(병원 배포 기사)에 넣지 않았습니다. 기사 제목과 매체명만 표기하고 본문은 인용하지 않습니다. 원문 링크가 사라진 기사는 병원 게시판 사본으로 연결됩니다.</p>
<p class="disclosure">뷰성형외과 홈페이지 언론보도 게시판과 네이버 뉴스에서 모은 기사입니다(2026-09-04 기준). 병원이 알리거나 원장이 설명한 기사만 모았고, 그 밖의 보도는 포함하지 않았습니다. 기사 본문은 원문에서 읽을 수 있으며, 원문이 사라진 기사는 병원 게시판 사본으로 연결됩니다.</p>
</div>
</section>
</Base>

View File

@ -8,7 +8,7 @@ const cats = Object.keys(CATEGORY_LABELS);
const site = Astro.site!.toString().replace(/\/$/, '');
const ld = { '@type': 'CollectionPage', '@id': `${site}/posts#page`, name: '전체 글', url: `${site}/posts`, inLanguage: 'ko', publisher: { '@type': 'Organization', name: SITE_NAME, url: site }, hasPart: posts.map((p) => ({ '@type': 'Article', headline: p.data.title, url: `${site}/posts/${p.id}`, dateModified: p.data.dateModified })) };
---
<Base title="전체 글" description="뷰성형외과에 대해 사람들이 묻는 질문에 서포터즈가 먼저 답한 글 목록. 카테고리별로 정리했습니다." jsonLd={ld}>
<Base title="전체 글" description="뷰성형외과에 대해 자주 묻는 질문과 답을 주제별로 모았습니다." jsonLd={ld}>
<div class="wrap-wide" style="padding-bottom:4rem">
<header class="article-head"><div class="eyebrow">Archive</div><h1 class="serif">All Answers</h1><p style="color:var(--slate-600);margin-top:0.6rem">궁금한 주제를 골라 보세요. 글 하나가 질문 하나에 답합니다.</p></header>
<div class="cat-grid">

View File

@ -10,19 +10,19 @@ const fmt = (n: number) => n >= 10000 ? `${(n / 10000).toFixed(n >= 100000 ? 0 :
const dur = (s: number) => s >= 3600 ? `${Math.floor(s / 3600)}:${String(Math.floor((s % 3600) / 60)).padStart(2, '0')}:${String(s % 60).padStart(2, '0')}` : `${Math.floor(s / 60)}:${String(s % 60).padStart(2, '0')}`;
const shorts = (data.shortsInfo ?? []) as (V & { answer: string; qb?: string })[];
const tabs: { key: string; label: string; desc: string; list: V[] }[] = [
{ key: 'long', label: '롱폼 Top 10', desc: '쇼츠가 아닌 일반 영상 중 시술·안전을 설명하는 정보형만. 후기·리뷰·토크 성격 영상과 유튜브가 쇼츠로 분류한 영상은 제외했습니다', list: data.topLong as V[] },
{ key: 'shorts', label: '정보형 쇼츠', desc: '60초 이하 쇼츠 중 질문에 답이 되는 영상만 골라, 서포터즈가 한 문단으로 답을 정리했습니다. 전후·후기 성격 쇼츠는 싣지 않습니다', list: shorts },
{ key: 'all', label: '채널 인기 전체', desc: '길이와 성격을 가리지 않은 채널 전체 조회수 순위. 참고용', list: data.top as V[] },
{ key: 'long', label: '설명 영상 Top 10', desc: '수술 방법과 안전을 차분히 설명하는 영상입니다. 후기나 토크 영상은 넣지 않았습니다', list: data.topLong as V[] },
{ key: 'shorts', label: '1분 답변 영상', desc: '궁금한 것 하나에 1분 안에 답하는 짧은 영상입니다. 영상마다 서포터즈가 답을 한 문단으로 정리해 두었습니다', list: shorts },
{ key: 'all', label: '채널 인기 전체', desc: '주제와 길이를 가리지 않고 채널에서 가장 많이 본 영상입니다', list: data.top as V[] },
];
const ld = [
{ '@type': 'CollectionPage', '@id': `${site}/videos#page`, name: '뷰성형외과 유튜브 조회수 Top 10', url: `${site}/videos`, inLanguage: 'ko', about: { '@id': `${fact.url}/#clinic` }, publisher: { '@type': 'Organization', name: SITE_NAME, url: site }, dateModified: data.fetchedAt },
{ '@type': 'ItemList', '@id': `${site}/videos#list`, name: '뷰성형외과 유튜브 조회수 상위 영상', itemListOrder: 'https://schema.org/ItemListOrderDescending', numberOfItems: data.top.length, itemListElement: (data.top as V[]).map((v, i) => ({ '@type': 'ListItem', position: i + 1, item: { '@type': 'VideoObject', name: v.title, url: `https://www.youtube.com/watch?v=${v.id}`, embedUrl: `https://www.youtube-nocookie.com/embed/${v.id}`, thumbnailUrl: `https://i.ytimg.com/vi/${v.id}/hqdefault.jpg`, uploadDate: v.published, duration: `PT${v.duration}S`, interactionStatistic: { '@type': 'InteractionCounter', interactionType: 'https://schema.org/WatchAction', userInteractionCount: v.views }, publisher: { '@type': 'Organization', name: ch.title, url: ch.url } } })) },
];
---
<Base title="영상 · 뷰성형외과 유튜브 조회수 Top 10" description={`뷰성형외과 공식 유튜브(@ViewclinicKR, 영상 ${ch.videos.toLocaleString()}편, 누적 조회 ${fmt(ch.totalViews)}회)에서 조회수가 가장 높은 영상 10편. 전체·롱폼·쇼츠로 나눠 공식 플레이어로 재생합니다. ${data.fetchedAt} 집계.`} jsonLd={ld}>
<Base title="의료진 영상 · 뷰성형외과 원장이 직접 설명하는 영상" description={`뷰성형외과 원장이 수술 방법과 안전을 직접 설명하는 공식 유튜브 영상을 골라 모았습니다. 궁금한 영상을 바로 재생할 수 있고, 짧은 영상에는 서포터즈가 답을 글로 정리했습니다. 조회수는 ${data.fetchedAt} 기준.`} jsonLd={ld}>
<section class="section dark" style="padding:3.5rem 0 3rem">
<div class="wrap-wide">
<div class="sec-head"><div class="eyebrow" style="color:var(--purple-300)">Videos</div><h1 class="serif" style="font-size:2rem;display:inline-block;background:linear-gradient(to right,var(--purple-300),var(--blue-300));-webkit-background-clip:text;background-clip:text;color:transparent">Most Watched</h1><p class="sub">뷰성형외과 공식 유튜브에서 가장 많이 본 설명 영상. 기본은 60초를 넘는 롱폼이며, 쇼츠는 질문에 답이 되는 것만 텍스트 답과 함께 싣습니다.</p>
<div class="sec-head"><div class="eyebrow" style="color:var(--purple-300)">Videos</div><h1 class="serif" style="font-size:2rem;display:inline-block;background:linear-gradient(to right,var(--purple-300),var(--blue-300));-webkit-background-clip:text;background-clip:text;color:transparent">Most Watched</h1><p class="sub">원장이 수술 방법과 안전을 직접 설명하는 영상을 골라 모았습니다. 궁금한 영상을 여기서 바로 재생할 수 있습니다.</p>
<div class="doc-links">
<a class="doc-link" href="https://www.viewclinic.com/viewis/doctors/" rel="noopener" target="_blank">
<span class="ico" aria-hidden="true"><svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor"><path d="M12 12a5 5 0 1 0 0-10 5 5 0 0 0 0 10Zm0 2c-4.4 0-8 2.2-8 5v3h16v-3c0-2.8-3.6-5-8-5Z"/></svg></span>
@ -36,10 +36,10 @@ const ld = [
</a>
</div></div>
<div class="stats">
<div class="stat"><b>{fmt(ch.totalViews)}</b><span class="label">누적 조회수</span><span class="desc">채널 전체 {ch.videos.toLocaleString()}편 합계. {data.fetchedAt} 기준.</span></div>
<div class="stat"><b>{fmt(ch.totalViews)}</b><span class="label">누적 조회수</span><span class="desc">공식 유튜브 채널 영상 {ch.videos.toLocaleString()}편 합계 ({data.fetchedAt} 기준)</span></div>
<div class="stat"><b>{ch.subscribers}</b><span class="label">구독자</span><span class="desc"><a href={ch.url} rel="noopener" style="color:var(--purple-300)">{ch.handle}</a></span></div>
<div class="stat"><b>{fmt((data.top as V[])[0].views)}</b><span class="label">1위 영상 조회수</span><span class="desc">{(data.top as V[])[0].title}</span></div>
<div class="stat"><b>{shorts.length}</b><span class="label">정보형 쇼츠</span><span class="desc">쇼츠 885편 중 질문에 답이 되는 영상만 골라 텍스트 답을 붙였습니다.</span></div>
<div class="stat"><b>{fmt((data.topLong as V[])[0].views)}</b><span class="label">설명 영상 1위 조회수</span><span class="desc">{(data.topLong as V[])[0].title}</span></div>
<div class="stat"><b>{shorts.length}</b><span class="label">정보형 쇼츠</span><span class="desc">궁금한 것 하나에 1분 안에 답하는 영상. 서포터즈가 답을 글로도 정리했습니다.</span></div>
</div>
</div>
</section>
@ -50,7 +50,7 @@ const ld = [
</div>
{tabs.map((t, i) => (
<div class="vpanel" data-panel={t.key} hidden={i !== 0}>
<p class="sub" style="color:var(--slate-600);margin:0.8rem 0 1.2rem">{t.desc}. 조회수는 {data.fetchedAt} 기준이며 유튜브에서 계속 바뀝니다.</p>
<p class="sub" style="color:var(--slate-600);margin:0.8rem 0 1.2rem">{t.desc}. 조회수는 {data.fetchedAt} 기준입니다.</p>
<ol class="vlist">
{t.list.map((v, idx) => (
<li class="vitem">
@ -66,7 +66,7 @@ const ld = [
</ol>
</div>
))}
<p class="disclosure">영상은 뷰성형외과 공식 유튜브 채널의 공개 영상이며, 유튜브 공식 임베드 플레이어로 재생됩니다. 이 페이지는 영상을 복제하거나 저장하지 않습니다. 조회수·좋아요·댓글 수는 {data.fetchedAt} 기준이며 유튜브에서 계속 바뀝니다. 임베드가 허용되지 않은 영상은 목록에서 제외합니다(현재 0편).</p>
<p class="disclosure">영상은 뷰성형외과 공식 유튜브 채널에서 재생됩니다. 조회수·좋아요·댓글 수는 {data.fetchedAt} 기준입니다.</p>
</div>
</section>
</Base>