Implement ourdigital-presales-seo skill

SKILL.md orchestration (8 gated stages), references (rate_card.yaml,
findings_to_service rubric, competitor sets), findings.schema.json contract,
and scripts: kg_query.py (generalized KG examination), estimate.py
(findings→rate-card 견적 md/xlsx/json), build_deck.py (9-slide branded PPTX),
render_pdf.sh (Korean PDF via headless Chrome), plus client_brief.html template.

Validated on Sono Hotels & Resorts findings: estimate OD-2026-001
(23-47M KRW) and a 9-slide deck generated cleanly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-27 23:10:53 +09:00
parent a55e77d1b0
commit ba88247496
10 changed files with 1034 additions and 0 deletions

View File

@@ -0,0 +1,69 @@
<!DOCTYPE html>
<!--
Client-facing pre-sales brief template (Korean). Stage 6.
HOW TO USE: copy this file into the engagement output folder, then fill the
{{TOKENS}} (and the four finding blocks) with the engagement's findings — keep
the CSS as-is. Render to PDF with: bash scripts/render_pdf.sh <thisfile>.html
Keep it ~1 page. Sanitize: no internal pricing strategy; tasteful competitor note only.
-->
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>{{PROSPECT}} 검색 가시성 사전 진단</title>
<style>
@page { size: A4; margin: 16mm 15mm 14mm 15mm; }
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body { font-family: "Apple SD Gothic Neo", "AppleGothic", "Noto Sans KR", sans-serif;
color: #1f2733; font-size: 10.6pt; line-height: 1.6; -webkit-print-color-adjust: exact; }
.accent { color: #1b6fb3; }
header { border-bottom: 3px solid #1b6fb3; padding-bottom: 10px; margin-bottom: 14px; }
header .kicker { font-size: 8.5pt; letter-spacing: .14em; color: #1b6fb3; font-weight: 700; text-transform: uppercase; }
header h1 { font-size: 19pt; margin: 4px 0 2px; color: #11243d; }
header .meta { font-size: 8.6pt; color: #6b7787; }
.disclaimer { font-size: 8pt; color: #8a93a0; font-style: italic; margin-top: 4px; }
h2 { font-size: 12.5pt; color: #11243d; margin: 18px 0 8px; padding-left: 9px; border-left: 4px solid #1b6fb3; }
.lead { background: #f3f7fb; border: 1px solid #dce7f1; border-radius: 7px; padding: 11px 14px; font-size: 10.4pt; }
.card { border: 1px solid #e2e8f0; border-radius: 7px; padding: 10px 13px; margin: 9px 0; page-break-inside: avoid; }
.card .n { display: inline-block; min-width: 20px; height: 20px; line-height: 20px; text-align: center;
background: #1b6fb3; color: #fff; border-radius: 50%; font-size: 9pt; font-weight: 700; margin-right: 7px; }
.card h3 { display: inline; font-size: 11pt; color: #11243d; }
.card ul { margin: 7px 0 6px; padding-left: 20px; }
.why { font-size: 9.4pt; color: #334; background: #fbf6ec; border-left: 3px solid #e0a73c; padding: 5px 9px; border-radius: 3px; }
.why b { color: #9a6a12; }
.num { color: #c0392b; font-weight: 700; }
.two { display: flex; gap: 14px; }
.two > div { flex: 1; }
.box { border: 1px solid #e2e8f0; border-radius: 7px; padding: 10px 13px; }
ol.next { margin: 4px 0; padding-left: 18px; }
footer { margin-top: 16px; border-top: 1px solid #e2e8f0; padding-top: 7px; font-size: 8.2pt; color: #8a93a0; }
</style>
</head>
<body>
<header>
<div class="kicker">SEO Pre-sales Brief · OurDigital</div>
<h1>{{PROSPECT}} <span class="accent">검색 가시성 사전 진단</span></h1>
<div class="meta">작성: OurDigital · {{DATE}} · 대상: {{DOMAIN}}</div>
<div class="disclaimer">* 본 자료는 공개 데이터만으로 수행한 사전 스냅샷이며, Search Console 등 권한 확보 후 정밀 진단으로 보완됩니다.</div>
</header>
<div class="lead">{{ONE_LINER — 자산은 최상급이나 검색 가시성이 규모에 미치지 못한다는 핵심 메시지}}</div>
<h2>핵심 발견</h2>
<!-- Repeat this card for each headline finding (recommended 3-4). -->
<div class="card">
<span class="n">1</span><h3>{{FINDING_TITLE}}</h3>
<ul><li>{{EVIDENCE_BULLET}} <span class="num">{{KEY_METRIC}}</span></li></ul>
<div class="why"><b>왜 중요한가</b> — {{WHY_IT_MATTERS}}</div>
</div>
<div class="two">
<div class="box"><h2 style="margin-top:0;">기대 효과</h2>{{EXPECTED_IMPACT}}</div>
<div class="box"><h2 style="margin-top:0;">다음 단계 제안</h2>
<ol class="next"><li><b>30분 미팅</b></li><li><b>정밀 진단</b> (권한 확보 후)</li><li><b>단기 파일럿</b></li></ol>
</div>
</div>
<footer>OurDigital · andrew.yim@ourdigital.org · 공개 데이터 기준 사전 진단 ({{DATE}})</footer>
</body>
</html>