발행 스케줄 설정화 + 보류 사유 노출 - #56

Merged
Kevinlee7250 merged 2 commits into
latestfrom
claude/session-0119g48zqt4k-lwfzrd
Aug 29, 2026
Merged

발행 스케줄 설정화 + 보류 사유 노출#56
Kevinlee7250 merged 2 commits into
latestfrom
claude/session-0119g48zqt4k-lwfzrd

Conversation

@Kevinlee7250

@Kevinlee7250Kevinlee7250 commented Aug 29, 2026

Copy link
Copy Markdown
Owner

두 가지 변경이 들어 있습니다.

1. 발행 스케줄을 설정으로 분리 (블로그별 하루 1편)

발행량이 워크플로에 박혀 있었습니다. rotation 잡이 연중일 % 3으로 당번 하나만 골라 블로그당 3일에 1편이었고, 바꾸려면 매번 워크플로를 고쳐야 했습니다.

  • blog-automation/publish_schedule.json — 새 원본. 블로그별 enabled / postsPerDay(0~5) / days(매일 또는 요일)
  • blog-automation/publish_schedule.py — 계획 산출. 설정을 못 읽으면 **기본값(블로그별 1편/일)**으로 진행합니다. 조용히 멈추면 초록불인데 글이 안 올라오는 상태가 됩니다
  • blog-run.ymlrotation이 계획을 산출해 blog1/2/3 편수를 출력하고, 각 잡이 != '0'일 때만 돌며 POSTS_PER_RUN으로 그 편수를 씁니다
  • 요일 판정은 KST 기준입니다. 크론이 UTC 22:00(=다음날 07:00 KST)이라 UTC 요일로 보면 하루가 밀립니다

수동 발행은 계획에 묶이지 않습니다.workflow_dispatchblog_id·posts_per_runmanual-publish.yml은 그대로라, 급할 때 설정을 건드리지 않고 바로 올릴 수 있습니다. 이 독립성은 테스트로 고정했습니다.

대시보드 — '발행 스케줄' 패널에서 블로그별 편수를 선택하면 기능 스위치와 같은 방식(Contents API + PAT)으로 저장소의 원본 파일을 고칩니다. 오늘 예정 편수도 함께 표시합니다.

2. 보류 사유가 검토 화면까지 도달하게 함

팩트체크 게이트는 pending_reason을 채우지만, 보류 목록 저장 항목이 필드 화이트리스트라 사유가 실려 가지 않았습니다. 게이트는 도는데 검토자에게는 평범한 검토 대기와 구분되지 않았습니다. save_pending_postspendingReason·factCheck를 함께 싣고, 검토 카드가 사유를 배너로 띄웁니다.

확인

  • 새 테스트 23건. 수동 발행 게이트·저장 필드·화면 삽입을 각각 깨뜨려 실패하는 것을 확인한 뒤 되돌렸습니다
  • 전체 1222 passed, 2 skipped

⚠️ 발행량 관련 참고

전체 발행량이 1건/일 → 3건/일로 늘어납니다. 과거 9건/일로 돌던 시기에 구글 스팸 정책의 "대규모 콘텐츠 남용" 패턴으로 진단돼 크롤 예산이 깎였고, 2026-08-29 기준으로도 색인 상태는 20편 중 1편입니다. 늘린 만큼 색인률을 함께 지켜보길 권합니다 — 되돌릴 때는 이제 워크플로 수정 없이 대시보드에서 편수만 낮추면 됩니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69

팩트체크 게이트는 pending_reason을 채우지만, 보류 목록 저장 항목이 필드
화이트리스트라 사유가 실려 가지 않았습니다. 게이트는 도는데 검토자에게는
평범한 검토 대기와 구분되지 않았습니다.
save_pending_posts가 pendingReason·factCheck를 함께 싣고, 대시보드 검토
카드가 사유를 배너로 띄웁니다. 저장 경로와 화면 사용처를 각각 지우면
실패하는 테스트 3건을 붙였습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
발행량이 워크플로에 박혀 있었습니다. 연중일 % 3으로 당번 하나만 골라
블로그당 3일에 1편이었고, 바꾸려면 매번 워크플로를 고쳐야 했습니다.
publish_schedule.json이 원본이 되고, 블로그마다 켜짐 여부·하루 편수·요일을
따로 정합니다. 기본값은 세 블로그 모두 매일 1편입니다. 설정을 못 읽으면
기본값으로 진행합니다 — 초록불인데 글이 안 올라오는 상태를 막습니다.
수동 발행은 계획에 묶이지 않습니다. workflow_dispatch의 blog_id·
posts_per_run과 manual-publish 워크플로는 그대로라, 급할 때 설정을
건드리지 않고 바로 올릴 수 있습니다.
대시보드 '발행 스케줄' 패널에서 블로그별 편수를 바꾸면 기능 스위치와 같은
방식으로 저장소의 원본 파일을 고칩니다.
참고: 과거 하루 9건 발행 때 색인률이 0이었고 지금도 20편 중 1편만
색인됩니다. 편수를 늘린 만큼 색인 상태를 함께 봐야 하며, 이제 되돌리는 데
워크플로 수정이 필요 없습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250Kevinlee7250 changed the title 보류 사유가 검토 화면까지 도달하게 함발행 스케줄 설정화 + 보류 사유 노출Aug 29, 2026
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 29, 2026 06:21
@Kevinlee7250
Kevinlee7250 merged commit b6f2919 into latestAug 29, 2026
3 checks passed
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

발행 스케줄 설정화 + 보류 사유 노출 - #56

Merged
Kevinlee7250 merged 2 commits into
latestfrom
claude/session-0119g48zqt4k-lwfzrd
Aug 29, 2026
Merged

발행 스케줄 설정화 + 보류 사유 노출#56
Kevinlee7250 merged 2 commits into
latestfrom
claude/session-0119g48zqt4k-lwfzrd

Conversation

@Kevinlee7250

@Kevinlee7250Kevinlee7250 commented Aug 29, 2026

Copy link
Copy Markdown
Owner

두 가지 변경이 들어 있습니다.

1. 발행 스케줄을 설정으로 분리 (블로그별 하루 1편)

발행량이 워크플로에 박혀 있었습니다. rotation 잡이 연중일 % 3으로 당번 하나만 골라 블로그당 3일에 1편이었고, 바꾸려면 매번 워크플로를 고쳐야 했습니다.

  • blog-automation/publish_schedule.json — 새 원본. 블로그별 enabled / postsPerDay(0~5) / days(매일 또는 요일)
  • blog-automation/publish_schedule.py — 계획 산출. 설정을 못 읽으면 **기본값(블로그별 1편/일)**으로 진행합니다. 조용히 멈추면 초록불인데 글이 안 올라오는 상태가 됩니다
  • blog-run.ymlrotation이 계획을 산출해 blog1/2/3 편수를 출력하고, 각 잡이 != '0'일 때만 돌며 POSTS_PER_RUN으로 그 편수를 씁니다
  • 요일 판정은 KST 기준입니다. 크론이 UTC 22:00(=다음날 07:00 KST)이라 UTC 요일로 보면 하루가 밀립니다

수동 발행은 계획에 묶이지 않습니다.workflow_dispatchblog_id·posts_per_runmanual-publish.yml은 그대로라, 급할 때 설정을 건드리지 않고 바로 올릴 수 있습니다. 이 독립성은 테스트로 고정했습니다.

대시보드 — '발행 스케줄' 패널에서 블로그별 편수를 선택하면 기능 스위치와 같은 방식(Contents API + PAT)으로 저장소의 원본 파일을 고칩니다. 오늘 예정 편수도 함께 표시합니다.

2. 보류 사유가 검토 화면까지 도달하게 함

팩트체크 게이트는 pending_reason을 채우지만, 보류 목록 저장 항목이 필드 화이트리스트라 사유가 실려 가지 않았습니다. 게이트는 도는데 검토자에게는 평범한 검토 대기와 구분되지 않았습니다. save_pending_postspendingReason·factCheck를 함께 싣고, 검토 카드가 사유를 배너로 띄웁니다.

확인

  • 새 테스트 23건. 수동 발행 게이트·저장 필드·화면 삽입을 각각 깨뜨려 실패하는 것을 확인한 뒤 되돌렸습니다
  • 전체 1222 passed, 2 skipped

⚠️ 발행량 관련 참고

전체 발행량이 1건/일 → 3건/일로 늘어납니다. 과거 9건/일로 돌던 시기에 구글 스팸 정책의 "대규모 콘텐츠 남용" 패턴으로 진단돼 크롤 예산이 깎였고, 2026-08-29 기준으로도 색인 상태는 20편 중 1편입니다. 늘린 만큼 색인률을 함께 지켜보길 권합니다 — 되돌릴 때는 이제 워크플로 수정 없이 대시보드에서 편수만 낮추면 됩니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69

팩트체크 게이트는 pending_reason을 채우지만, 보류 목록 저장 항목이 필드
화이트리스트라 사유가 실려 가지 않았습니다. 게이트는 도는데 검토자에게는
평범한 검토 대기와 구분되지 않았습니다.
save_pending_posts가 pendingReason·factCheck를 함께 싣고, 대시보드 검토
카드가 사유를 배너로 띄웁니다. 저장 경로와 화면 사용처를 각각 지우면
실패하는 테스트 3건을 붙였습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
발행량이 워크플로에 박혀 있었습니다. 연중일 % 3으로 당번 하나만 골라
블로그당 3일에 1편이었고, 바꾸려면 매번 워크플로를 고쳐야 했습니다.
publish_schedule.json이 원본이 되고, 블로그마다 켜짐 여부·하루 편수·요일을
따로 정합니다. 기본값은 세 블로그 모두 매일 1편입니다. 설정을 못 읽으면
기본값으로 진행합니다 — 초록불인데 글이 안 올라오는 상태를 막습니다.
수동 발행은 계획에 묶이지 않습니다. workflow_dispatch의 blog_id·
posts_per_run과 manual-publish 워크플로는 그대로라, 급할 때 설정을
건드리지 않고 바로 올릴 수 있습니다.
대시보드 '발행 스케줄' 패널에서 블로그별 편수를 바꾸면 기능 스위치와 같은
방식으로 저장소의 원본 파일을 고칩니다.
참고: 과거 하루 9건 발행 때 색인률이 0이었고 지금도 20편 중 1편만
색인됩니다. 편수를 늘린 만큼 색인 상태를 함께 봐야 하며, 이제 되돌리는 데
워크플로 수정이 필요 없습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250Kevinlee7250 changed the title 보류 사유가 검토 화면까지 도달하게 함발행 스케줄 설정화 + 보류 사유 노출Aug 29, 2026
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 29, 2026 06:21
@Kevinlee7250
Kevinlee7250 merged commit b6f2919 into latestAug 29, 2026
3 checks passed
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

발행 스케줄 설정화 + 보류 사유 노출 - #56

Merged
Kevinlee7250 merged 2 commits into
latestfrom
claude/session-0119g48zqt4k-lwfzrd
Aug 29, 2026
Merged

발행 스케줄 설정화 + 보류 사유 노출#56
Kevinlee7250 merged 2 commits into
latestfrom
claude/session-0119g48zqt4k-lwfzrd

Conversation

@Kevinlee7250

@Kevinlee7250Kevinlee7250 commented Aug 29, 2026

Copy link
Copy Markdown
Owner

두 가지 변경이 들어 있습니다.

1. 발행 스케줄을 설정으로 분리 (블로그별 하루 1편)

발행량이 워크플로에 박혀 있었습니다. rotation 잡이 연중일 % 3으로 당번 하나만 골라 블로그당 3일에 1편이었고, 바꾸려면 매번 워크플로를 고쳐야 했습니다.

  • blog-automation/publish_schedule.json — 새 원본. 블로그별 enabled / postsPerDay(0~5) / days(매일 또는 요일)
  • blog-automation/publish_schedule.py — 계획 산출. 설정을 못 읽으면 **기본값(블로그별 1편/일)**으로 진행합니다. 조용히 멈추면 초록불인데 글이 안 올라오는 상태가 됩니다
  • blog-run.ymlrotation이 계획을 산출해 blog1/2/3 편수를 출력하고, 각 잡이 != '0'일 때만 돌며 POSTS_PER_RUN으로 그 편수를 씁니다
  • 요일 판정은 KST 기준입니다. 크론이 UTC 22:00(=다음날 07:00 KST)이라 UTC 요일로 보면 하루가 밀립니다

수동 발행은 계획에 묶이지 않습니다.workflow_dispatchblog_id·posts_per_runmanual-publish.yml은 그대로라, 급할 때 설정을 건드리지 않고 바로 올릴 수 있습니다. 이 독립성은 테스트로 고정했습니다.

대시보드 — '발행 스케줄' 패널에서 블로그별 편수를 선택하면 기능 스위치와 같은 방식(Contents API + PAT)으로 저장소의 원본 파일을 고칩니다. 오늘 예정 편수도 함께 표시합니다.

2. 보류 사유가 검토 화면까지 도달하게 함

팩트체크 게이트는 pending_reason을 채우지만, 보류 목록 저장 항목이 필드 화이트리스트라 사유가 실려 가지 않았습니다. 게이트는 도는데 검토자에게는 평범한 검토 대기와 구분되지 않았습니다. save_pending_postspendingReason·factCheck를 함께 싣고, 검토 카드가 사유를 배너로 띄웁니다.

확인

  • 새 테스트 23건. 수동 발행 게이트·저장 필드·화면 삽입을 각각 깨뜨려 실패하는 것을 확인한 뒤 되돌렸습니다
  • 전체 1222 passed, 2 skipped

⚠️ 발행량 관련 참고

전체 발행량이 1건/일 → 3건/일로 늘어납니다. 과거 9건/일로 돌던 시기에 구글 스팸 정책의 "대규모 콘텐츠 남용" 패턴으로 진단돼 크롤 예산이 깎였고, 2026-08-29 기준으로도 색인 상태는 20편 중 1편입니다. 늘린 만큼 색인률을 함께 지켜보길 권합니다 — 되돌릴 때는 이제 워크플로 수정 없이 대시보드에서 편수만 낮추면 됩니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69

팩트체크 게이트는 pending_reason을 채우지만, 보류 목록 저장 항목이 필드
화이트리스트라 사유가 실려 가지 않았습니다. 게이트는 도는데 검토자에게는
평범한 검토 대기와 구분되지 않았습니다.
save_pending_posts가 pendingReason·factCheck를 함께 싣고, 대시보드 검토
카드가 사유를 배너로 띄웁니다. 저장 경로와 화면 사용처를 각각 지우면
실패하는 테스트 3건을 붙였습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
발행량이 워크플로에 박혀 있었습니다. 연중일 % 3으로 당번 하나만 골라
블로그당 3일에 1편이었고, 바꾸려면 매번 워크플로를 고쳐야 했습니다.
publish_schedule.json이 원본이 되고, 블로그마다 켜짐 여부·하루 편수·요일을
따로 정합니다. 기본값은 세 블로그 모두 매일 1편입니다. 설정을 못 읽으면
기본값으로 진행합니다 — 초록불인데 글이 안 올라오는 상태를 막습니다.
수동 발행은 계획에 묶이지 않습니다. workflow_dispatch의 blog_id·
posts_per_run과 manual-publish 워크플로는 그대로라, 급할 때 설정을
건드리지 않고 바로 올릴 수 있습니다.
대시보드 '발행 스케줄' 패널에서 블로그별 편수를 바꾸면 기능 스위치와 같은
방식으로 저장소의 원본 파일을 고칩니다.
참고: 과거 하루 9건 발행 때 색인률이 0이었고 지금도 20편 중 1편만
색인됩니다. 편수를 늘린 만큼 색인 상태를 함께 봐야 하며, 이제 되돌리는 데
워크플로 수정이 필요 없습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250Kevinlee7250 changed the title 보류 사유가 검토 화면까지 도달하게 함발행 스케줄 설정화 + 보류 사유 노출Aug 29, 2026
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 29, 2026 06:21
@Kevinlee7250
Kevinlee7250 merged commit b6f2919 into latestAug 29, 2026
3 checks passed
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

발행 스케줄 설정화 + 보류 사유 노출 - #56

Merged
Kevinlee7250 merged 2 commits into
latestfrom
claude/session-0119g48zqt4k-lwfzrd
Aug 29, 2026
Merged

발행 스케줄 설정화 + 보류 사유 노출#56
Kevinlee7250 merged 2 commits into
latestfrom
claude/session-0119g48zqt4k-lwfzrd

Conversation

@Kevinlee7250

@Kevinlee7250Kevinlee7250 commented Aug 29, 2026

Copy link
Copy Markdown
Owner

두 가지 변경이 들어 있습니다.

1. 발행 스케줄을 설정으로 분리 (블로그별 하루 1편)

발행량이 워크플로에 박혀 있었습니다. rotation 잡이 연중일 % 3으로 당번 하나만 골라 블로그당 3일에 1편이었고, 바꾸려면 매번 워크플로를 고쳐야 했습니다.

  • blog-automation/publish_schedule.json — 새 원본. 블로그별 enabled / postsPerDay(0~5) / days(매일 또는 요일)
  • blog-automation/publish_schedule.py — 계획 산출. 설정을 못 읽으면 **기본값(블로그별 1편/일)**으로 진행합니다. 조용히 멈추면 초록불인데 글이 안 올라오는 상태가 됩니다
  • blog-run.ymlrotation이 계획을 산출해 blog1/2/3 편수를 출력하고, 각 잡이 != '0'일 때만 돌며 POSTS_PER_RUN으로 그 편수를 씁니다
  • 요일 판정은 KST 기준입니다. 크론이 UTC 22:00(=다음날 07:00 KST)이라 UTC 요일로 보면 하루가 밀립니다

수동 발행은 계획에 묶이지 않습니다.workflow_dispatchblog_id·posts_per_runmanual-publish.yml은 그대로라, 급할 때 설정을 건드리지 않고 바로 올릴 수 있습니다. 이 독립성은 테스트로 고정했습니다.

대시보드 — '발행 스케줄' 패널에서 블로그별 편수를 선택하면 기능 스위치와 같은 방식(Contents API + PAT)으로 저장소의 원본 파일을 고칩니다. 오늘 예정 편수도 함께 표시합니다.

2. 보류 사유가 검토 화면까지 도달하게 함

팩트체크 게이트는 pending_reason을 채우지만, 보류 목록 저장 항목이 필드 화이트리스트라 사유가 실려 가지 않았습니다. 게이트는 도는데 검토자에게는 평범한 검토 대기와 구분되지 않았습니다. save_pending_postspendingReason·factCheck를 함께 싣고, 검토 카드가 사유를 배너로 띄웁니다.

확인

  • 새 테스트 23건. 수동 발행 게이트·저장 필드·화면 삽입을 각각 깨뜨려 실패하는 것을 확인한 뒤 되돌렸습니다
  • 전체 1222 passed, 2 skipped

⚠️ 발행량 관련 참고

전체 발행량이 1건/일 → 3건/일로 늘어납니다. 과거 9건/일로 돌던 시기에 구글 스팸 정책의 "대규모 콘텐츠 남용" 패턴으로 진단돼 크롤 예산이 깎였고, 2026-08-29 기준으로도 색인 상태는 20편 중 1편입니다. 늘린 만큼 색인률을 함께 지켜보길 권합니다 — 되돌릴 때는 이제 워크플로 수정 없이 대시보드에서 편수만 낮추면 됩니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69

팩트체크 게이트는 pending_reason을 채우지만, 보류 목록 저장 항목이 필드
화이트리스트라 사유가 실려 가지 않았습니다. 게이트는 도는데 검토자에게는
평범한 검토 대기와 구분되지 않았습니다.
save_pending_posts가 pendingReason·factCheck를 함께 싣고, 대시보드 검토
카드가 사유를 배너로 띄웁니다. 저장 경로와 화면 사용처를 각각 지우면
실패하는 테스트 3건을 붙였습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
발행량이 워크플로에 박혀 있었습니다. 연중일 % 3으로 당번 하나만 골라
블로그당 3일에 1편이었고, 바꾸려면 매번 워크플로를 고쳐야 했습니다.
publish_schedule.json이 원본이 되고, 블로그마다 켜짐 여부·하루 편수·요일을
따로 정합니다. 기본값은 세 블로그 모두 매일 1편입니다. 설정을 못 읽으면
기본값으로 진행합니다 — 초록불인데 글이 안 올라오는 상태를 막습니다.
수동 발행은 계획에 묶이지 않습니다. workflow_dispatch의 blog_id·
posts_per_run과 manual-publish 워크플로는 그대로라, 급할 때 설정을
건드리지 않고 바로 올릴 수 있습니다.
대시보드 '발행 스케줄' 패널에서 블로그별 편수를 바꾸면 기능 스위치와 같은
방식으로 저장소의 원본 파일을 고칩니다.
참고: 과거 하루 9건 발행 때 색인률이 0이었고 지금도 20편 중 1편만
색인됩니다. 편수를 늘린 만큼 색인 상태를 함께 봐야 하며, 이제 되돌리는 데
워크플로 수정이 필요 없습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250Kevinlee7250 changed the title 보류 사유가 검토 화면까지 도달하게 함발행 스케줄 설정화 + 보류 사유 노출Aug 29, 2026
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 29, 2026 06:21
@Kevinlee7250
Kevinlee7250 merged commit b6f2919 into latestAug 29, 2026
3 checks passed
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

발행 스케줄 설정화 + 보류 사유 노출 - #56

Merged
Kevinlee7250 merged 2 commits into
latestfrom
claude/session-0119g48zqt4k-lwfzrd
Aug 29, 2026
Merged

발행 스케줄 설정화 + 보류 사유 노출#56
Kevinlee7250 merged 2 commits into
latestfrom
claude/session-0119g48zqt4k-lwfzrd

Conversation

@Kevinlee7250

@Kevinlee7250Kevinlee7250 commented Aug 29, 2026

Copy link
Copy Markdown
Owner

두 가지 변경이 들어 있습니다.

1. 발행 스케줄을 설정으로 분리 (블로그별 하루 1편)

발행량이 워크플로에 박혀 있었습니다. rotation 잡이 연중일 % 3으로 당번 하나만 골라 블로그당 3일에 1편이었고, 바꾸려면 매번 워크플로를 고쳐야 했습니다.

  • blog-automation/publish_schedule.json — 새 원본. 블로그별 enabled / postsPerDay(0~5) / days(매일 또는 요일)
  • blog-automation/publish_schedule.py — 계획 산출. 설정을 못 읽으면 **기본값(블로그별 1편/일)**으로 진행합니다. 조용히 멈추면 초록불인데 글이 안 올라오는 상태가 됩니다
  • blog-run.ymlrotation이 계획을 산출해 blog1/2/3 편수를 출력하고, 각 잡이 != '0'일 때만 돌며 POSTS_PER_RUN으로 그 편수를 씁니다
  • 요일 판정은 KST 기준입니다. 크론이 UTC 22:00(=다음날 07:00 KST)이라 UTC 요일로 보면 하루가 밀립니다

수동 발행은 계획에 묶이지 않습니다.workflow_dispatchblog_id·posts_per_runmanual-publish.yml은 그대로라, 급할 때 설정을 건드리지 않고 바로 올릴 수 있습니다. 이 독립성은 테스트로 고정했습니다.

대시보드 — '발행 스케줄' 패널에서 블로그별 편수를 선택하면 기능 스위치와 같은 방식(Contents API + PAT)으로 저장소의 원본 파일을 고칩니다. 오늘 예정 편수도 함께 표시합니다.

2. 보류 사유가 검토 화면까지 도달하게 함

팩트체크 게이트는 pending_reason을 채우지만, 보류 목록 저장 항목이 필드 화이트리스트라 사유가 실려 가지 않았습니다. 게이트는 도는데 검토자에게는 평범한 검토 대기와 구분되지 않았습니다. save_pending_postspendingReason·factCheck를 함께 싣고, 검토 카드가 사유를 배너로 띄웁니다.

확인

  • 새 테스트 23건. 수동 발행 게이트·저장 필드·화면 삽입을 각각 깨뜨려 실패하는 것을 확인한 뒤 되돌렸습니다
  • 전체 1222 passed, 2 skipped

⚠️ 발행량 관련 참고

전체 발행량이 1건/일 → 3건/일로 늘어납니다. 과거 9건/일로 돌던 시기에 구글 스팸 정책의 "대규모 콘텐츠 남용" 패턴으로 진단돼 크롤 예산이 깎였고, 2026-08-29 기준으로도 색인 상태는 20편 중 1편입니다. 늘린 만큼 색인률을 함께 지켜보길 권합니다 — 되돌릴 때는 이제 워크플로 수정 없이 대시보드에서 편수만 낮추면 됩니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69

팩트체크 게이트는 pending_reason을 채우지만, 보류 목록 저장 항목이 필드
화이트리스트라 사유가 실려 가지 않았습니다. 게이트는 도는데 검토자에게는
평범한 검토 대기와 구분되지 않았습니다.
save_pending_posts가 pendingReason·factCheck를 함께 싣고, 대시보드 검토
카드가 사유를 배너로 띄웁니다. 저장 경로와 화면 사용처를 각각 지우면
실패하는 테스트 3건을 붙였습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
발행량이 워크플로에 박혀 있었습니다. 연중일 % 3으로 당번 하나만 골라
블로그당 3일에 1편이었고, 바꾸려면 매번 워크플로를 고쳐야 했습니다.
publish_schedule.json이 원본이 되고, 블로그마다 켜짐 여부·하루 편수·요일을
따로 정합니다. 기본값은 세 블로그 모두 매일 1편입니다. 설정을 못 읽으면
기본값으로 진행합니다 — 초록불인데 글이 안 올라오는 상태를 막습니다.
수동 발행은 계획에 묶이지 않습니다. workflow_dispatch의 blog_id·
posts_per_run과 manual-publish 워크플로는 그대로라, 급할 때 설정을
건드리지 않고 바로 올릴 수 있습니다.
대시보드 '발행 스케줄' 패널에서 블로그별 편수를 바꾸면 기능 스위치와 같은
방식으로 저장소의 원본 파일을 고칩니다.
참고: 과거 하루 9건 발행 때 색인률이 0이었고 지금도 20편 중 1편만
색인됩니다. 편수를 늘린 만큼 색인 상태를 함께 봐야 하며, 이제 되돌리는 데
워크플로 수정이 필요 없습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250Kevinlee7250 changed the title 보류 사유가 검토 화면까지 도달하게 함발행 스케줄 설정화 + 보류 사유 노출Aug 29, 2026
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 29, 2026 06:21
@Kevinlee7250
Kevinlee7250 merged commit b6f2919 into latestAug 29, 2026
3 checks passed
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

발행 스케줄 설정화 + 보류 사유 노출 - #56

Merged
Kevinlee7250 merged 2 commits into
latestfrom
claude/session-0119g48zqt4k-lwfzrd
Aug 29, 2026
Merged

발행 스케줄 설정화 + 보류 사유 노출#56
Kevinlee7250 merged 2 commits into
latestfrom
claude/session-0119g48zqt4k-lwfzrd

Conversation

@Kevinlee7250

@Kevinlee7250Kevinlee7250 commented Aug 29, 2026

Copy link
Copy Markdown
Owner

두 가지 변경이 들어 있습니다.

1. 발행 스케줄을 설정으로 분리 (블로그별 하루 1편)

발행량이 워크플로에 박혀 있었습니다. rotation 잡이 연중일 % 3으로 당번 하나만 골라 블로그당 3일에 1편이었고, 바꾸려면 매번 워크플로를 고쳐야 했습니다.

  • blog-automation/publish_schedule.json — 새 원본. 블로그별 enabled / postsPerDay(0~5) / days(매일 또는 요일)
  • blog-automation/publish_schedule.py — 계획 산출. 설정을 못 읽으면 **기본값(블로그별 1편/일)**으로 진행합니다. 조용히 멈추면 초록불인데 글이 안 올라오는 상태가 됩니다
  • blog-run.ymlrotation이 계획을 산출해 blog1/2/3 편수를 출력하고, 각 잡이 != '0'일 때만 돌며 POSTS_PER_RUN으로 그 편수를 씁니다
  • 요일 판정은 KST 기준입니다. 크론이 UTC 22:00(=다음날 07:00 KST)이라 UTC 요일로 보면 하루가 밀립니다

수동 발행은 계획에 묶이지 않습니다.workflow_dispatchblog_id·posts_per_runmanual-publish.yml은 그대로라, 급할 때 설정을 건드리지 않고 바로 올릴 수 있습니다. 이 독립성은 테스트로 고정했습니다.

대시보드 — '발행 스케줄' 패널에서 블로그별 편수를 선택하면 기능 스위치와 같은 방식(Contents API + PAT)으로 저장소의 원본 파일을 고칩니다. 오늘 예정 편수도 함께 표시합니다.

2. 보류 사유가 검토 화면까지 도달하게 함

팩트체크 게이트는 pending_reason을 채우지만, 보류 목록 저장 항목이 필드 화이트리스트라 사유가 실려 가지 않았습니다. 게이트는 도는데 검토자에게는 평범한 검토 대기와 구분되지 않았습니다. save_pending_postspendingReason·factCheck를 함께 싣고, 검토 카드가 사유를 배너로 띄웁니다.

확인

  • 새 테스트 23건. 수동 발행 게이트·저장 필드·화면 삽입을 각각 깨뜨려 실패하는 것을 확인한 뒤 되돌렸습니다
  • 전체 1222 passed, 2 skipped

⚠️ 발행량 관련 참고

전체 발행량이 1건/일 → 3건/일로 늘어납니다. 과거 9건/일로 돌던 시기에 구글 스팸 정책의 "대규모 콘텐츠 남용" 패턴으로 진단돼 크롤 예산이 깎였고, 2026-08-29 기준으로도 색인 상태는 20편 중 1편입니다. 늘린 만큼 색인률을 함께 지켜보길 권합니다 — 되돌릴 때는 이제 워크플로 수정 없이 대시보드에서 편수만 낮추면 됩니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69

팩트체크 게이트는 pending_reason을 채우지만, 보류 목록 저장 항목이 필드
화이트리스트라 사유가 실려 가지 않았습니다. 게이트는 도는데 검토자에게는
평범한 검토 대기와 구분되지 않았습니다.
save_pending_posts가 pendingReason·factCheck를 함께 싣고, 대시보드 검토
카드가 사유를 배너로 띄웁니다. 저장 경로와 화면 사용처를 각각 지우면
실패하는 테스트 3건을 붙였습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
발행량이 워크플로에 박혀 있었습니다. 연중일 % 3으로 당번 하나만 골라
블로그당 3일에 1편이었고, 바꾸려면 매번 워크플로를 고쳐야 했습니다.
publish_schedule.json이 원본이 되고, 블로그마다 켜짐 여부·하루 편수·요일을
따로 정합니다. 기본값은 세 블로그 모두 매일 1편입니다. 설정을 못 읽으면
기본값으로 진행합니다 — 초록불인데 글이 안 올라오는 상태를 막습니다.
수동 발행은 계획에 묶이지 않습니다. workflow_dispatch의 blog_id·
posts_per_run과 manual-publish 워크플로는 그대로라, 급할 때 설정을
건드리지 않고 바로 올릴 수 있습니다.
대시보드 '발행 스케줄' 패널에서 블로그별 편수를 바꾸면 기능 스위치와 같은
방식으로 저장소의 원본 파일을 고칩니다.
참고: 과거 하루 9건 발행 때 색인률이 0이었고 지금도 20편 중 1편만
색인됩니다. 편수를 늘린 만큼 색인 상태를 함께 봐야 하며, 이제 되돌리는 데
워크플로 수정이 필요 없습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250Kevinlee7250 changed the title 보류 사유가 검토 화면까지 도달하게 함발행 스케줄 설정화 + 보류 사유 노출Aug 29, 2026
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 29, 2026 06:21
@Kevinlee7250
Kevinlee7250 merged commit b6f2919 into latestAug 29, 2026
3 checks passed
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

발행 스케줄 설정화 + 보류 사유 노출 - #56

Merged
Kevinlee7250 merged 2 commits into
latestfrom
claude/session-0119g48zqt4k-lwfzrd
Aug 29, 2026
Merged

발행 스케줄 설정화 + 보류 사유 노출#56
Kevinlee7250 merged 2 commits into
latestfrom
claude/session-0119g48zqt4k-lwfzrd

Conversation

@Kevinlee7250

@Kevinlee7250Kevinlee7250 commented Aug 29, 2026

Copy link
Copy Markdown
Owner

두 가지 변경이 들어 있습니다.

1. 발행 스케줄을 설정으로 분리 (블로그별 하루 1편)

발행량이 워크플로에 박혀 있었습니다. rotation 잡이 연중일 % 3으로 당번 하나만 골라 블로그당 3일에 1편이었고, 바꾸려면 매번 워크플로를 고쳐야 했습니다.

  • blog-automation/publish_schedule.json — 새 원본. 블로그별 enabled / postsPerDay(0~5) / days(매일 또는 요일)
  • blog-automation/publish_schedule.py — 계획 산출. 설정을 못 읽으면 **기본값(블로그별 1편/일)**으로 진행합니다. 조용히 멈추면 초록불인데 글이 안 올라오는 상태가 됩니다
  • blog-run.ymlrotation이 계획을 산출해 blog1/2/3 편수를 출력하고, 각 잡이 != '0'일 때만 돌며 POSTS_PER_RUN으로 그 편수를 씁니다
  • 요일 판정은 KST 기준입니다. 크론이 UTC 22:00(=다음날 07:00 KST)이라 UTC 요일로 보면 하루가 밀립니다

수동 발행은 계획에 묶이지 않습니다.workflow_dispatchblog_id·posts_per_runmanual-publish.yml은 그대로라, 급할 때 설정을 건드리지 않고 바로 올릴 수 있습니다. 이 독립성은 테스트로 고정했습니다.

대시보드 — '발행 스케줄' 패널에서 블로그별 편수를 선택하면 기능 스위치와 같은 방식(Contents API + PAT)으로 저장소의 원본 파일을 고칩니다. 오늘 예정 편수도 함께 표시합니다.

2. 보류 사유가 검토 화면까지 도달하게 함

팩트체크 게이트는 pending_reason을 채우지만, 보류 목록 저장 항목이 필드 화이트리스트라 사유가 실려 가지 않았습니다. 게이트는 도는데 검토자에게는 평범한 검토 대기와 구분되지 않았습니다. save_pending_postspendingReason·factCheck를 함께 싣고, 검토 카드가 사유를 배너로 띄웁니다.

확인

  • 새 테스트 23건. 수동 발행 게이트·저장 필드·화면 삽입을 각각 깨뜨려 실패하는 것을 확인한 뒤 되돌렸습니다
  • 전체 1222 passed, 2 skipped

⚠️ 발행량 관련 참고

전체 발행량이 1건/일 → 3건/일로 늘어납니다. 과거 9건/일로 돌던 시기에 구글 스팸 정책의 "대규모 콘텐츠 남용" 패턴으로 진단돼 크롤 예산이 깎였고, 2026-08-29 기준으로도 색인 상태는 20편 중 1편입니다. 늘린 만큼 색인률을 함께 지켜보길 권합니다 — 되돌릴 때는 이제 워크플로 수정 없이 대시보드에서 편수만 낮추면 됩니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69

팩트체크 게이트는 pending_reason을 채우지만, 보류 목록 저장 항목이 필드
화이트리스트라 사유가 실려 가지 않았습니다. 게이트는 도는데 검토자에게는
평범한 검토 대기와 구분되지 않았습니다.
save_pending_posts가 pendingReason·factCheck를 함께 싣고, 대시보드 검토
카드가 사유를 배너로 띄웁니다. 저장 경로와 화면 사용처를 각각 지우면
실패하는 테스트 3건을 붙였습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
발행량이 워크플로에 박혀 있었습니다. 연중일 % 3으로 당번 하나만 골라
블로그당 3일에 1편이었고, 바꾸려면 매번 워크플로를 고쳐야 했습니다.
publish_schedule.json이 원본이 되고, 블로그마다 켜짐 여부·하루 편수·요일을
따로 정합니다. 기본값은 세 블로그 모두 매일 1편입니다. 설정을 못 읽으면
기본값으로 진행합니다 — 초록불인데 글이 안 올라오는 상태를 막습니다.
수동 발행은 계획에 묶이지 않습니다. workflow_dispatch의 blog_id·
posts_per_run과 manual-publish 워크플로는 그대로라, 급할 때 설정을
건드리지 않고 바로 올릴 수 있습니다.
대시보드 '발행 스케줄' 패널에서 블로그별 편수를 바꾸면 기능 스위치와 같은
방식으로 저장소의 원본 파일을 고칩니다.
참고: 과거 하루 9건 발행 때 색인률이 0이었고 지금도 20편 중 1편만
색인됩니다. 편수를 늘린 만큼 색인 상태를 함께 봐야 하며, 이제 되돌리는 데
워크플로 수정이 필요 없습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250Kevinlee7250 changed the title 보류 사유가 검토 화면까지 도달하게 함발행 스케줄 설정화 + 보류 사유 노출Aug 29, 2026
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 29, 2026 06:21
@Kevinlee7250
Kevinlee7250 merged commit b6f2919 into latestAug 29, 2026
3 checks passed
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

발행 스케줄 설정화 + 보류 사유 노출 - #56

Merged
Kevinlee7250 merged 2 commits into
latestfrom
claude/session-0119g48zqt4k-lwfzrd
Aug 29, 2026
Merged

발행 스케줄 설정화 + 보류 사유 노출#56
Kevinlee7250 merged 2 commits into
latestfrom
claude/session-0119g48zqt4k-lwfzrd

Conversation

@Kevinlee7250

@Kevinlee7250Kevinlee7250 commented Aug 29, 2026

Copy link
Copy Markdown
Owner

두 가지 변경이 들어 있습니다.

1. 발행 스케줄을 설정으로 분리 (블로그별 하루 1편)

발행량이 워크플로에 박혀 있었습니다. rotation 잡이 연중일 % 3으로 당번 하나만 골라 블로그당 3일에 1편이었고, 바꾸려면 매번 워크플로를 고쳐야 했습니다.

  • blog-automation/publish_schedule.json — 새 원본. 블로그별 enabled / postsPerDay(0~5) / days(매일 또는 요일)
  • blog-automation/publish_schedule.py — 계획 산출. 설정을 못 읽으면 **기본값(블로그별 1편/일)**으로 진행합니다. 조용히 멈추면 초록불인데 글이 안 올라오는 상태가 됩니다
  • blog-run.ymlrotation이 계획을 산출해 blog1/2/3 편수를 출력하고, 각 잡이 != '0'일 때만 돌며 POSTS_PER_RUN으로 그 편수를 씁니다
  • 요일 판정은 KST 기준입니다. 크론이 UTC 22:00(=다음날 07:00 KST)이라 UTC 요일로 보면 하루가 밀립니다

수동 발행은 계획에 묶이지 않습니다.workflow_dispatchblog_id·posts_per_runmanual-publish.yml은 그대로라, 급할 때 설정을 건드리지 않고 바로 올릴 수 있습니다. 이 독립성은 테스트로 고정했습니다.

대시보드 — '발행 스케줄' 패널에서 블로그별 편수를 선택하면 기능 스위치와 같은 방식(Contents API + PAT)으로 저장소의 원본 파일을 고칩니다. 오늘 예정 편수도 함께 표시합니다.

2. 보류 사유가 검토 화면까지 도달하게 함

팩트체크 게이트는 pending_reason을 채우지만, 보류 목록 저장 항목이 필드 화이트리스트라 사유가 실려 가지 않았습니다. 게이트는 도는데 검토자에게는 평범한 검토 대기와 구분되지 않았습니다. save_pending_postspendingReason·factCheck를 함께 싣고, 검토 카드가 사유를 배너로 띄웁니다.

확인

  • 새 테스트 23건. 수동 발행 게이트·저장 필드·화면 삽입을 각각 깨뜨려 실패하는 것을 확인한 뒤 되돌렸습니다
  • 전체 1222 passed, 2 skipped

⚠️ 발행량 관련 참고

전체 발행량이 1건/일 → 3건/일로 늘어납니다. 과거 9건/일로 돌던 시기에 구글 스팸 정책의 "대규모 콘텐츠 남용" 패턴으로 진단돼 크롤 예산이 깎였고, 2026-08-29 기준으로도 색인 상태는 20편 중 1편입니다. 늘린 만큼 색인률을 함께 지켜보길 권합니다 — 되돌릴 때는 이제 워크플로 수정 없이 대시보드에서 편수만 낮추면 됩니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69

팩트체크 게이트는 pending_reason을 채우지만, 보류 목록 저장 항목이 필드
화이트리스트라 사유가 실려 가지 않았습니다. 게이트는 도는데 검토자에게는
평범한 검토 대기와 구분되지 않았습니다.
save_pending_posts가 pendingReason·factCheck를 함께 싣고, 대시보드 검토
카드가 사유를 배너로 띄웁니다. 저장 경로와 화면 사용처를 각각 지우면
실패하는 테스트 3건을 붙였습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
발행량이 워크플로에 박혀 있었습니다. 연중일 % 3으로 당번 하나만 골라
블로그당 3일에 1편이었고, 바꾸려면 매번 워크플로를 고쳐야 했습니다.
publish_schedule.json이 원본이 되고, 블로그마다 켜짐 여부·하루 편수·요일을
따로 정합니다. 기본값은 세 블로그 모두 매일 1편입니다. 설정을 못 읽으면
기본값으로 진행합니다 — 초록불인데 글이 안 올라오는 상태를 막습니다.
수동 발행은 계획에 묶이지 않습니다. workflow_dispatch의 blog_id·
posts_per_run과 manual-publish 워크플로는 그대로라, 급할 때 설정을
건드리지 않고 바로 올릴 수 있습니다.
대시보드 '발행 스케줄' 패널에서 블로그별 편수를 바꾸면 기능 스위치와 같은
방식으로 저장소의 원본 파일을 고칩니다.
참고: 과거 하루 9건 발행 때 색인률이 0이었고 지금도 20편 중 1편만
색인됩니다. 편수를 늘린 만큼 색인 상태를 함께 봐야 하며, 이제 되돌리는 데
워크플로 수정이 필요 없습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250Kevinlee7250 changed the title 보류 사유가 검토 화면까지 도달하게 함발행 스케줄 설정화 + 보류 사유 노출Aug 29, 2026
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 29, 2026 06:21
@Kevinlee7250
Kevinlee7250 merged commit b6f2919 into latestAug 29, 2026
3 checks passed
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