고아 페이지 해소가 발행 속도를 따라잡도록 처리량 조정 - #23

Merged
Kevinlee7250 merged 1 commit into
latestfrom
claude/sync-orphan-workflows
Aug 24, 2026
Merged

고아 페이지 해소가 발행 속도를 따라잡도록 처리량 조정#23
Kevinlee7250 merged 1 commit into
latestfrom
claude/sync-orphan-workflows

Conversation

@Kevinlee7250

Copy link
Copy Markdown
Owner

진단

도구(inbound_linker)는 2026-08-21부터 정상 동작했습니다. 그런데 고아는 165건 → 172건으로 오히려 늘었습니다. 링크가 안 걸린 게 아니라 처리량이 모자랐습니다.

해소: 주 1회 × 10건 = 10건/주
생성: 발행 1건당 고아 1건 → 하루 1편이면 7건/주
순감: 3건/주 → 밀린 172건을 걷어내는 데 57주

내부 링크는 글을 쓸 때 "새 글 → 기존 글" 한 방향으로만 걸립니다. 그래서 모든 새 글은 아무도 가리키지 않는 고아로 태어납니다. 배치를 아무리 빨리 돌려도 발행이 계속되는 한 새 고아는 계속 생깁니다.

실제 데이터에서도 그대로 보입니다 — 고아 상위 5건이 전부 최근 발행분이고, 바깥으로 나가는 링크(outbound)는 2~5개씩 정상적으로 있습니다.

변경

1. 발행 직후 역방향 링크 (blog-run, 블로그 3개 각각)

진단(internal_link_audit)을 먼저 돌려 방금 올린 글을 고아 목록에 넣고, inbound_linker --limit 5 --apply로 링크를 겁니다.

순서가 중요합니다 — 진단을 건너뛰면 새 글이 목록에 없어 그 글만 계속 고아로 남습니다. 발행을 막을 이유는 없으므로 실패해도 경고만 남깁니다. 산출물(internal_links·inbound_links)을 커밋 목록에 추가했습니다. 빠뜨리면 다음 실행이 낡은 고아 목록을 읽습니다.

2. 밀린 물량은 매일 배치로 (inbound-links, 주간 → 매일, 10 → 25건)

스케줄 실행에는 inputs가 없어 inputs.limit || 'N'의 N이 실제 값입니다. 입력란 default만 고치고 이쪽을 놓치면 조용히 옛 처리량으로 돌아가므로 둘을 맞추고 테스트로 고정했습니다.

순감 25건/일 → 밀린 172건은 약 7일
이후 배치는 보조로 남고, 새 고아는 발행 직후 단계가 처리

기대치에 대해

같은 측정에서 색인 검사 20건 중 고아 9건과 링크 있는 글 11건이 똑같이 미색인이었습니다. 내부 링크를 만든다고 색인이 풀린다는 근거는 아직 없습니다 — 표본이 전부 미색인이라 인과를 판정할 수 없습니다.

사이트 구조상 정당한 개선으로 보고 진행하며, 색인 해결책으로 광고하지 않습니다.

안전장치 (기존 inbound_linker에 이미 있는 것)

  • 발행된 글을 수정하므로 기본은 dry-run — --apply가 있어야 반영
  • 출처 글 하나에 링크 무한정 삽입 금지 (MAX_ADDED_PER_SOURCE = 3)
  • 이미 그 대상을 링크하고 있으면 건너뜀 (멱등)
  • 관련성 점수 미달이면 링크하지 않음 (MIN_RELEVANCE = 2, 억지 링크 금지)
  • Blogger 쓰기 레이트 리밋 배려 (건당 1초)

검증

  • 워크플로 YAML 파싱 통과
  • 이 사양이 되돌아가지 않도록 테스트 8건 추가 (매일 실행 여부, 스케줄 기본값이 발행량보다 큰지, 입력란·스케줄 기본값 일치, 블로그 3개 각각의 발행 직후 단계, 진단→링크 순서, 산출물 커밋)
  • 전체 659건 통과
  • 자격증명이 없는 환경이라 실제 Blogger 반영은 이 PR에서 확인할 수 없습니다. 병합 후 첫 실행에서 확인합니다

병합 후 확인할 것

  • inbound_links.jsonorphansRemaining이 실제로 줄어드는지
  • blog-run 로그에 "역방향 내부 링크" 단계가 성공으로 남는지
  • 새로 발행된 글이 다음 날 internal_links.json의 고아 목록에서 빠지는지

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69


Generated by Claude Code

스케줄 실행은 워크플로 파일을 기본 브랜치에서 읽으므로, 작업 브랜치에만
있으면 매일 도는 실행에 반영되지 않습니다.
- blog-run: 발행 직후 역방향 내부 링크 단계 (블로그 3개 각각)
진단 → 링크 순서. 산출물 2개를 커밋 목록에 추가
- inbound-links: 주간 → 매일, 처리량 10 → 25건
스케줄 실행이 실제로 쓰는 `inputs.limit || 'N'` 기본값도 함께 수정
cron 변경은 inbound-links 하나뿐이며 주간→매일 상향입니다.
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 24, 2026 04:21
@Kevinlee7250
Kevinlee7250 merged commit f3df8d1 into latestAug 24, 2026
1 check passed
github-actionsBot added a commit that referenced this pull request Aug 25, 2026
github-actionsBot added a commit that referenced this pull request Aug 25, 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

고아 페이지 해소가 발행 속도를 따라잡도록 처리량 조정 - #23

Merged
Kevinlee7250 merged 1 commit into
latestfrom
claude/sync-orphan-workflows
Aug 24, 2026
Merged

고아 페이지 해소가 발행 속도를 따라잡도록 처리량 조정#23
Kevinlee7250 merged 1 commit into
latestfrom
claude/sync-orphan-workflows

Conversation

@Kevinlee7250

Copy link
Copy Markdown
Owner

진단

도구(inbound_linker)는 2026-08-21부터 정상 동작했습니다. 그런데 고아는 165건 → 172건으로 오히려 늘었습니다. 링크가 안 걸린 게 아니라 처리량이 모자랐습니다.

해소: 주 1회 × 10건 = 10건/주
생성: 발행 1건당 고아 1건 → 하루 1편이면 7건/주
순감: 3건/주 → 밀린 172건을 걷어내는 데 57주

내부 링크는 글을 쓸 때 "새 글 → 기존 글" 한 방향으로만 걸립니다. 그래서 모든 새 글은 아무도 가리키지 않는 고아로 태어납니다. 배치를 아무리 빨리 돌려도 발행이 계속되는 한 새 고아는 계속 생깁니다.

실제 데이터에서도 그대로 보입니다 — 고아 상위 5건이 전부 최근 발행분이고, 바깥으로 나가는 링크(outbound)는 2~5개씩 정상적으로 있습니다.

변경

1. 발행 직후 역방향 링크 (blog-run, 블로그 3개 각각)

진단(internal_link_audit)을 먼저 돌려 방금 올린 글을 고아 목록에 넣고, inbound_linker --limit 5 --apply로 링크를 겁니다.

순서가 중요합니다 — 진단을 건너뛰면 새 글이 목록에 없어 그 글만 계속 고아로 남습니다. 발행을 막을 이유는 없으므로 실패해도 경고만 남깁니다. 산출물(internal_links·inbound_links)을 커밋 목록에 추가했습니다. 빠뜨리면 다음 실행이 낡은 고아 목록을 읽습니다.

2. 밀린 물량은 매일 배치로 (inbound-links, 주간 → 매일, 10 → 25건)

스케줄 실행에는 inputs가 없어 inputs.limit || 'N'의 N이 실제 값입니다. 입력란 default만 고치고 이쪽을 놓치면 조용히 옛 처리량으로 돌아가므로 둘을 맞추고 테스트로 고정했습니다.

순감 25건/일 → 밀린 172건은 약 7일
이후 배치는 보조로 남고, 새 고아는 발행 직후 단계가 처리

기대치에 대해

같은 측정에서 색인 검사 20건 중 고아 9건과 링크 있는 글 11건이 똑같이 미색인이었습니다. 내부 링크를 만든다고 색인이 풀린다는 근거는 아직 없습니다 — 표본이 전부 미색인이라 인과를 판정할 수 없습니다.

사이트 구조상 정당한 개선으로 보고 진행하며, 색인 해결책으로 광고하지 않습니다.

안전장치 (기존 inbound_linker에 이미 있는 것)

  • 발행된 글을 수정하므로 기본은 dry-run — --apply가 있어야 반영
  • 출처 글 하나에 링크 무한정 삽입 금지 (MAX_ADDED_PER_SOURCE = 3)
  • 이미 그 대상을 링크하고 있으면 건너뜀 (멱등)
  • 관련성 점수 미달이면 링크하지 않음 (MIN_RELEVANCE = 2, 억지 링크 금지)
  • Blogger 쓰기 레이트 리밋 배려 (건당 1초)

검증

  • 워크플로 YAML 파싱 통과
  • 이 사양이 되돌아가지 않도록 테스트 8건 추가 (매일 실행 여부, 스케줄 기본값이 발행량보다 큰지, 입력란·스케줄 기본값 일치, 블로그 3개 각각의 발행 직후 단계, 진단→링크 순서, 산출물 커밋)
  • 전체 659건 통과
  • 자격증명이 없는 환경이라 실제 Blogger 반영은 이 PR에서 확인할 수 없습니다. 병합 후 첫 실행에서 확인합니다

병합 후 확인할 것

  • inbound_links.jsonorphansRemaining이 실제로 줄어드는지
  • blog-run 로그에 "역방향 내부 링크" 단계가 성공으로 남는지
  • 새로 발행된 글이 다음 날 internal_links.json의 고아 목록에서 빠지는지

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69


Generated by Claude Code

스케줄 실행은 워크플로 파일을 기본 브랜치에서 읽으므로, 작업 브랜치에만
있으면 매일 도는 실행에 반영되지 않습니다.
- blog-run: 발행 직후 역방향 내부 링크 단계 (블로그 3개 각각)
진단 → 링크 순서. 산출물 2개를 커밋 목록에 추가
- inbound-links: 주간 → 매일, 처리량 10 → 25건
스케줄 실행이 실제로 쓰는 `inputs.limit || 'N'` 기본값도 함께 수정
cron 변경은 inbound-links 하나뿐이며 주간→매일 상향입니다.
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 24, 2026 04:21
@Kevinlee7250
Kevinlee7250 merged commit f3df8d1 into latestAug 24, 2026
1 check passed
github-actionsBot added a commit that referenced this pull request Aug 25, 2026
github-actionsBot added a commit that referenced this pull request Aug 25, 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

고아 페이지 해소가 발행 속도를 따라잡도록 처리량 조정 - #23

Merged
Kevinlee7250 merged 1 commit into
latestfrom
claude/sync-orphan-workflows
Aug 24, 2026
Merged

고아 페이지 해소가 발행 속도를 따라잡도록 처리량 조정#23
Kevinlee7250 merged 1 commit into
latestfrom
claude/sync-orphan-workflows

Conversation

@Kevinlee7250

Copy link
Copy Markdown
Owner

진단

도구(inbound_linker)는 2026-08-21부터 정상 동작했습니다. 그런데 고아는 165건 → 172건으로 오히려 늘었습니다. 링크가 안 걸린 게 아니라 처리량이 모자랐습니다.

해소: 주 1회 × 10건 = 10건/주
생성: 발행 1건당 고아 1건 → 하루 1편이면 7건/주
순감: 3건/주 → 밀린 172건을 걷어내는 데 57주

내부 링크는 글을 쓸 때 "새 글 → 기존 글" 한 방향으로만 걸립니다. 그래서 모든 새 글은 아무도 가리키지 않는 고아로 태어납니다. 배치를 아무리 빨리 돌려도 발행이 계속되는 한 새 고아는 계속 생깁니다.

실제 데이터에서도 그대로 보입니다 — 고아 상위 5건이 전부 최근 발행분이고, 바깥으로 나가는 링크(outbound)는 2~5개씩 정상적으로 있습니다.

변경

1. 발행 직후 역방향 링크 (blog-run, 블로그 3개 각각)

진단(internal_link_audit)을 먼저 돌려 방금 올린 글을 고아 목록에 넣고, inbound_linker --limit 5 --apply로 링크를 겁니다.

순서가 중요합니다 — 진단을 건너뛰면 새 글이 목록에 없어 그 글만 계속 고아로 남습니다. 발행을 막을 이유는 없으므로 실패해도 경고만 남깁니다. 산출물(internal_links·inbound_links)을 커밋 목록에 추가했습니다. 빠뜨리면 다음 실행이 낡은 고아 목록을 읽습니다.

2. 밀린 물량은 매일 배치로 (inbound-links, 주간 → 매일, 10 → 25건)

스케줄 실행에는 inputs가 없어 inputs.limit || 'N'의 N이 실제 값입니다. 입력란 default만 고치고 이쪽을 놓치면 조용히 옛 처리량으로 돌아가므로 둘을 맞추고 테스트로 고정했습니다.

순감 25건/일 → 밀린 172건은 약 7일
이후 배치는 보조로 남고, 새 고아는 발행 직후 단계가 처리

기대치에 대해

같은 측정에서 색인 검사 20건 중 고아 9건과 링크 있는 글 11건이 똑같이 미색인이었습니다. 내부 링크를 만든다고 색인이 풀린다는 근거는 아직 없습니다 — 표본이 전부 미색인이라 인과를 판정할 수 없습니다.

사이트 구조상 정당한 개선으로 보고 진행하며, 색인 해결책으로 광고하지 않습니다.

안전장치 (기존 inbound_linker에 이미 있는 것)

  • 발행된 글을 수정하므로 기본은 dry-run — --apply가 있어야 반영
  • 출처 글 하나에 링크 무한정 삽입 금지 (MAX_ADDED_PER_SOURCE = 3)
  • 이미 그 대상을 링크하고 있으면 건너뜀 (멱등)
  • 관련성 점수 미달이면 링크하지 않음 (MIN_RELEVANCE = 2, 억지 링크 금지)
  • Blogger 쓰기 레이트 리밋 배려 (건당 1초)

검증

  • 워크플로 YAML 파싱 통과
  • 이 사양이 되돌아가지 않도록 테스트 8건 추가 (매일 실행 여부, 스케줄 기본값이 발행량보다 큰지, 입력란·스케줄 기본값 일치, 블로그 3개 각각의 발행 직후 단계, 진단→링크 순서, 산출물 커밋)
  • 전체 659건 통과
  • 자격증명이 없는 환경이라 실제 Blogger 반영은 이 PR에서 확인할 수 없습니다. 병합 후 첫 실행에서 확인합니다

병합 후 확인할 것

  • inbound_links.jsonorphansRemaining이 실제로 줄어드는지
  • blog-run 로그에 "역방향 내부 링크" 단계가 성공으로 남는지
  • 새로 발행된 글이 다음 날 internal_links.json의 고아 목록에서 빠지는지

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69


Generated by Claude Code

스케줄 실행은 워크플로 파일을 기본 브랜치에서 읽으므로, 작업 브랜치에만
있으면 매일 도는 실행에 반영되지 않습니다.
- blog-run: 발행 직후 역방향 내부 링크 단계 (블로그 3개 각각)
진단 → 링크 순서. 산출물 2개를 커밋 목록에 추가
- inbound-links: 주간 → 매일, 처리량 10 → 25건
스케줄 실행이 실제로 쓰는 `inputs.limit || 'N'` 기본값도 함께 수정
cron 변경은 inbound-links 하나뿐이며 주간→매일 상향입니다.
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 24, 2026 04:21
@Kevinlee7250
Kevinlee7250 merged commit f3df8d1 into latestAug 24, 2026
1 check passed
github-actionsBot added a commit that referenced this pull request Aug 25, 2026
github-actionsBot added a commit that referenced this pull request Aug 25, 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

고아 페이지 해소가 발행 속도를 따라잡도록 처리량 조정 - #23

Merged
Kevinlee7250 merged 1 commit into
latestfrom
claude/sync-orphan-workflows
Aug 24, 2026
Merged

고아 페이지 해소가 발행 속도를 따라잡도록 처리량 조정#23
Kevinlee7250 merged 1 commit into
latestfrom
claude/sync-orphan-workflows

Conversation

@Kevinlee7250

Copy link
Copy Markdown
Owner

진단

도구(inbound_linker)는 2026-08-21부터 정상 동작했습니다. 그런데 고아는 165건 → 172건으로 오히려 늘었습니다. 링크가 안 걸린 게 아니라 처리량이 모자랐습니다.

해소: 주 1회 × 10건 = 10건/주
생성: 발행 1건당 고아 1건 → 하루 1편이면 7건/주
순감: 3건/주 → 밀린 172건을 걷어내는 데 57주

내부 링크는 글을 쓸 때 "새 글 → 기존 글" 한 방향으로만 걸립니다. 그래서 모든 새 글은 아무도 가리키지 않는 고아로 태어납니다. 배치를 아무리 빨리 돌려도 발행이 계속되는 한 새 고아는 계속 생깁니다.

실제 데이터에서도 그대로 보입니다 — 고아 상위 5건이 전부 최근 발행분이고, 바깥으로 나가는 링크(outbound)는 2~5개씩 정상적으로 있습니다.

변경

1. 발행 직후 역방향 링크 (blog-run, 블로그 3개 각각)

진단(internal_link_audit)을 먼저 돌려 방금 올린 글을 고아 목록에 넣고, inbound_linker --limit 5 --apply로 링크를 겁니다.

순서가 중요합니다 — 진단을 건너뛰면 새 글이 목록에 없어 그 글만 계속 고아로 남습니다. 발행을 막을 이유는 없으므로 실패해도 경고만 남깁니다. 산출물(internal_links·inbound_links)을 커밋 목록에 추가했습니다. 빠뜨리면 다음 실행이 낡은 고아 목록을 읽습니다.

2. 밀린 물량은 매일 배치로 (inbound-links, 주간 → 매일, 10 → 25건)

스케줄 실행에는 inputs가 없어 inputs.limit || 'N'의 N이 실제 값입니다. 입력란 default만 고치고 이쪽을 놓치면 조용히 옛 처리량으로 돌아가므로 둘을 맞추고 테스트로 고정했습니다.

순감 25건/일 → 밀린 172건은 약 7일
이후 배치는 보조로 남고, 새 고아는 발행 직후 단계가 처리

기대치에 대해

같은 측정에서 색인 검사 20건 중 고아 9건과 링크 있는 글 11건이 똑같이 미색인이었습니다. 내부 링크를 만든다고 색인이 풀린다는 근거는 아직 없습니다 — 표본이 전부 미색인이라 인과를 판정할 수 없습니다.

사이트 구조상 정당한 개선으로 보고 진행하며, 색인 해결책으로 광고하지 않습니다.

안전장치 (기존 inbound_linker에 이미 있는 것)

  • 발행된 글을 수정하므로 기본은 dry-run — --apply가 있어야 반영
  • 출처 글 하나에 링크 무한정 삽입 금지 (MAX_ADDED_PER_SOURCE = 3)
  • 이미 그 대상을 링크하고 있으면 건너뜀 (멱등)
  • 관련성 점수 미달이면 링크하지 않음 (MIN_RELEVANCE = 2, 억지 링크 금지)
  • Blogger 쓰기 레이트 리밋 배려 (건당 1초)

검증

  • 워크플로 YAML 파싱 통과
  • 이 사양이 되돌아가지 않도록 테스트 8건 추가 (매일 실행 여부, 스케줄 기본값이 발행량보다 큰지, 입력란·스케줄 기본값 일치, 블로그 3개 각각의 발행 직후 단계, 진단→링크 순서, 산출물 커밋)
  • 전체 659건 통과
  • 자격증명이 없는 환경이라 실제 Blogger 반영은 이 PR에서 확인할 수 없습니다. 병합 후 첫 실행에서 확인합니다

병합 후 확인할 것

  • inbound_links.jsonorphansRemaining이 실제로 줄어드는지
  • blog-run 로그에 "역방향 내부 링크" 단계가 성공으로 남는지
  • 새로 발행된 글이 다음 날 internal_links.json의 고아 목록에서 빠지는지

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69


Generated by Claude Code

스케줄 실행은 워크플로 파일을 기본 브랜치에서 읽으므로, 작업 브랜치에만
있으면 매일 도는 실행에 반영되지 않습니다.
- blog-run: 발행 직후 역방향 내부 링크 단계 (블로그 3개 각각)
진단 → 링크 순서. 산출물 2개를 커밋 목록에 추가
- inbound-links: 주간 → 매일, 처리량 10 → 25건
스케줄 실행이 실제로 쓰는 `inputs.limit || 'N'` 기본값도 함께 수정
cron 변경은 inbound-links 하나뿐이며 주간→매일 상향입니다.
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 24, 2026 04:21
@Kevinlee7250
Kevinlee7250 merged commit f3df8d1 into latestAug 24, 2026
1 check passed
github-actionsBot added a commit that referenced this pull request Aug 25, 2026
github-actionsBot added a commit that referenced this pull request Aug 25, 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

고아 페이지 해소가 발행 속도를 따라잡도록 처리량 조정 - #23

Merged
Kevinlee7250 merged 1 commit into
latestfrom
claude/sync-orphan-workflows
Aug 24, 2026
Merged

고아 페이지 해소가 발행 속도를 따라잡도록 처리량 조정#23
Kevinlee7250 merged 1 commit into
latestfrom
claude/sync-orphan-workflows

Conversation

@Kevinlee7250

Copy link
Copy Markdown
Owner

진단

도구(inbound_linker)는 2026-08-21부터 정상 동작했습니다. 그런데 고아는 165건 → 172건으로 오히려 늘었습니다. 링크가 안 걸린 게 아니라 처리량이 모자랐습니다.

해소: 주 1회 × 10건 = 10건/주
생성: 발행 1건당 고아 1건 → 하루 1편이면 7건/주
순감: 3건/주 → 밀린 172건을 걷어내는 데 57주

내부 링크는 글을 쓸 때 "새 글 → 기존 글" 한 방향으로만 걸립니다. 그래서 모든 새 글은 아무도 가리키지 않는 고아로 태어납니다. 배치를 아무리 빨리 돌려도 발행이 계속되는 한 새 고아는 계속 생깁니다.

실제 데이터에서도 그대로 보입니다 — 고아 상위 5건이 전부 최근 발행분이고, 바깥으로 나가는 링크(outbound)는 2~5개씩 정상적으로 있습니다.

변경

1. 발행 직후 역방향 링크 (blog-run, 블로그 3개 각각)

진단(internal_link_audit)을 먼저 돌려 방금 올린 글을 고아 목록에 넣고, inbound_linker --limit 5 --apply로 링크를 겁니다.

순서가 중요합니다 — 진단을 건너뛰면 새 글이 목록에 없어 그 글만 계속 고아로 남습니다. 발행을 막을 이유는 없으므로 실패해도 경고만 남깁니다. 산출물(internal_links·inbound_links)을 커밋 목록에 추가했습니다. 빠뜨리면 다음 실행이 낡은 고아 목록을 읽습니다.

2. 밀린 물량은 매일 배치로 (inbound-links, 주간 → 매일, 10 → 25건)

스케줄 실행에는 inputs가 없어 inputs.limit || 'N'의 N이 실제 값입니다. 입력란 default만 고치고 이쪽을 놓치면 조용히 옛 처리량으로 돌아가므로 둘을 맞추고 테스트로 고정했습니다.

순감 25건/일 → 밀린 172건은 약 7일
이후 배치는 보조로 남고, 새 고아는 발행 직후 단계가 처리

기대치에 대해

같은 측정에서 색인 검사 20건 중 고아 9건과 링크 있는 글 11건이 똑같이 미색인이었습니다. 내부 링크를 만든다고 색인이 풀린다는 근거는 아직 없습니다 — 표본이 전부 미색인이라 인과를 판정할 수 없습니다.

사이트 구조상 정당한 개선으로 보고 진행하며, 색인 해결책으로 광고하지 않습니다.

안전장치 (기존 inbound_linker에 이미 있는 것)

  • 발행된 글을 수정하므로 기본은 dry-run — --apply가 있어야 반영
  • 출처 글 하나에 링크 무한정 삽입 금지 (MAX_ADDED_PER_SOURCE = 3)
  • 이미 그 대상을 링크하고 있으면 건너뜀 (멱등)
  • 관련성 점수 미달이면 링크하지 않음 (MIN_RELEVANCE = 2, 억지 링크 금지)
  • Blogger 쓰기 레이트 리밋 배려 (건당 1초)

검증

  • 워크플로 YAML 파싱 통과
  • 이 사양이 되돌아가지 않도록 테스트 8건 추가 (매일 실행 여부, 스케줄 기본값이 발행량보다 큰지, 입력란·스케줄 기본값 일치, 블로그 3개 각각의 발행 직후 단계, 진단→링크 순서, 산출물 커밋)
  • 전체 659건 통과
  • 자격증명이 없는 환경이라 실제 Blogger 반영은 이 PR에서 확인할 수 없습니다. 병합 후 첫 실행에서 확인합니다

병합 후 확인할 것

  • inbound_links.jsonorphansRemaining이 실제로 줄어드는지
  • blog-run 로그에 "역방향 내부 링크" 단계가 성공으로 남는지
  • 새로 발행된 글이 다음 날 internal_links.json의 고아 목록에서 빠지는지

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69


Generated by Claude Code

스케줄 실행은 워크플로 파일을 기본 브랜치에서 읽으므로, 작업 브랜치에만
있으면 매일 도는 실행에 반영되지 않습니다.
- blog-run: 발행 직후 역방향 내부 링크 단계 (블로그 3개 각각)
진단 → 링크 순서. 산출물 2개를 커밋 목록에 추가
- inbound-links: 주간 → 매일, 처리량 10 → 25건
스케줄 실행이 실제로 쓰는 `inputs.limit || 'N'` 기본값도 함께 수정
cron 변경은 inbound-links 하나뿐이며 주간→매일 상향입니다.
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 24, 2026 04:21
@Kevinlee7250
Kevinlee7250 merged commit f3df8d1 into latestAug 24, 2026
1 check passed
github-actionsBot added a commit that referenced this pull request Aug 25, 2026
github-actionsBot added a commit that referenced this pull request Aug 25, 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

고아 페이지 해소가 발행 속도를 따라잡도록 처리량 조정 - #23

Merged
Kevinlee7250 merged 1 commit into
latestfrom
claude/sync-orphan-workflows
Aug 24, 2026
Merged

고아 페이지 해소가 발행 속도를 따라잡도록 처리량 조정#23
Kevinlee7250 merged 1 commit into
latestfrom
claude/sync-orphan-workflows

Conversation

@Kevinlee7250

Copy link
Copy Markdown
Owner

진단

도구(inbound_linker)는 2026-08-21부터 정상 동작했습니다. 그런데 고아는 165건 → 172건으로 오히려 늘었습니다. 링크가 안 걸린 게 아니라 처리량이 모자랐습니다.

해소: 주 1회 × 10건 = 10건/주
생성: 발행 1건당 고아 1건 → 하루 1편이면 7건/주
순감: 3건/주 → 밀린 172건을 걷어내는 데 57주

내부 링크는 글을 쓸 때 "새 글 → 기존 글" 한 방향으로만 걸립니다. 그래서 모든 새 글은 아무도 가리키지 않는 고아로 태어납니다. 배치를 아무리 빨리 돌려도 발행이 계속되는 한 새 고아는 계속 생깁니다.

실제 데이터에서도 그대로 보입니다 — 고아 상위 5건이 전부 최근 발행분이고, 바깥으로 나가는 링크(outbound)는 2~5개씩 정상적으로 있습니다.

변경

1. 발행 직후 역방향 링크 (blog-run, 블로그 3개 각각)

진단(internal_link_audit)을 먼저 돌려 방금 올린 글을 고아 목록에 넣고, inbound_linker --limit 5 --apply로 링크를 겁니다.

순서가 중요합니다 — 진단을 건너뛰면 새 글이 목록에 없어 그 글만 계속 고아로 남습니다. 발행을 막을 이유는 없으므로 실패해도 경고만 남깁니다. 산출물(internal_links·inbound_links)을 커밋 목록에 추가했습니다. 빠뜨리면 다음 실행이 낡은 고아 목록을 읽습니다.

2. 밀린 물량은 매일 배치로 (inbound-links, 주간 → 매일, 10 → 25건)

스케줄 실행에는 inputs가 없어 inputs.limit || 'N'의 N이 실제 값입니다. 입력란 default만 고치고 이쪽을 놓치면 조용히 옛 처리량으로 돌아가므로 둘을 맞추고 테스트로 고정했습니다.

순감 25건/일 → 밀린 172건은 약 7일
이후 배치는 보조로 남고, 새 고아는 발행 직후 단계가 처리

기대치에 대해

같은 측정에서 색인 검사 20건 중 고아 9건과 링크 있는 글 11건이 똑같이 미색인이었습니다. 내부 링크를 만든다고 색인이 풀린다는 근거는 아직 없습니다 — 표본이 전부 미색인이라 인과를 판정할 수 없습니다.

사이트 구조상 정당한 개선으로 보고 진행하며, 색인 해결책으로 광고하지 않습니다.

안전장치 (기존 inbound_linker에 이미 있는 것)

  • 발행된 글을 수정하므로 기본은 dry-run — --apply가 있어야 반영
  • 출처 글 하나에 링크 무한정 삽입 금지 (MAX_ADDED_PER_SOURCE = 3)
  • 이미 그 대상을 링크하고 있으면 건너뜀 (멱등)
  • 관련성 점수 미달이면 링크하지 않음 (MIN_RELEVANCE = 2, 억지 링크 금지)
  • Blogger 쓰기 레이트 리밋 배려 (건당 1초)

검증

  • 워크플로 YAML 파싱 통과
  • 이 사양이 되돌아가지 않도록 테스트 8건 추가 (매일 실행 여부, 스케줄 기본값이 발행량보다 큰지, 입력란·스케줄 기본값 일치, 블로그 3개 각각의 발행 직후 단계, 진단→링크 순서, 산출물 커밋)
  • 전체 659건 통과
  • 자격증명이 없는 환경이라 실제 Blogger 반영은 이 PR에서 확인할 수 없습니다. 병합 후 첫 실행에서 확인합니다

병합 후 확인할 것

  • inbound_links.jsonorphansRemaining이 실제로 줄어드는지
  • blog-run 로그에 "역방향 내부 링크" 단계가 성공으로 남는지
  • 새로 발행된 글이 다음 날 internal_links.json의 고아 목록에서 빠지는지

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69


Generated by Claude Code

스케줄 실행은 워크플로 파일을 기본 브랜치에서 읽으므로, 작업 브랜치에만
있으면 매일 도는 실행에 반영되지 않습니다.
- blog-run: 발행 직후 역방향 내부 링크 단계 (블로그 3개 각각)
진단 → 링크 순서. 산출물 2개를 커밋 목록에 추가
- inbound-links: 주간 → 매일, 처리량 10 → 25건
스케줄 실행이 실제로 쓰는 `inputs.limit || 'N'` 기본값도 함께 수정
cron 변경은 inbound-links 하나뿐이며 주간→매일 상향입니다.
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 24, 2026 04:21
@Kevinlee7250
Kevinlee7250 merged commit f3df8d1 into latestAug 24, 2026
1 check passed
github-actionsBot added a commit that referenced this pull request Aug 25, 2026
github-actionsBot added a commit that referenced this pull request Aug 25, 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

고아 페이지 해소가 발행 속도를 따라잡도록 처리량 조정 - #23

Merged
Kevinlee7250 merged 1 commit into
latestfrom
claude/sync-orphan-workflows
Aug 24, 2026
Merged

고아 페이지 해소가 발행 속도를 따라잡도록 처리량 조정#23
Kevinlee7250 merged 1 commit into
latestfrom
claude/sync-orphan-workflows

Conversation

@Kevinlee7250

Copy link
Copy Markdown
Owner

진단

도구(inbound_linker)는 2026-08-21부터 정상 동작했습니다. 그런데 고아는 165건 → 172건으로 오히려 늘었습니다. 링크가 안 걸린 게 아니라 처리량이 모자랐습니다.

해소: 주 1회 × 10건 = 10건/주
생성: 발행 1건당 고아 1건 → 하루 1편이면 7건/주
순감: 3건/주 → 밀린 172건을 걷어내는 데 57주

내부 링크는 글을 쓸 때 "새 글 → 기존 글" 한 방향으로만 걸립니다. 그래서 모든 새 글은 아무도 가리키지 않는 고아로 태어납니다. 배치를 아무리 빨리 돌려도 발행이 계속되는 한 새 고아는 계속 생깁니다.

실제 데이터에서도 그대로 보입니다 — 고아 상위 5건이 전부 최근 발행분이고, 바깥으로 나가는 링크(outbound)는 2~5개씩 정상적으로 있습니다.

변경

1. 발행 직후 역방향 링크 (blog-run, 블로그 3개 각각)

진단(internal_link_audit)을 먼저 돌려 방금 올린 글을 고아 목록에 넣고, inbound_linker --limit 5 --apply로 링크를 겁니다.

순서가 중요합니다 — 진단을 건너뛰면 새 글이 목록에 없어 그 글만 계속 고아로 남습니다. 발행을 막을 이유는 없으므로 실패해도 경고만 남깁니다. 산출물(internal_links·inbound_links)을 커밋 목록에 추가했습니다. 빠뜨리면 다음 실행이 낡은 고아 목록을 읽습니다.

2. 밀린 물량은 매일 배치로 (inbound-links, 주간 → 매일, 10 → 25건)

스케줄 실행에는 inputs가 없어 inputs.limit || 'N'의 N이 실제 값입니다. 입력란 default만 고치고 이쪽을 놓치면 조용히 옛 처리량으로 돌아가므로 둘을 맞추고 테스트로 고정했습니다.

순감 25건/일 → 밀린 172건은 약 7일
이후 배치는 보조로 남고, 새 고아는 발행 직후 단계가 처리

기대치에 대해

같은 측정에서 색인 검사 20건 중 고아 9건과 링크 있는 글 11건이 똑같이 미색인이었습니다. 내부 링크를 만든다고 색인이 풀린다는 근거는 아직 없습니다 — 표본이 전부 미색인이라 인과를 판정할 수 없습니다.

사이트 구조상 정당한 개선으로 보고 진행하며, 색인 해결책으로 광고하지 않습니다.

안전장치 (기존 inbound_linker에 이미 있는 것)

  • 발행된 글을 수정하므로 기본은 dry-run — --apply가 있어야 반영
  • 출처 글 하나에 링크 무한정 삽입 금지 (MAX_ADDED_PER_SOURCE = 3)
  • 이미 그 대상을 링크하고 있으면 건너뜀 (멱등)
  • 관련성 점수 미달이면 링크하지 않음 (MIN_RELEVANCE = 2, 억지 링크 금지)
  • Blogger 쓰기 레이트 리밋 배려 (건당 1초)

검증

  • 워크플로 YAML 파싱 통과
  • 이 사양이 되돌아가지 않도록 테스트 8건 추가 (매일 실행 여부, 스케줄 기본값이 발행량보다 큰지, 입력란·스케줄 기본값 일치, 블로그 3개 각각의 발행 직후 단계, 진단→링크 순서, 산출물 커밋)
  • 전체 659건 통과
  • 자격증명이 없는 환경이라 실제 Blogger 반영은 이 PR에서 확인할 수 없습니다. 병합 후 첫 실행에서 확인합니다

병합 후 확인할 것

  • inbound_links.jsonorphansRemaining이 실제로 줄어드는지
  • blog-run 로그에 "역방향 내부 링크" 단계가 성공으로 남는지
  • 새로 발행된 글이 다음 날 internal_links.json의 고아 목록에서 빠지는지

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69


Generated by Claude Code

스케줄 실행은 워크플로 파일을 기본 브랜치에서 읽으므로, 작업 브랜치에만
있으면 매일 도는 실행에 반영되지 않습니다.
- blog-run: 발행 직후 역방향 내부 링크 단계 (블로그 3개 각각)
진단 → 링크 순서. 산출물 2개를 커밋 목록에 추가
- inbound-links: 주간 → 매일, 처리량 10 → 25건
스케줄 실행이 실제로 쓰는 `inputs.limit || 'N'` 기본값도 함께 수정
cron 변경은 inbound-links 하나뿐이며 주간→매일 상향입니다.
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 24, 2026 04:21
@Kevinlee7250
Kevinlee7250 merged commit f3df8d1 into latestAug 24, 2026
1 check passed
github-actionsBot added a commit that referenced this pull request Aug 25, 2026
github-actionsBot added a commit that referenced this pull request Aug 25, 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

고아 페이지 해소가 발행 속도를 따라잡도록 처리량 조정 - #23

Merged
Kevinlee7250 merged 1 commit into
latestfrom
claude/sync-orphan-workflows
Aug 24, 2026
Merged

고아 페이지 해소가 발행 속도를 따라잡도록 처리량 조정#23
Kevinlee7250 merged 1 commit into
latestfrom
claude/sync-orphan-workflows

Conversation

@Kevinlee7250

Copy link
Copy Markdown
Owner

진단

도구(inbound_linker)는 2026-08-21부터 정상 동작했습니다. 그런데 고아는 165건 → 172건으로 오히려 늘었습니다. 링크가 안 걸린 게 아니라 처리량이 모자랐습니다.

해소: 주 1회 × 10건 = 10건/주
생성: 발행 1건당 고아 1건 → 하루 1편이면 7건/주
순감: 3건/주 → 밀린 172건을 걷어내는 데 57주

내부 링크는 글을 쓸 때 "새 글 → 기존 글" 한 방향으로만 걸립니다. 그래서 모든 새 글은 아무도 가리키지 않는 고아로 태어납니다. 배치를 아무리 빨리 돌려도 발행이 계속되는 한 새 고아는 계속 생깁니다.

실제 데이터에서도 그대로 보입니다 — 고아 상위 5건이 전부 최근 발행분이고, 바깥으로 나가는 링크(outbound)는 2~5개씩 정상적으로 있습니다.

변경

1. 발행 직후 역방향 링크 (blog-run, 블로그 3개 각각)

진단(internal_link_audit)을 먼저 돌려 방금 올린 글을 고아 목록에 넣고, inbound_linker --limit 5 --apply로 링크를 겁니다.

순서가 중요합니다 — 진단을 건너뛰면 새 글이 목록에 없어 그 글만 계속 고아로 남습니다. 발행을 막을 이유는 없으므로 실패해도 경고만 남깁니다. 산출물(internal_links·inbound_links)을 커밋 목록에 추가했습니다. 빠뜨리면 다음 실행이 낡은 고아 목록을 읽습니다.

2. 밀린 물량은 매일 배치로 (inbound-links, 주간 → 매일, 10 → 25건)

스케줄 실행에는 inputs가 없어 inputs.limit || 'N'의 N이 실제 값입니다. 입력란 default만 고치고 이쪽을 놓치면 조용히 옛 처리량으로 돌아가므로 둘을 맞추고 테스트로 고정했습니다.

순감 25건/일 → 밀린 172건은 약 7일
이후 배치는 보조로 남고, 새 고아는 발행 직후 단계가 처리

기대치에 대해

같은 측정에서 색인 검사 20건 중 고아 9건과 링크 있는 글 11건이 똑같이 미색인이었습니다. 내부 링크를 만든다고 색인이 풀린다는 근거는 아직 없습니다 — 표본이 전부 미색인이라 인과를 판정할 수 없습니다.

사이트 구조상 정당한 개선으로 보고 진행하며, 색인 해결책으로 광고하지 않습니다.

안전장치 (기존 inbound_linker에 이미 있는 것)

  • 발행된 글을 수정하므로 기본은 dry-run — --apply가 있어야 반영
  • 출처 글 하나에 링크 무한정 삽입 금지 (MAX_ADDED_PER_SOURCE = 3)
  • 이미 그 대상을 링크하고 있으면 건너뜀 (멱등)
  • 관련성 점수 미달이면 링크하지 않음 (MIN_RELEVANCE = 2, 억지 링크 금지)
  • Blogger 쓰기 레이트 리밋 배려 (건당 1초)

검증

  • 워크플로 YAML 파싱 통과
  • 이 사양이 되돌아가지 않도록 테스트 8건 추가 (매일 실행 여부, 스케줄 기본값이 발행량보다 큰지, 입력란·스케줄 기본값 일치, 블로그 3개 각각의 발행 직후 단계, 진단→링크 순서, 산출물 커밋)
  • 전체 659건 통과
  • 자격증명이 없는 환경이라 실제 Blogger 반영은 이 PR에서 확인할 수 없습니다. 병합 후 첫 실행에서 확인합니다

병합 후 확인할 것

  • inbound_links.jsonorphansRemaining이 실제로 줄어드는지
  • blog-run 로그에 "역방향 내부 링크" 단계가 성공으로 남는지
  • 새로 발행된 글이 다음 날 internal_links.json의 고아 목록에서 빠지는지

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69


Generated by Claude Code

스케줄 실행은 워크플로 파일을 기본 브랜치에서 읽으므로, 작업 브랜치에만
있으면 매일 도는 실행에 반영되지 않습니다.
- blog-run: 발행 직후 역방향 내부 링크 단계 (블로그 3개 각각)
진단 → 링크 순서. 산출물 2개를 커밋 목록에 추가
- inbound-links: 주간 → 매일, 처리량 10 → 25건
스케줄 실행이 실제로 쓰는 `inputs.limit || 'N'` 기본값도 함께 수정
cron 변경은 inbound-links 하나뿐이며 주간→매일 상향입니다.
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 24, 2026 04:21
@Kevinlee7250
Kevinlee7250 merged commit f3df8d1 into latestAug 24, 2026
1 check passed
github-actionsBot added a commit that referenced this pull request Aug 25, 2026
github-actionsBot added a commit that referenced this pull request Aug 25, 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