✍️ 글 품질 기준 — 검색 종결성·출처 서열·독자적 가치 - #53

Merged
Kevinlee7250 merged 1 commit into
latestfrom
claude/session-0119g48zqt4k-lwfzrd
Aug 27, 2026
Merged

✍️ 글 품질 기준 — 검색 종결성·출처 서열·독자적 가치#53
Kevinlee7250 merged 1 commit into
latestfrom
claude/session-0119g48zqt4k-lwfzrd

Conversation

@Kevinlee7250

Copy link
Copy Markdown
Owner

사용자가 제시한 콘텐츠 품질 지침을 기존 프롬프트와 대조해, 이미 있는 것은 빼고 실제로 비어 있던 것만 반영했습니다.

이미 있어서 넣지 않은 것

제시된 지침기존 위치
검색엔진 아닌 사람을 위해프롬프트 "글의 핵심 원칙" 1번
단순 요약 금지같은 곳 2번
과장·낚시 금지금지 표현 목록
반복으로 길이만 늘리지 않기"동일한 문장 반복 금지"
AI 흔한 문구금지 표현 15종 명시
확인 못 한 사실 추측 금지evidence_builder: "자료에 없는 내용 추론 금지"
검색 의도 분류search_intent.py — 5종 판별 + 의도별 지시문 자동 삽입

검색 의도는 informational / howto / comparison / experience / transactional이 이미 구현돼 있습니다. 제시된 6종 중 Navigational은 브랜드 공식 사이트를 찾는 의도라 블로그 글에 실익이 없고, Commercial Investigation은 기존 comparison과 대부분 겹칩니다.

새로 넣은 것 — _quality_standard_block()

  1. 검색 종결성 — 기존 프롬프트는 "도움이 되는 글"까지만 말하고, 이 글로 검색이 끝나야 한다는 기준이 없었습니다. 핵심 질문을 "공식 홈페이지 참고"로 넘기지 못하게 했습니다(수치 미확인 시만 예외).
  2. 독자적 가치 레이어 — 어디서나 나오는 정보의 재배열이 아니라, 이 글에만 있는 것이 최소 하나 있어야 합니다: 직접 계산·조건별 비교표·구체적 사례·실행 체크리스트·선택 기준·단계별 순서·비용 분석·실패 사례·리스크 분석·새 관점.
  3. 출처 신뢰 서열 8단계 — 지금까지는 "정부·공식 기준"이라고만 해서 자료가 어긋날 때 판단 기준이 없었습니다. 커뮤니티·후기는 "이런 반응이 있다"는 정황으로만 쓰고 사실 근거로 못 쓰게 했습니다.
  4. 최신성 검증 대상 명시 — 가격·정책·법률·세금·투자·여행·건강·기술 사양·SW 버전·제품 사양.
  5. 검색량·조회수·순위 수치 날조 금지.

넣지 않은 것과 그 이유

  • 상위 노출 글 SERP 갭 분석: 검색 순위 조회 도구가 없습니다. 조사하라고 지시하면 조사 없이 지어내는 결과가 되므로, 그 결론에 해당하는 요구사항(2번)만 남겼습니다.
  • Primary/Secondary/Long-tail 별도 필드: 출력 JSON 스키마 + 대시보드 계약 + 발행 파이프라인을 함께 손봐야 합니다. 현재 labels(10개)와 faq가 상당 부분을 대신하고 있어 별건으로 다루는 편이 낫습니다.

충돌 해소 — 키워드 밀도 (11곳)

제시: "키워드 밀도를 기계적으로 맞추지 않는다"
기존: "키워드 10~14회"

정면으로 어긋나 사용자 결정을 받았습니다(옵션 C). 하한 신호는 남기고 기계적 충족을 명시적으로 금지합니다 — "숫자를 맞추려고 억지로 넣지 말 것. 어색하면 적게 쓰는 편이 낫습니다".

검증

블록을 정의만 하고 조립 지점 배선을 빠뜨려도 코드상으로는 티가 나지 않습니다 — 함수는 멀쩡히 존재하니까요. 그래서 함수 존재가 아니라 완성된 프롬프트에 문구가 있는지를 검사합니다. 일반 글 3종과 시리즈 글이 서로 다른 조립 지점을 지나므로 양쪽 모두 확인합니다.

실제로 잡는지 확인했습니다 — 시리즈 배선만 끊자 일반 글 검사는 통과하고 시리즈 검사 4건만 실패했으며, 복원 후 23건 전부 통과했습니다.

프롬프트 실측 (키워드 "전기요금 절약"으로 조립)

이전이후
blog16,898자7,945자
blog25,510자6,557자
blog35,226자6,273자
시리즈4,604자

1170 passed, 2 skipped (신규 23건)


Generated by Claude Code

사용자가 제시한 콘텐츠 품질 지침을 기존 프롬프트와 대조해, 이미 있는 것은
빼고 실제로 비어 있던 것만 반영했습니다.
이미 있어서 넣지 않은 것
────────────────────────
"검색엔진 아닌 사람을 위해", "단순 요약 금지", "과장 표현 금지", "반복으로
길이만 늘리지 않기", "AI 흔한 문구 금지"는 이미 프롬프트에 있습니다.
검색 의도 분류도 search_intent.py가 5종(informational/howto/comparison/
experience/transactional)을 이미 판별해 의도별 지시문을 붙입니다.
새로 넣은 것 — _quality_standard_block()
────────────────────────────────────────
1. 검색 종결성. 기존 프롬프트는 "도움이 되는 글"까지만 말하고, 이 글로
검색이 끝나야 한다는 기준이 없었습니다. 핵심 질문을 "공식 홈페이지
참고"로 넘기지 못하게 했습니다.
2. 독자적 가치 레이어. 어디서나 나오는 정보의 재배열이 아니라 이 글에만
있는 것이 최소 하나 있어야 합니다 (직접 계산·비교표·사례·체크리스트·
선택 기준·비용 분석·실패 사례·리스크 분석 등).
3. 출처 신뢰 서열 8단계. 지금까지는 "정부·공식 기준"이라고만 해서 자료가
서로 어긋날 때 무엇을 택할지가 정해져 있지 않았습니다. 커뮤니티·후기는
정황으로만 쓰고 사실 근거로 쓰지 못하게 했습니다.
4. 최신성 검증 대상 명시 (가격·정책·법률·세금·투자·여행·건강·기술 사양 등).
5. 검색량·조회수·순위 수치 날조 금지.
상위 노출 글의 SERP 갭 분석은 넣지 않았습니다. 검색 순위 조회 도구가
없어서, 조사하라고 지시하면 조사 없이 지어내는 결과가 됩니다. 그 결론에
해당하는 요구사항(2번)만 남겼습니다.
충돌 해소 — 키워드 밀도 (11곳)
──────────────────────────────
"키워드 밀도를 기계적으로 맞추지 않는다"는 기존 "키워드 10~14회"와 정면으로
어긋납니다. 사용자 결정에 따라 하한 신호는 남기고 기계적 충족을 명시적으로
금지하는 형태로 바꿨습니다 — 어색하면 적게 쓰는 편이 낫다고 덧붙였습니다.
검증
────
블록을 정의만 하고 조립 지점 배선을 빠뜨려도 코드상으로는 티가 나지
않습니다. 그래서 함수 존재가 아니라 완성된 프롬프트에 문구가 있는지를
검사합니다. 일반 글 3종과 시리즈 글이 서로 다른 조립 지점을 지나므로
양쪽 모두 확인합니다.
실제로 잡는지 확인했습니다 — 시리즈 배선만 끊자 일반 글 검사는 통과하고
시리즈 검사 4건만 실패했으며, 복원 후 전부 통과했습니다.
프롬프트 실측: blog1 6,898 → 7,945자 / blog2 5,510 → 6,557 / blog3 5,226 → 6,273.
1170 passed, 2 skipped.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 27, 2026 12:16
@Kevinlee7250
Kevinlee7250 merged commit a25b9e1 into latestAug 27, 2026
2 checks passed
github-actionsBot added a commit that referenced this pull request Aug 31, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Kevinlee7250@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

✍️ 글 품질 기준 — 검색 종결성·출처 서열·독자적 가치 - #53

Merged
Kevinlee7250 merged 1 commit into
latestfrom
claude/session-0119g48zqt4k-lwfzrd
Aug 27, 2026
Merged

✍️ 글 품질 기준 — 검색 종결성·출처 서열·독자적 가치#53
Kevinlee7250 merged 1 commit into
latestfrom
claude/session-0119g48zqt4k-lwfzrd

Conversation

@Kevinlee7250

Copy link
Copy Markdown
Owner

사용자가 제시한 콘텐츠 품질 지침을 기존 프롬프트와 대조해, 이미 있는 것은 빼고 실제로 비어 있던 것만 반영했습니다.

이미 있어서 넣지 않은 것

제시된 지침기존 위치
검색엔진 아닌 사람을 위해프롬프트 "글의 핵심 원칙" 1번
단순 요약 금지같은 곳 2번
과장·낚시 금지금지 표현 목록
반복으로 길이만 늘리지 않기"동일한 문장 반복 금지"
AI 흔한 문구금지 표현 15종 명시
확인 못 한 사실 추측 금지evidence_builder: "자료에 없는 내용 추론 금지"
검색 의도 분류search_intent.py — 5종 판별 + 의도별 지시문 자동 삽입

검색 의도는 informational / howto / comparison / experience / transactional이 이미 구현돼 있습니다. 제시된 6종 중 Navigational은 브랜드 공식 사이트를 찾는 의도라 블로그 글에 실익이 없고, Commercial Investigation은 기존 comparison과 대부분 겹칩니다.

새로 넣은 것 — _quality_standard_block()

  1. 검색 종결성 — 기존 프롬프트는 "도움이 되는 글"까지만 말하고, 이 글로 검색이 끝나야 한다는 기준이 없었습니다. 핵심 질문을 "공식 홈페이지 참고"로 넘기지 못하게 했습니다(수치 미확인 시만 예외).
  2. 독자적 가치 레이어 — 어디서나 나오는 정보의 재배열이 아니라, 이 글에만 있는 것이 최소 하나 있어야 합니다: 직접 계산·조건별 비교표·구체적 사례·실행 체크리스트·선택 기준·단계별 순서·비용 분석·실패 사례·리스크 분석·새 관점.
  3. 출처 신뢰 서열 8단계 — 지금까지는 "정부·공식 기준"이라고만 해서 자료가 어긋날 때 판단 기준이 없었습니다. 커뮤니티·후기는 "이런 반응이 있다"는 정황으로만 쓰고 사실 근거로 못 쓰게 했습니다.
  4. 최신성 검증 대상 명시 — 가격·정책·법률·세금·투자·여행·건강·기술 사양·SW 버전·제품 사양.
  5. 검색량·조회수·순위 수치 날조 금지.

넣지 않은 것과 그 이유

  • 상위 노출 글 SERP 갭 분석: 검색 순위 조회 도구가 없습니다. 조사하라고 지시하면 조사 없이 지어내는 결과가 되므로, 그 결론에 해당하는 요구사항(2번)만 남겼습니다.
  • Primary/Secondary/Long-tail 별도 필드: 출력 JSON 스키마 + 대시보드 계약 + 발행 파이프라인을 함께 손봐야 합니다. 현재 labels(10개)와 faq가 상당 부분을 대신하고 있어 별건으로 다루는 편이 낫습니다.

충돌 해소 — 키워드 밀도 (11곳)

제시: "키워드 밀도를 기계적으로 맞추지 않는다"
기존: "키워드 10~14회"

정면으로 어긋나 사용자 결정을 받았습니다(옵션 C). 하한 신호는 남기고 기계적 충족을 명시적으로 금지합니다 — "숫자를 맞추려고 억지로 넣지 말 것. 어색하면 적게 쓰는 편이 낫습니다".

검증

블록을 정의만 하고 조립 지점 배선을 빠뜨려도 코드상으로는 티가 나지 않습니다 — 함수는 멀쩡히 존재하니까요. 그래서 함수 존재가 아니라 완성된 프롬프트에 문구가 있는지를 검사합니다. 일반 글 3종과 시리즈 글이 서로 다른 조립 지점을 지나므로 양쪽 모두 확인합니다.

실제로 잡는지 확인했습니다 — 시리즈 배선만 끊자 일반 글 검사는 통과하고 시리즈 검사 4건만 실패했으며, 복원 후 23건 전부 통과했습니다.

프롬프트 실측 (키워드 "전기요금 절약"으로 조립)

이전이후
blog16,898자7,945자
blog25,510자6,557자
blog35,226자6,273자
시리즈4,604자

1170 passed, 2 skipped (신규 23건)


Generated by Claude Code

사용자가 제시한 콘텐츠 품질 지침을 기존 프롬프트와 대조해, 이미 있는 것은
빼고 실제로 비어 있던 것만 반영했습니다.
이미 있어서 넣지 않은 것
────────────────────────
"검색엔진 아닌 사람을 위해", "단순 요약 금지", "과장 표현 금지", "반복으로
길이만 늘리지 않기", "AI 흔한 문구 금지"는 이미 프롬프트에 있습니다.
검색 의도 분류도 search_intent.py가 5종(informational/howto/comparison/
experience/transactional)을 이미 판별해 의도별 지시문을 붙입니다.
새로 넣은 것 — _quality_standard_block()
────────────────────────────────────────
1. 검색 종결성. 기존 프롬프트는 "도움이 되는 글"까지만 말하고, 이 글로
검색이 끝나야 한다는 기준이 없었습니다. 핵심 질문을 "공식 홈페이지
참고"로 넘기지 못하게 했습니다.
2. 독자적 가치 레이어. 어디서나 나오는 정보의 재배열이 아니라 이 글에만
있는 것이 최소 하나 있어야 합니다 (직접 계산·비교표·사례·체크리스트·
선택 기준·비용 분석·실패 사례·리스크 분석 등).
3. 출처 신뢰 서열 8단계. 지금까지는 "정부·공식 기준"이라고만 해서 자료가
서로 어긋날 때 무엇을 택할지가 정해져 있지 않았습니다. 커뮤니티·후기는
정황으로만 쓰고 사실 근거로 쓰지 못하게 했습니다.
4. 최신성 검증 대상 명시 (가격·정책·법률·세금·투자·여행·건강·기술 사양 등).
5. 검색량·조회수·순위 수치 날조 금지.
상위 노출 글의 SERP 갭 분석은 넣지 않았습니다. 검색 순위 조회 도구가
없어서, 조사하라고 지시하면 조사 없이 지어내는 결과가 됩니다. 그 결론에
해당하는 요구사항(2번)만 남겼습니다.
충돌 해소 — 키워드 밀도 (11곳)
──────────────────────────────
"키워드 밀도를 기계적으로 맞추지 않는다"는 기존 "키워드 10~14회"와 정면으로
어긋납니다. 사용자 결정에 따라 하한 신호는 남기고 기계적 충족을 명시적으로
금지하는 형태로 바꿨습니다 — 어색하면 적게 쓰는 편이 낫다고 덧붙였습니다.
검증
────
블록을 정의만 하고 조립 지점 배선을 빠뜨려도 코드상으로는 티가 나지
않습니다. 그래서 함수 존재가 아니라 완성된 프롬프트에 문구가 있는지를
검사합니다. 일반 글 3종과 시리즈 글이 서로 다른 조립 지점을 지나므로
양쪽 모두 확인합니다.
실제로 잡는지 확인했습니다 — 시리즈 배선만 끊자 일반 글 검사는 통과하고
시리즈 검사 4건만 실패했으며, 복원 후 전부 통과했습니다.
프롬프트 실측: blog1 6,898 → 7,945자 / blog2 5,510 → 6,557 / blog3 5,226 → 6,273.
1170 passed, 2 skipped.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 27, 2026 12:16
@Kevinlee7250
Kevinlee7250 merged commit a25b9e1 into latestAug 27, 2026
2 checks passed
github-actionsBot added a commit that referenced this pull request Aug 31, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Kevinlee7250@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

✍️ 글 품질 기준 — 검색 종결성·출처 서열·독자적 가치 - #53

Merged
Kevinlee7250 merged 1 commit into
latestfrom
claude/session-0119g48zqt4k-lwfzrd
Aug 27, 2026
Merged

✍️ 글 품질 기준 — 검색 종결성·출처 서열·독자적 가치#53
Kevinlee7250 merged 1 commit into
latestfrom
claude/session-0119g48zqt4k-lwfzrd

Conversation

@Kevinlee7250

Copy link
Copy Markdown
Owner

사용자가 제시한 콘텐츠 품질 지침을 기존 프롬프트와 대조해, 이미 있는 것은 빼고 실제로 비어 있던 것만 반영했습니다.

이미 있어서 넣지 않은 것

제시된 지침기존 위치
검색엔진 아닌 사람을 위해프롬프트 "글의 핵심 원칙" 1번
단순 요약 금지같은 곳 2번
과장·낚시 금지금지 표현 목록
반복으로 길이만 늘리지 않기"동일한 문장 반복 금지"
AI 흔한 문구금지 표현 15종 명시
확인 못 한 사실 추측 금지evidence_builder: "자료에 없는 내용 추론 금지"
검색 의도 분류search_intent.py — 5종 판별 + 의도별 지시문 자동 삽입

검색 의도는 informational / howto / comparison / experience / transactional이 이미 구현돼 있습니다. 제시된 6종 중 Navigational은 브랜드 공식 사이트를 찾는 의도라 블로그 글에 실익이 없고, Commercial Investigation은 기존 comparison과 대부분 겹칩니다.

새로 넣은 것 — _quality_standard_block()

  1. 검색 종결성 — 기존 프롬프트는 "도움이 되는 글"까지만 말하고, 이 글로 검색이 끝나야 한다는 기준이 없었습니다. 핵심 질문을 "공식 홈페이지 참고"로 넘기지 못하게 했습니다(수치 미확인 시만 예외).
  2. 독자적 가치 레이어 — 어디서나 나오는 정보의 재배열이 아니라, 이 글에만 있는 것이 최소 하나 있어야 합니다: 직접 계산·조건별 비교표·구체적 사례·실행 체크리스트·선택 기준·단계별 순서·비용 분석·실패 사례·리스크 분석·새 관점.
  3. 출처 신뢰 서열 8단계 — 지금까지는 "정부·공식 기준"이라고만 해서 자료가 어긋날 때 판단 기준이 없었습니다. 커뮤니티·후기는 "이런 반응이 있다"는 정황으로만 쓰고 사실 근거로 못 쓰게 했습니다.
  4. 최신성 검증 대상 명시 — 가격·정책·법률·세금·투자·여행·건강·기술 사양·SW 버전·제품 사양.
  5. 검색량·조회수·순위 수치 날조 금지.

넣지 않은 것과 그 이유

  • 상위 노출 글 SERP 갭 분석: 검색 순위 조회 도구가 없습니다. 조사하라고 지시하면 조사 없이 지어내는 결과가 되므로, 그 결론에 해당하는 요구사항(2번)만 남겼습니다.
  • Primary/Secondary/Long-tail 별도 필드: 출력 JSON 스키마 + 대시보드 계약 + 발행 파이프라인을 함께 손봐야 합니다. 현재 labels(10개)와 faq가 상당 부분을 대신하고 있어 별건으로 다루는 편이 낫습니다.

충돌 해소 — 키워드 밀도 (11곳)

제시: "키워드 밀도를 기계적으로 맞추지 않는다"
기존: "키워드 10~14회"

정면으로 어긋나 사용자 결정을 받았습니다(옵션 C). 하한 신호는 남기고 기계적 충족을 명시적으로 금지합니다 — "숫자를 맞추려고 억지로 넣지 말 것. 어색하면 적게 쓰는 편이 낫습니다".

검증

블록을 정의만 하고 조립 지점 배선을 빠뜨려도 코드상으로는 티가 나지 않습니다 — 함수는 멀쩡히 존재하니까요. 그래서 함수 존재가 아니라 완성된 프롬프트에 문구가 있는지를 검사합니다. 일반 글 3종과 시리즈 글이 서로 다른 조립 지점을 지나므로 양쪽 모두 확인합니다.

실제로 잡는지 확인했습니다 — 시리즈 배선만 끊자 일반 글 검사는 통과하고 시리즈 검사 4건만 실패했으며, 복원 후 23건 전부 통과했습니다.

프롬프트 실측 (키워드 "전기요금 절약"으로 조립)

이전이후
blog16,898자7,945자
blog25,510자6,557자
blog35,226자6,273자
시리즈4,604자

1170 passed, 2 skipped (신규 23건)


Generated by Claude Code

사용자가 제시한 콘텐츠 품질 지침을 기존 프롬프트와 대조해, 이미 있는 것은
빼고 실제로 비어 있던 것만 반영했습니다.
이미 있어서 넣지 않은 것
────────────────────────
"검색엔진 아닌 사람을 위해", "단순 요약 금지", "과장 표현 금지", "반복으로
길이만 늘리지 않기", "AI 흔한 문구 금지"는 이미 프롬프트에 있습니다.
검색 의도 분류도 search_intent.py가 5종(informational/howto/comparison/
experience/transactional)을 이미 판별해 의도별 지시문을 붙입니다.
새로 넣은 것 — _quality_standard_block()
────────────────────────────────────────
1. 검색 종결성. 기존 프롬프트는 "도움이 되는 글"까지만 말하고, 이 글로
검색이 끝나야 한다는 기준이 없었습니다. 핵심 질문을 "공식 홈페이지
참고"로 넘기지 못하게 했습니다.
2. 독자적 가치 레이어. 어디서나 나오는 정보의 재배열이 아니라 이 글에만
있는 것이 최소 하나 있어야 합니다 (직접 계산·비교표·사례·체크리스트·
선택 기준·비용 분석·실패 사례·리스크 분석 등).
3. 출처 신뢰 서열 8단계. 지금까지는 "정부·공식 기준"이라고만 해서 자료가
서로 어긋날 때 무엇을 택할지가 정해져 있지 않았습니다. 커뮤니티·후기는
정황으로만 쓰고 사실 근거로 쓰지 못하게 했습니다.
4. 최신성 검증 대상 명시 (가격·정책·법률·세금·투자·여행·건강·기술 사양 등).
5. 검색량·조회수·순위 수치 날조 금지.
상위 노출 글의 SERP 갭 분석은 넣지 않았습니다. 검색 순위 조회 도구가
없어서, 조사하라고 지시하면 조사 없이 지어내는 결과가 됩니다. 그 결론에
해당하는 요구사항(2번)만 남겼습니다.
충돌 해소 — 키워드 밀도 (11곳)
──────────────────────────────
"키워드 밀도를 기계적으로 맞추지 않는다"는 기존 "키워드 10~14회"와 정면으로
어긋납니다. 사용자 결정에 따라 하한 신호는 남기고 기계적 충족을 명시적으로
금지하는 형태로 바꿨습니다 — 어색하면 적게 쓰는 편이 낫다고 덧붙였습니다.
검증
────
블록을 정의만 하고 조립 지점 배선을 빠뜨려도 코드상으로는 티가 나지
않습니다. 그래서 함수 존재가 아니라 완성된 프롬프트에 문구가 있는지를
검사합니다. 일반 글 3종과 시리즈 글이 서로 다른 조립 지점을 지나므로
양쪽 모두 확인합니다.
실제로 잡는지 확인했습니다 — 시리즈 배선만 끊자 일반 글 검사는 통과하고
시리즈 검사 4건만 실패했으며, 복원 후 전부 통과했습니다.
프롬프트 실측: blog1 6,898 → 7,945자 / blog2 5,510 → 6,557 / blog3 5,226 → 6,273.
1170 passed, 2 skipped.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 27, 2026 12:16
@Kevinlee7250
Kevinlee7250 merged commit a25b9e1 into latestAug 27, 2026
2 checks passed
github-actionsBot added a commit that referenced this pull request Aug 31, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Kevinlee7250@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

✍️ 글 품질 기준 — 검색 종결성·출처 서열·독자적 가치 - #53

Merged
Kevinlee7250 merged 1 commit into
latestfrom
claude/session-0119g48zqt4k-lwfzrd
Aug 27, 2026
Merged

✍️ 글 품질 기준 — 검색 종결성·출처 서열·독자적 가치#53
Kevinlee7250 merged 1 commit into
latestfrom
claude/session-0119g48zqt4k-lwfzrd

Conversation

@Kevinlee7250

Copy link
Copy Markdown
Owner

사용자가 제시한 콘텐츠 품질 지침을 기존 프롬프트와 대조해, 이미 있는 것은 빼고 실제로 비어 있던 것만 반영했습니다.

이미 있어서 넣지 않은 것

제시된 지침기존 위치
검색엔진 아닌 사람을 위해프롬프트 "글의 핵심 원칙" 1번
단순 요약 금지같은 곳 2번
과장·낚시 금지금지 표현 목록
반복으로 길이만 늘리지 않기"동일한 문장 반복 금지"
AI 흔한 문구금지 표현 15종 명시
확인 못 한 사실 추측 금지evidence_builder: "자료에 없는 내용 추론 금지"
검색 의도 분류search_intent.py — 5종 판별 + 의도별 지시문 자동 삽입

검색 의도는 informational / howto / comparison / experience / transactional이 이미 구현돼 있습니다. 제시된 6종 중 Navigational은 브랜드 공식 사이트를 찾는 의도라 블로그 글에 실익이 없고, Commercial Investigation은 기존 comparison과 대부분 겹칩니다.

새로 넣은 것 — _quality_standard_block()

  1. 검색 종결성 — 기존 프롬프트는 "도움이 되는 글"까지만 말하고, 이 글로 검색이 끝나야 한다는 기준이 없었습니다. 핵심 질문을 "공식 홈페이지 참고"로 넘기지 못하게 했습니다(수치 미확인 시만 예외).
  2. 독자적 가치 레이어 — 어디서나 나오는 정보의 재배열이 아니라, 이 글에만 있는 것이 최소 하나 있어야 합니다: 직접 계산·조건별 비교표·구체적 사례·실행 체크리스트·선택 기준·단계별 순서·비용 분석·실패 사례·리스크 분석·새 관점.
  3. 출처 신뢰 서열 8단계 — 지금까지는 "정부·공식 기준"이라고만 해서 자료가 어긋날 때 판단 기준이 없었습니다. 커뮤니티·후기는 "이런 반응이 있다"는 정황으로만 쓰고 사실 근거로 못 쓰게 했습니다.
  4. 최신성 검증 대상 명시 — 가격·정책·법률·세금·투자·여행·건강·기술 사양·SW 버전·제품 사양.
  5. 검색량·조회수·순위 수치 날조 금지.

넣지 않은 것과 그 이유

  • 상위 노출 글 SERP 갭 분석: 검색 순위 조회 도구가 없습니다. 조사하라고 지시하면 조사 없이 지어내는 결과가 되므로, 그 결론에 해당하는 요구사항(2번)만 남겼습니다.
  • Primary/Secondary/Long-tail 별도 필드: 출력 JSON 스키마 + 대시보드 계약 + 발행 파이프라인을 함께 손봐야 합니다. 현재 labels(10개)와 faq가 상당 부분을 대신하고 있어 별건으로 다루는 편이 낫습니다.

충돌 해소 — 키워드 밀도 (11곳)

제시: "키워드 밀도를 기계적으로 맞추지 않는다"
기존: "키워드 10~14회"

정면으로 어긋나 사용자 결정을 받았습니다(옵션 C). 하한 신호는 남기고 기계적 충족을 명시적으로 금지합니다 — "숫자를 맞추려고 억지로 넣지 말 것. 어색하면 적게 쓰는 편이 낫습니다".

검증

블록을 정의만 하고 조립 지점 배선을 빠뜨려도 코드상으로는 티가 나지 않습니다 — 함수는 멀쩡히 존재하니까요. 그래서 함수 존재가 아니라 완성된 프롬프트에 문구가 있는지를 검사합니다. 일반 글 3종과 시리즈 글이 서로 다른 조립 지점을 지나므로 양쪽 모두 확인합니다.

실제로 잡는지 확인했습니다 — 시리즈 배선만 끊자 일반 글 검사는 통과하고 시리즈 검사 4건만 실패했으며, 복원 후 23건 전부 통과했습니다.

프롬프트 실측 (키워드 "전기요금 절약"으로 조립)

이전이후
blog16,898자7,945자
blog25,510자6,557자
blog35,226자6,273자
시리즈4,604자

1170 passed, 2 skipped (신규 23건)


Generated by Claude Code

사용자가 제시한 콘텐츠 품질 지침을 기존 프롬프트와 대조해, 이미 있는 것은
빼고 실제로 비어 있던 것만 반영했습니다.
이미 있어서 넣지 않은 것
────────────────────────
"검색엔진 아닌 사람을 위해", "단순 요약 금지", "과장 표현 금지", "반복으로
길이만 늘리지 않기", "AI 흔한 문구 금지"는 이미 프롬프트에 있습니다.
검색 의도 분류도 search_intent.py가 5종(informational/howto/comparison/
experience/transactional)을 이미 판별해 의도별 지시문을 붙입니다.
새로 넣은 것 — _quality_standard_block()
────────────────────────────────────────
1. 검색 종결성. 기존 프롬프트는 "도움이 되는 글"까지만 말하고, 이 글로
검색이 끝나야 한다는 기준이 없었습니다. 핵심 질문을 "공식 홈페이지
참고"로 넘기지 못하게 했습니다.
2. 독자적 가치 레이어. 어디서나 나오는 정보의 재배열이 아니라 이 글에만
있는 것이 최소 하나 있어야 합니다 (직접 계산·비교표·사례·체크리스트·
선택 기준·비용 분석·실패 사례·리스크 분석 등).
3. 출처 신뢰 서열 8단계. 지금까지는 "정부·공식 기준"이라고만 해서 자료가
서로 어긋날 때 무엇을 택할지가 정해져 있지 않았습니다. 커뮤니티·후기는
정황으로만 쓰고 사실 근거로 쓰지 못하게 했습니다.
4. 최신성 검증 대상 명시 (가격·정책·법률·세금·투자·여행·건강·기술 사양 등).
5. 검색량·조회수·순위 수치 날조 금지.
상위 노출 글의 SERP 갭 분석은 넣지 않았습니다. 검색 순위 조회 도구가
없어서, 조사하라고 지시하면 조사 없이 지어내는 결과가 됩니다. 그 결론에
해당하는 요구사항(2번)만 남겼습니다.
충돌 해소 — 키워드 밀도 (11곳)
──────────────────────────────
"키워드 밀도를 기계적으로 맞추지 않는다"는 기존 "키워드 10~14회"와 정면으로
어긋납니다. 사용자 결정에 따라 하한 신호는 남기고 기계적 충족을 명시적으로
금지하는 형태로 바꿨습니다 — 어색하면 적게 쓰는 편이 낫다고 덧붙였습니다.
검증
────
블록을 정의만 하고 조립 지점 배선을 빠뜨려도 코드상으로는 티가 나지
않습니다. 그래서 함수 존재가 아니라 완성된 프롬프트에 문구가 있는지를
검사합니다. 일반 글 3종과 시리즈 글이 서로 다른 조립 지점을 지나므로
양쪽 모두 확인합니다.
실제로 잡는지 확인했습니다 — 시리즈 배선만 끊자 일반 글 검사는 통과하고
시리즈 검사 4건만 실패했으며, 복원 후 전부 통과했습니다.
프롬프트 실측: blog1 6,898 → 7,945자 / blog2 5,510 → 6,557 / blog3 5,226 → 6,273.
1170 passed, 2 skipped.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 27, 2026 12:16
@Kevinlee7250
Kevinlee7250 merged commit a25b9e1 into latestAug 27, 2026
2 checks passed
github-actionsBot added a commit that referenced this pull request Aug 31, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Kevinlee7250@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

✍️ 글 품질 기준 — 검색 종결성·출처 서열·독자적 가치 - #53

Merged
Kevinlee7250 merged 1 commit into
latestfrom
claude/session-0119g48zqt4k-lwfzrd
Aug 27, 2026
Merged

✍️ 글 품질 기준 — 검색 종결성·출처 서열·독자적 가치#53
Kevinlee7250 merged 1 commit into
latestfrom
claude/session-0119g48zqt4k-lwfzrd

Conversation

@Kevinlee7250

Copy link
Copy Markdown
Owner

사용자가 제시한 콘텐츠 품질 지침을 기존 프롬프트와 대조해, 이미 있는 것은 빼고 실제로 비어 있던 것만 반영했습니다.

이미 있어서 넣지 않은 것

제시된 지침기존 위치
검색엔진 아닌 사람을 위해프롬프트 "글의 핵심 원칙" 1번
단순 요약 금지같은 곳 2번
과장·낚시 금지금지 표현 목록
반복으로 길이만 늘리지 않기"동일한 문장 반복 금지"
AI 흔한 문구금지 표현 15종 명시
확인 못 한 사실 추측 금지evidence_builder: "자료에 없는 내용 추론 금지"
검색 의도 분류search_intent.py — 5종 판별 + 의도별 지시문 자동 삽입

검색 의도는 informational / howto / comparison / experience / transactional이 이미 구현돼 있습니다. 제시된 6종 중 Navigational은 브랜드 공식 사이트를 찾는 의도라 블로그 글에 실익이 없고, Commercial Investigation은 기존 comparison과 대부분 겹칩니다.

새로 넣은 것 — _quality_standard_block()

  1. 검색 종결성 — 기존 프롬프트는 "도움이 되는 글"까지만 말하고, 이 글로 검색이 끝나야 한다는 기준이 없었습니다. 핵심 질문을 "공식 홈페이지 참고"로 넘기지 못하게 했습니다(수치 미확인 시만 예외).
  2. 독자적 가치 레이어 — 어디서나 나오는 정보의 재배열이 아니라, 이 글에만 있는 것이 최소 하나 있어야 합니다: 직접 계산·조건별 비교표·구체적 사례·실행 체크리스트·선택 기준·단계별 순서·비용 분석·실패 사례·리스크 분석·새 관점.
  3. 출처 신뢰 서열 8단계 — 지금까지는 "정부·공식 기준"이라고만 해서 자료가 어긋날 때 판단 기준이 없었습니다. 커뮤니티·후기는 "이런 반응이 있다"는 정황으로만 쓰고 사실 근거로 못 쓰게 했습니다.
  4. 최신성 검증 대상 명시 — 가격·정책·법률·세금·투자·여행·건강·기술 사양·SW 버전·제품 사양.
  5. 검색량·조회수·순위 수치 날조 금지.

넣지 않은 것과 그 이유

  • 상위 노출 글 SERP 갭 분석: 검색 순위 조회 도구가 없습니다. 조사하라고 지시하면 조사 없이 지어내는 결과가 되므로, 그 결론에 해당하는 요구사항(2번)만 남겼습니다.
  • Primary/Secondary/Long-tail 별도 필드: 출력 JSON 스키마 + 대시보드 계약 + 발행 파이프라인을 함께 손봐야 합니다. 현재 labels(10개)와 faq가 상당 부분을 대신하고 있어 별건으로 다루는 편이 낫습니다.

충돌 해소 — 키워드 밀도 (11곳)

제시: "키워드 밀도를 기계적으로 맞추지 않는다"
기존: "키워드 10~14회"

정면으로 어긋나 사용자 결정을 받았습니다(옵션 C). 하한 신호는 남기고 기계적 충족을 명시적으로 금지합니다 — "숫자를 맞추려고 억지로 넣지 말 것. 어색하면 적게 쓰는 편이 낫습니다".

검증

블록을 정의만 하고 조립 지점 배선을 빠뜨려도 코드상으로는 티가 나지 않습니다 — 함수는 멀쩡히 존재하니까요. 그래서 함수 존재가 아니라 완성된 프롬프트에 문구가 있는지를 검사합니다. 일반 글 3종과 시리즈 글이 서로 다른 조립 지점을 지나므로 양쪽 모두 확인합니다.

실제로 잡는지 확인했습니다 — 시리즈 배선만 끊자 일반 글 검사는 통과하고 시리즈 검사 4건만 실패했으며, 복원 후 23건 전부 통과했습니다.

프롬프트 실측 (키워드 "전기요금 절약"으로 조립)

이전이후
blog16,898자7,945자
blog25,510자6,557자
blog35,226자6,273자
시리즈4,604자

1170 passed, 2 skipped (신규 23건)


Generated by Claude Code

사용자가 제시한 콘텐츠 품질 지침을 기존 프롬프트와 대조해, 이미 있는 것은
빼고 실제로 비어 있던 것만 반영했습니다.
이미 있어서 넣지 않은 것
────────────────────────
"검색엔진 아닌 사람을 위해", "단순 요약 금지", "과장 표현 금지", "반복으로
길이만 늘리지 않기", "AI 흔한 문구 금지"는 이미 프롬프트에 있습니다.
검색 의도 분류도 search_intent.py가 5종(informational/howto/comparison/
experience/transactional)을 이미 판별해 의도별 지시문을 붙입니다.
새로 넣은 것 — _quality_standard_block()
────────────────────────────────────────
1. 검색 종결성. 기존 프롬프트는 "도움이 되는 글"까지만 말하고, 이 글로
검색이 끝나야 한다는 기준이 없었습니다. 핵심 질문을 "공식 홈페이지
참고"로 넘기지 못하게 했습니다.
2. 독자적 가치 레이어. 어디서나 나오는 정보의 재배열이 아니라 이 글에만
있는 것이 최소 하나 있어야 합니다 (직접 계산·비교표·사례·체크리스트·
선택 기준·비용 분석·실패 사례·리스크 분석 등).
3. 출처 신뢰 서열 8단계. 지금까지는 "정부·공식 기준"이라고만 해서 자료가
서로 어긋날 때 무엇을 택할지가 정해져 있지 않았습니다. 커뮤니티·후기는
정황으로만 쓰고 사실 근거로 쓰지 못하게 했습니다.
4. 최신성 검증 대상 명시 (가격·정책·법률·세금·투자·여행·건강·기술 사양 등).
5. 검색량·조회수·순위 수치 날조 금지.
상위 노출 글의 SERP 갭 분석은 넣지 않았습니다. 검색 순위 조회 도구가
없어서, 조사하라고 지시하면 조사 없이 지어내는 결과가 됩니다. 그 결론에
해당하는 요구사항(2번)만 남겼습니다.
충돌 해소 — 키워드 밀도 (11곳)
──────────────────────────────
"키워드 밀도를 기계적으로 맞추지 않는다"는 기존 "키워드 10~14회"와 정면으로
어긋납니다. 사용자 결정에 따라 하한 신호는 남기고 기계적 충족을 명시적으로
금지하는 형태로 바꿨습니다 — 어색하면 적게 쓰는 편이 낫다고 덧붙였습니다.
검증
────
블록을 정의만 하고 조립 지점 배선을 빠뜨려도 코드상으로는 티가 나지
않습니다. 그래서 함수 존재가 아니라 완성된 프롬프트에 문구가 있는지를
검사합니다. 일반 글 3종과 시리즈 글이 서로 다른 조립 지점을 지나므로
양쪽 모두 확인합니다.
실제로 잡는지 확인했습니다 — 시리즈 배선만 끊자 일반 글 검사는 통과하고
시리즈 검사 4건만 실패했으며, 복원 후 전부 통과했습니다.
프롬프트 실측: blog1 6,898 → 7,945자 / blog2 5,510 → 6,557 / blog3 5,226 → 6,273.
1170 passed, 2 skipped.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 27, 2026 12:16
@Kevinlee7250
Kevinlee7250 merged commit a25b9e1 into latestAug 27, 2026
2 checks passed
github-actionsBot added a commit that referenced this pull request Aug 31, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Kevinlee7250@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

✍️ 글 품질 기준 — 검색 종결성·출처 서열·독자적 가치 - #53

Merged
Kevinlee7250 merged 1 commit into
latestfrom
claude/session-0119g48zqt4k-lwfzrd
Aug 27, 2026
Merged

✍️ 글 품질 기준 — 검색 종결성·출처 서열·독자적 가치#53
Kevinlee7250 merged 1 commit into
latestfrom
claude/session-0119g48zqt4k-lwfzrd

Conversation

@Kevinlee7250

Copy link
Copy Markdown
Owner

사용자가 제시한 콘텐츠 품질 지침을 기존 프롬프트와 대조해, 이미 있는 것은 빼고 실제로 비어 있던 것만 반영했습니다.

이미 있어서 넣지 않은 것

제시된 지침기존 위치
검색엔진 아닌 사람을 위해프롬프트 "글의 핵심 원칙" 1번
단순 요약 금지같은 곳 2번
과장·낚시 금지금지 표현 목록
반복으로 길이만 늘리지 않기"동일한 문장 반복 금지"
AI 흔한 문구금지 표현 15종 명시
확인 못 한 사실 추측 금지evidence_builder: "자료에 없는 내용 추론 금지"
검색 의도 분류search_intent.py — 5종 판별 + 의도별 지시문 자동 삽입

검색 의도는 informational / howto / comparison / experience / transactional이 이미 구현돼 있습니다. 제시된 6종 중 Navigational은 브랜드 공식 사이트를 찾는 의도라 블로그 글에 실익이 없고, Commercial Investigation은 기존 comparison과 대부분 겹칩니다.

새로 넣은 것 — _quality_standard_block()

  1. 검색 종결성 — 기존 프롬프트는 "도움이 되는 글"까지만 말하고, 이 글로 검색이 끝나야 한다는 기준이 없었습니다. 핵심 질문을 "공식 홈페이지 참고"로 넘기지 못하게 했습니다(수치 미확인 시만 예외).
  2. 독자적 가치 레이어 — 어디서나 나오는 정보의 재배열이 아니라, 이 글에만 있는 것이 최소 하나 있어야 합니다: 직접 계산·조건별 비교표·구체적 사례·실행 체크리스트·선택 기준·단계별 순서·비용 분석·실패 사례·리스크 분석·새 관점.
  3. 출처 신뢰 서열 8단계 — 지금까지는 "정부·공식 기준"이라고만 해서 자료가 어긋날 때 판단 기준이 없었습니다. 커뮤니티·후기는 "이런 반응이 있다"는 정황으로만 쓰고 사실 근거로 못 쓰게 했습니다.
  4. 최신성 검증 대상 명시 — 가격·정책·법률·세금·투자·여행·건강·기술 사양·SW 버전·제품 사양.
  5. 검색량·조회수·순위 수치 날조 금지.

넣지 않은 것과 그 이유

  • 상위 노출 글 SERP 갭 분석: 검색 순위 조회 도구가 없습니다. 조사하라고 지시하면 조사 없이 지어내는 결과가 되므로, 그 결론에 해당하는 요구사항(2번)만 남겼습니다.
  • Primary/Secondary/Long-tail 별도 필드: 출력 JSON 스키마 + 대시보드 계약 + 발행 파이프라인을 함께 손봐야 합니다. 현재 labels(10개)와 faq가 상당 부분을 대신하고 있어 별건으로 다루는 편이 낫습니다.

충돌 해소 — 키워드 밀도 (11곳)

제시: "키워드 밀도를 기계적으로 맞추지 않는다"
기존: "키워드 10~14회"

정면으로 어긋나 사용자 결정을 받았습니다(옵션 C). 하한 신호는 남기고 기계적 충족을 명시적으로 금지합니다 — "숫자를 맞추려고 억지로 넣지 말 것. 어색하면 적게 쓰는 편이 낫습니다".

검증

블록을 정의만 하고 조립 지점 배선을 빠뜨려도 코드상으로는 티가 나지 않습니다 — 함수는 멀쩡히 존재하니까요. 그래서 함수 존재가 아니라 완성된 프롬프트에 문구가 있는지를 검사합니다. 일반 글 3종과 시리즈 글이 서로 다른 조립 지점을 지나므로 양쪽 모두 확인합니다.

실제로 잡는지 확인했습니다 — 시리즈 배선만 끊자 일반 글 검사는 통과하고 시리즈 검사 4건만 실패했으며, 복원 후 23건 전부 통과했습니다.

프롬프트 실측 (키워드 "전기요금 절약"으로 조립)

이전이후
blog16,898자7,945자
blog25,510자6,557자
blog35,226자6,273자
시리즈4,604자

1170 passed, 2 skipped (신규 23건)


Generated by Claude Code

사용자가 제시한 콘텐츠 품질 지침을 기존 프롬프트와 대조해, 이미 있는 것은
빼고 실제로 비어 있던 것만 반영했습니다.
이미 있어서 넣지 않은 것
────────────────────────
"검색엔진 아닌 사람을 위해", "단순 요약 금지", "과장 표현 금지", "반복으로
길이만 늘리지 않기", "AI 흔한 문구 금지"는 이미 프롬프트에 있습니다.
검색 의도 분류도 search_intent.py가 5종(informational/howto/comparison/
experience/transactional)을 이미 판별해 의도별 지시문을 붙입니다.
새로 넣은 것 — _quality_standard_block()
────────────────────────────────────────
1. 검색 종결성. 기존 프롬프트는 "도움이 되는 글"까지만 말하고, 이 글로
검색이 끝나야 한다는 기준이 없었습니다. 핵심 질문을 "공식 홈페이지
참고"로 넘기지 못하게 했습니다.
2. 독자적 가치 레이어. 어디서나 나오는 정보의 재배열이 아니라 이 글에만
있는 것이 최소 하나 있어야 합니다 (직접 계산·비교표·사례·체크리스트·
선택 기준·비용 분석·실패 사례·리스크 분석 등).
3. 출처 신뢰 서열 8단계. 지금까지는 "정부·공식 기준"이라고만 해서 자료가
서로 어긋날 때 무엇을 택할지가 정해져 있지 않았습니다. 커뮤니티·후기는
정황으로만 쓰고 사실 근거로 쓰지 못하게 했습니다.
4. 최신성 검증 대상 명시 (가격·정책·법률·세금·투자·여행·건강·기술 사양 등).
5. 검색량·조회수·순위 수치 날조 금지.
상위 노출 글의 SERP 갭 분석은 넣지 않았습니다. 검색 순위 조회 도구가
없어서, 조사하라고 지시하면 조사 없이 지어내는 결과가 됩니다. 그 결론에
해당하는 요구사항(2번)만 남겼습니다.
충돌 해소 — 키워드 밀도 (11곳)
──────────────────────────────
"키워드 밀도를 기계적으로 맞추지 않는다"는 기존 "키워드 10~14회"와 정면으로
어긋납니다. 사용자 결정에 따라 하한 신호는 남기고 기계적 충족을 명시적으로
금지하는 형태로 바꿨습니다 — 어색하면 적게 쓰는 편이 낫다고 덧붙였습니다.
검증
────
블록을 정의만 하고 조립 지점 배선을 빠뜨려도 코드상으로는 티가 나지
않습니다. 그래서 함수 존재가 아니라 완성된 프롬프트에 문구가 있는지를
검사합니다. 일반 글 3종과 시리즈 글이 서로 다른 조립 지점을 지나므로
양쪽 모두 확인합니다.
실제로 잡는지 확인했습니다 — 시리즈 배선만 끊자 일반 글 검사는 통과하고
시리즈 검사 4건만 실패했으며, 복원 후 전부 통과했습니다.
프롬프트 실측: blog1 6,898 → 7,945자 / blog2 5,510 → 6,557 / blog3 5,226 → 6,273.
1170 passed, 2 skipped.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 27, 2026 12:16
@Kevinlee7250
Kevinlee7250 merged commit a25b9e1 into latestAug 27, 2026
2 checks passed
github-actionsBot added a commit that referenced this pull request Aug 31, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Kevinlee7250@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

✍️ 글 품질 기준 — 검색 종결성·출처 서열·독자적 가치 - #53

Merged
Kevinlee7250 merged 1 commit into
latestfrom
claude/session-0119g48zqt4k-lwfzrd
Aug 27, 2026
Merged

✍️ 글 품질 기준 — 검색 종결성·출처 서열·독자적 가치#53
Kevinlee7250 merged 1 commit into
latestfrom
claude/session-0119g48zqt4k-lwfzrd

Conversation

@Kevinlee7250

Copy link
Copy Markdown
Owner

사용자가 제시한 콘텐츠 품질 지침을 기존 프롬프트와 대조해, 이미 있는 것은 빼고 실제로 비어 있던 것만 반영했습니다.

이미 있어서 넣지 않은 것

제시된 지침기존 위치
검색엔진 아닌 사람을 위해프롬프트 "글의 핵심 원칙" 1번
단순 요약 금지같은 곳 2번
과장·낚시 금지금지 표현 목록
반복으로 길이만 늘리지 않기"동일한 문장 반복 금지"
AI 흔한 문구금지 표현 15종 명시
확인 못 한 사실 추측 금지evidence_builder: "자료에 없는 내용 추론 금지"
검색 의도 분류search_intent.py — 5종 판별 + 의도별 지시문 자동 삽입

검색 의도는 informational / howto / comparison / experience / transactional이 이미 구현돼 있습니다. 제시된 6종 중 Navigational은 브랜드 공식 사이트를 찾는 의도라 블로그 글에 실익이 없고, Commercial Investigation은 기존 comparison과 대부분 겹칩니다.

새로 넣은 것 — _quality_standard_block()

  1. 검색 종결성 — 기존 프롬프트는 "도움이 되는 글"까지만 말하고, 이 글로 검색이 끝나야 한다는 기준이 없었습니다. 핵심 질문을 "공식 홈페이지 참고"로 넘기지 못하게 했습니다(수치 미확인 시만 예외).
  2. 독자적 가치 레이어 — 어디서나 나오는 정보의 재배열이 아니라, 이 글에만 있는 것이 최소 하나 있어야 합니다: 직접 계산·조건별 비교표·구체적 사례·실행 체크리스트·선택 기준·단계별 순서·비용 분석·실패 사례·리스크 분석·새 관점.
  3. 출처 신뢰 서열 8단계 — 지금까지는 "정부·공식 기준"이라고만 해서 자료가 어긋날 때 판단 기준이 없었습니다. 커뮤니티·후기는 "이런 반응이 있다"는 정황으로만 쓰고 사실 근거로 못 쓰게 했습니다.
  4. 최신성 검증 대상 명시 — 가격·정책·법률·세금·투자·여행·건강·기술 사양·SW 버전·제품 사양.
  5. 검색량·조회수·순위 수치 날조 금지.

넣지 않은 것과 그 이유

  • 상위 노출 글 SERP 갭 분석: 검색 순위 조회 도구가 없습니다. 조사하라고 지시하면 조사 없이 지어내는 결과가 되므로, 그 결론에 해당하는 요구사항(2번)만 남겼습니다.
  • Primary/Secondary/Long-tail 별도 필드: 출력 JSON 스키마 + 대시보드 계약 + 발행 파이프라인을 함께 손봐야 합니다. 현재 labels(10개)와 faq가 상당 부분을 대신하고 있어 별건으로 다루는 편이 낫습니다.

충돌 해소 — 키워드 밀도 (11곳)

제시: "키워드 밀도를 기계적으로 맞추지 않는다"
기존: "키워드 10~14회"

정면으로 어긋나 사용자 결정을 받았습니다(옵션 C). 하한 신호는 남기고 기계적 충족을 명시적으로 금지합니다 — "숫자를 맞추려고 억지로 넣지 말 것. 어색하면 적게 쓰는 편이 낫습니다".

검증

블록을 정의만 하고 조립 지점 배선을 빠뜨려도 코드상으로는 티가 나지 않습니다 — 함수는 멀쩡히 존재하니까요. 그래서 함수 존재가 아니라 완성된 프롬프트에 문구가 있는지를 검사합니다. 일반 글 3종과 시리즈 글이 서로 다른 조립 지점을 지나므로 양쪽 모두 확인합니다.

실제로 잡는지 확인했습니다 — 시리즈 배선만 끊자 일반 글 검사는 통과하고 시리즈 검사 4건만 실패했으며, 복원 후 23건 전부 통과했습니다.

프롬프트 실측 (키워드 "전기요금 절약"으로 조립)

이전이후
blog16,898자7,945자
blog25,510자6,557자
blog35,226자6,273자
시리즈4,604자

1170 passed, 2 skipped (신규 23건)


Generated by Claude Code

사용자가 제시한 콘텐츠 품질 지침을 기존 프롬프트와 대조해, 이미 있는 것은
빼고 실제로 비어 있던 것만 반영했습니다.
이미 있어서 넣지 않은 것
────────────────────────
"검색엔진 아닌 사람을 위해", "단순 요약 금지", "과장 표현 금지", "반복으로
길이만 늘리지 않기", "AI 흔한 문구 금지"는 이미 프롬프트에 있습니다.
검색 의도 분류도 search_intent.py가 5종(informational/howto/comparison/
experience/transactional)을 이미 판별해 의도별 지시문을 붙입니다.
새로 넣은 것 — _quality_standard_block()
────────────────────────────────────────
1. 검색 종결성. 기존 프롬프트는 "도움이 되는 글"까지만 말하고, 이 글로
검색이 끝나야 한다는 기준이 없었습니다. 핵심 질문을 "공식 홈페이지
참고"로 넘기지 못하게 했습니다.
2. 독자적 가치 레이어. 어디서나 나오는 정보의 재배열이 아니라 이 글에만
있는 것이 최소 하나 있어야 합니다 (직접 계산·비교표·사례·체크리스트·
선택 기준·비용 분석·실패 사례·리스크 분석 등).
3. 출처 신뢰 서열 8단계. 지금까지는 "정부·공식 기준"이라고만 해서 자료가
서로 어긋날 때 무엇을 택할지가 정해져 있지 않았습니다. 커뮤니티·후기는
정황으로만 쓰고 사실 근거로 쓰지 못하게 했습니다.
4. 최신성 검증 대상 명시 (가격·정책·법률·세금·투자·여행·건강·기술 사양 등).
5. 검색량·조회수·순위 수치 날조 금지.
상위 노출 글의 SERP 갭 분석은 넣지 않았습니다. 검색 순위 조회 도구가
없어서, 조사하라고 지시하면 조사 없이 지어내는 결과가 됩니다. 그 결론에
해당하는 요구사항(2번)만 남겼습니다.
충돌 해소 — 키워드 밀도 (11곳)
──────────────────────────────
"키워드 밀도를 기계적으로 맞추지 않는다"는 기존 "키워드 10~14회"와 정면으로
어긋납니다. 사용자 결정에 따라 하한 신호는 남기고 기계적 충족을 명시적으로
금지하는 형태로 바꿨습니다 — 어색하면 적게 쓰는 편이 낫다고 덧붙였습니다.
검증
────
블록을 정의만 하고 조립 지점 배선을 빠뜨려도 코드상으로는 티가 나지
않습니다. 그래서 함수 존재가 아니라 완성된 프롬프트에 문구가 있는지를
검사합니다. 일반 글 3종과 시리즈 글이 서로 다른 조립 지점을 지나므로
양쪽 모두 확인합니다.
실제로 잡는지 확인했습니다 — 시리즈 배선만 끊자 일반 글 검사는 통과하고
시리즈 검사 4건만 실패했으며, 복원 후 전부 통과했습니다.
프롬프트 실측: blog1 6,898 → 7,945자 / blog2 5,510 → 6,557 / blog3 5,226 → 6,273.
1170 passed, 2 skipped.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 27, 2026 12:16
@Kevinlee7250
Kevinlee7250 merged commit a25b9e1 into latestAug 27, 2026
2 checks passed
github-actionsBot added a commit that referenced this pull request Aug 31, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Kevinlee7250@claude
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

✍️ 글 품질 기준 — 검색 종결성·출처 서열·독자적 가치 - #53

Merged
Kevinlee7250 merged 1 commit into
latestfrom
claude/session-0119g48zqt4k-lwfzrd
Aug 27, 2026
Merged

✍️ 글 품질 기준 — 검색 종결성·출처 서열·독자적 가치#53
Kevinlee7250 merged 1 commit into
latestfrom
claude/session-0119g48zqt4k-lwfzrd

Conversation

@Kevinlee7250

Copy link
Copy Markdown
Owner

사용자가 제시한 콘텐츠 품질 지침을 기존 프롬프트와 대조해, 이미 있는 것은 빼고 실제로 비어 있던 것만 반영했습니다.

이미 있어서 넣지 않은 것

제시된 지침기존 위치
검색엔진 아닌 사람을 위해프롬프트 "글의 핵심 원칙" 1번
단순 요약 금지같은 곳 2번
과장·낚시 금지금지 표현 목록
반복으로 길이만 늘리지 않기"동일한 문장 반복 금지"
AI 흔한 문구금지 표현 15종 명시
확인 못 한 사실 추측 금지evidence_builder: "자료에 없는 내용 추론 금지"
검색 의도 분류search_intent.py — 5종 판별 + 의도별 지시문 자동 삽입

검색 의도는 informational / howto / comparison / experience / transactional이 이미 구현돼 있습니다. 제시된 6종 중 Navigational은 브랜드 공식 사이트를 찾는 의도라 블로그 글에 실익이 없고, Commercial Investigation은 기존 comparison과 대부분 겹칩니다.

새로 넣은 것 — _quality_standard_block()

  1. 검색 종결성 — 기존 프롬프트는 "도움이 되는 글"까지만 말하고, 이 글로 검색이 끝나야 한다는 기준이 없었습니다. 핵심 질문을 "공식 홈페이지 참고"로 넘기지 못하게 했습니다(수치 미확인 시만 예외).
  2. 독자적 가치 레이어 — 어디서나 나오는 정보의 재배열이 아니라, 이 글에만 있는 것이 최소 하나 있어야 합니다: 직접 계산·조건별 비교표·구체적 사례·실행 체크리스트·선택 기준·단계별 순서·비용 분석·실패 사례·리스크 분석·새 관점.
  3. 출처 신뢰 서열 8단계 — 지금까지는 "정부·공식 기준"이라고만 해서 자료가 어긋날 때 판단 기준이 없었습니다. 커뮤니티·후기는 "이런 반응이 있다"는 정황으로만 쓰고 사실 근거로 못 쓰게 했습니다.
  4. 최신성 검증 대상 명시 — 가격·정책·법률·세금·투자·여행·건강·기술 사양·SW 버전·제품 사양.
  5. 검색량·조회수·순위 수치 날조 금지.

넣지 않은 것과 그 이유

  • 상위 노출 글 SERP 갭 분석: 검색 순위 조회 도구가 없습니다. 조사하라고 지시하면 조사 없이 지어내는 결과가 되므로, 그 결론에 해당하는 요구사항(2번)만 남겼습니다.
  • Primary/Secondary/Long-tail 별도 필드: 출력 JSON 스키마 + 대시보드 계약 + 발행 파이프라인을 함께 손봐야 합니다. 현재 labels(10개)와 faq가 상당 부분을 대신하고 있어 별건으로 다루는 편이 낫습니다.

충돌 해소 — 키워드 밀도 (11곳)

제시: "키워드 밀도를 기계적으로 맞추지 않는다"
기존: "키워드 10~14회"

정면으로 어긋나 사용자 결정을 받았습니다(옵션 C). 하한 신호는 남기고 기계적 충족을 명시적으로 금지합니다 — "숫자를 맞추려고 억지로 넣지 말 것. 어색하면 적게 쓰는 편이 낫습니다".

검증

블록을 정의만 하고 조립 지점 배선을 빠뜨려도 코드상으로는 티가 나지 않습니다 — 함수는 멀쩡히 존재하니까요. 그래서 함수 존재가 아니라 완성된 프롬프트에 문구가 있는지를 검사합니다. 일반 글 3종과 시리즈 글이 서로 다른 조립 지점을 지나므로 양쪽 모두 확인합니다.

실제로 잡는지 확인했습니다 — 시리즈 배선만 끊자 일반 글 검사는 통과하고 시리즈 검사 4건만 실패했으며, 복원 후 23건 전부 통과했습니다.

프롬프트 실측 (키워드 "전기요금 절약"으로 조립)

이전이후
blog16,898자7,945자
blog25,510자6,557자
blog35,226자6,273자
시리즈4,604자

1170 passed, 2 skipped (신규 23건)


Generated by Claude Code

사용자가 제시한 콘텐츠 품질 지침을 기존 프롬프트와 대조해, 이미 있는 것은
빼고 실제로 비어 있던 것만 반영했습니다.
이미 있어서 넣지 않은 것
────────────────────────
"검색엔진 아닌 사람을 위해", "단순 요약 금지", "과장 표현 금지", "반복으로
길이만 늘리지 않기", "AI 흔한 문구 금지"는 이미 프롬프트에 있습니다.
검색 의도 분류도 search_intent.py가 5종(informational/howto/comparison/
experience/transactional)을 이미 판별해 의도별 지시문을 붙입니다.
새로 넣은 것 — _quality_standard_block()
────────────────────────────────────────
1. 검색 종결성. 기존 프롬프트는 "도움이 되는 글"까지만 말하고, 이 글로
검색이 끝나야 한다는 기준이 없었습니다. 핵심 질문을 "공식 홈페이지
참고"로 넘기지 못하게 했습니다.
2. 독자적 가치 레이어. 어디서나 나오는 정보의 재배열이 아니라 이 글에만
있는 것이 최소 하나 있어야 합니다 (직접 계산·비교표·사례·체크리스트·
선택 기준·비용 분석·실패 사례·리스크 분석 등).
3. 출처 신뢰 서열 8단계. 지금까지는 "정부·공식 기준"이라고만 해서 자료가
서로 어긋날 때 무엇을 택할지가 정해져 있지 않았습니다. 커뮤니티·후기는
정황으로만 쓰고 사실 근거로 쓰지 못하게 했습니다.
4. 최신성 검증 대상 명시 (가격·정책·법률·세금·투자·여행·건강·기술 사양 등).
5. 검색량·조회수·순위 수치 날조 금지.
상위 노출 글의 SERP 갭 분석은 넣지 않았습니다. 검색 순위 조회 도구가
없어서, 조사하라고 지시하면 조사 없이 지어내는 결과가 됩니다. 그 결론에
해당하는 요구사항(2번)만 남겼습니다.
충돌 해소 — 키워드 밀도 (11곳)
──────────────────────────────
"키워드 밀도를 기계적으로 맞추지 않는다"는 기존 "키워드 10~14회"와 정면으로
어긋납니다. 사용자 결정에 따라 하한 신호는 남기고 기계적 충족을 명시적으로
금지하는 형태로 바꿨습니다 — 어색하면 적게 쓰는 편이 낫다고 덧붙였습니다.
검증
────
블록을 정의만 하고 조립 지점 배선을 빠뜨려도 코드상으로는 티가 나지
않습니다. 그래서 함수 존재가 아니라 완성된 프롬프트에 문구가 있는지를
검사합니다. 일반 글 3종과 시리즈 글이 서로 다른 조립 지점을 지나므로
양쪽 모두 확인합니다.
실제로 잡는지 확인했습니다 — 시리즈 배선만 끊자 일반 글 검사는 통과하고
시리즈 검사 4건만 실패했으며, 복원 후 전부 통과했습니다.
프롬프트 실측: blog1 6,898 → 7,945자 / blog2 5,510 → 6,557 / blog3 5,226 → 6,273.
1170 passed, 2 skipped.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 27, 2026 12:16
@Kevinlee7250
Kevinlee7250 merged commit a25b9e1 into latestAug 27, 2026
2 checks passed
github-actionsBot added a commit that referenced this pull request Aug 31, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Kevinlee7250@claude