⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1) - #12

Merged
Kevinlee7250 merged 5 commits into
latestfrom
claude/workflows-to-default
Aug 19, 2026
Merged

⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1)#12
Kevinlee7250 merged 5 commits into
latestfrom
claude/workflows-to-default

Conversation

@Kevinlee7250

@Kevinlee7250Kevinlee7250 commented Aug 10, 2026

Copy link
Copy Markdown
Owner

왜 필요한가

GitHub은 schedule·workflow_dispatch 트리거를 기본 브랜치(latest)에 있는 워크플로 파일에서만 인식합니다. 기능 브랜치에만 있으면 자동 스케줄이 돌지 않고 Actions 목록에도 뜨지 않습니다. (PR #8과 같은 이유의 조치입니다.)

변경 내용

신규 워크플로 2개

파일역할스케줄
pending-cleanup.yml검토 대기 글 정리·재검증·만료매주 목요일 06:00 KST
alert-watchdog.yml전체 워크플로 실패 + 시스템 이상 감시 → 텔레그램 알림6시간마다

기존 워크플로 수정 2개

blog-analytics.yml

  • git addgit add -f. docs/.gitignore(npm/cli 템플릿)가 docs/*를 무시해서 아직 추적되지 않은 analytics_summary.json매주 조용히 커밋에서 누락되고 있었습니다. 2026-08-17 분석 커밋에도 posts.json과 로그만 들어 있습니다.
  • 분석 직전에 실제 AdSense 수익 수집 단계 추가 (continue-on-error — AdSense 미승인 상태에서는 건너뜁니다).

gsc-indexing.yml

  • 사이트맵 제출 전 gsc_diagnose.py 실행 — 토큰 권한·GSC 속성·사이트맵 등록 상태를 읽기 전용으로 확인합니다.
  • index_priority.py 실행 — 색인 요청 우선순위 큐를 생성합니다(대시보드 색인 패널이 이 파일을 읽습니다).

보안 삭제 1개

get-oauth-token.yml 삭제. 이 저장소는 npm/cli의 공개 포크인데, 이 워크플로는 Actions 안에서 인증 코드를 refresh_token으로 교환하고 그 값을 아티팩트로 업로드했습니다. 공개 저장소의 아티팩트는 누구나 내려받을 수 있고, 워크플로 자체 주석도 *"refresh_token은 로그에 마스킹되지 않는다"*고 밝히고 있었습니다.

기능 브랜치에서만 지우면 기본 브랜치에 남은 정의로 workflow_dispatch 실행이 계속 가능하므로 여기서도 제거합니다. 기능 손실은 없습니다 — 로컬 전용 blog-automation/setup_google_auth.py가 같은 일을 안전하게 하며, 발급 직후 권한까지 검증합니다.

안전성

  • 실행 본체는 모두 ref: claude/blog-automation-system-KAbtE를 체크아웃하므로, 기본 브랜치에는 트리거 정의만 올라갑니다.
  • latest 대비 순수 추가분이며, 3차 세션이 latest에 올린 blog-run.yml(발행량 감축)·fix-unlicensed-images.yml건드리지 않습니다. 되돌아가는 변경이 없음을 파일 단위로 확인했습니다.
  • alert-watchdog는 알림 실패가 워크플로를 실패로 만들지 않도록 항상 종료코드 0으로 끝납니다.
  • pending-cleanup은 수동 실행 시 기본이 리포트 전용이며 --apply가 있어야 파일을 바꿉니다.

필요한 시크릿

TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID — 없으면 알림은 건너뛰고 리포트만 저장됩니다. 그 외 새로 추가되는 시크릿은 없습니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69

GitHub은 schedule·workflow_dispatch 트리거를 기본 브랜치의 워크플로
파일에서만 인식합니다. 두 파일이 기능 브랜치에만 있어 자동 스케줄이
돌지 않고 대시보드 버튼도 404가 납니다.
- pending-cleanup.yml: 검토 대기 글 정리·재검증 (주 1회)
- alert-watchdog.yml: 운영 알림 워치독 (6시간마다)
실행 자체는 기존과 동일하게 claude/blog-automation-system-KAbtE를
체크아웃해 수행하므로, 기본 브랜치에는 트리거 정의만 올라갑니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
스케줄 실행은 기본 브랜치의 워크플로 정의를 쓰는데, 여기 있는 사본은
`git add`에 `-f`가 빠져 있습니다. docs/.gitignore(npm/cli 템플릿)가 docs/*를
무시하므로 아직 추적되지 않은 analytics_summary.json은 매주 조용히
커밋에서 빠졌고, 대시보드 분석 화면에 쓸 요약 데이터가 저장소에 없습니다.
(2026-08-17 분석 커밋에도 posts.json과 로그만 들어 있음)
- git add -f 로 교체하고 adsense_revenue.json / adsense_rpm.json 추가
- 분석 직전 실제 AdSense 수익 수집 단계 추가 (권한 없으면 건너뜀)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
스케줄 실행은 기본 브랜치의 워크플로 정의를 쓰므로, 진단 단계가 여기에도
있어야 매일 실행됩니다.
- 사이트맵 제출 전에 gsc_diagnose.py 실행 (읽기 전용)
- gsc_diagnosis.json 커밋 대상 추가
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
기능 브랜치에서 지워도 기본 브랜치에 남아 있으면 workflow_dispatch로
계속 실행할 수 있습니다. 공개 저장소에서 refresh_token을 교환해
아티팩트로 올리는 경로이므로 여기서도 제거합니다.
토큰 발급은 로컬 get_refresh_token.py로만 수행합니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
이 브랜치에 동기화한 뒤 기능 브랜치에 index_priority.py 실행 단계가
추가돼, 기본 브랜치 사본에만 빠져 있었습니다. 스케줄 실행은 기본
브랜치 정의를 쓰므로 이대로면 색인 요청 패널이 갱신되지 않습니다.
- python index_priority.py 실행 추가
- docs/data/index_priority.json 커밋 대상 추가
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250Kevinlee7250 changed the title ⚙️ 신규 워크플로 2개를 기본 브랜치에 등록 (대기 글 정리 · 운영 알림 워치독)⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1)Aug 19, 2026
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 19, 2026 18:25
@Kevinlee7250
Kevinlee7250 merged commit 8ac5740 into latestAug 19, 2026
2 checks passed
Kevinlee7250 pushed a commit that referenced this pull request Aug 19, 2026
워크플로 5개가 기본 브랜치에 반영돼 pending-cleanup(주 1회),
alert-watchdog(6시간마다) 스케줄이 실제로 동작하기 시작합니다.
공개 저장소에서 토큰을 교환하던 get-oauth-token.yml도 제거됐습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
github-actionsBot added a commit that referenced this pull request Aug 20, 2026
github-actionsBot added a commit that referenced this pull request Aug 22, 2026
github-actionsBot added a commit that referenced this pull request Aug 22, 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

⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1) - #12

Merged
Kevinlee7250 merged 5 commits into
latestfrom
claude/workflows-to-default
Aug 19, 2026
Merged

⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1)#12
Kevinlee7250 merged 5 commits into
latestfrom
claude/workflows-to-default

Conversation

@Kevinlee7250

@Kevinlee7250Kevinlee7250 commented Aug 10, 2026

Copy link
Copy Markdown
Owner

왜 필요한가

GitHub은 schedule·workflow_dispatch 트리거를 기본 브랜치(latest)에 있는 워크플로 파일에서만 인식합니다. 기능 브랜치에만 있으면 자동 스케줄이 돌지 않고 Actions 목록에도 뜨지 않습니다. (PR #8과 같은 이유의 조치입니다.)

변경 내용

신규 워크플로 2개

파일역할스케줄
pending-cleanup.yml검토 대기 글 정리·재검증·만료매주 목요일 06:00 KST
alert-watchdog.yml전체 워크플로 실패 + 시스템 이상 감시 → 텔레그램 알림6시간마다

기존 워크플로 수정 2개

blog-analytics.yml

  • git addgit add -f. docs/.gitignore(npm/cli 템플릿)가 docs/*를 무시해서 아직 추적되지 않은 analytics_summary.json매주 조용히 커밋에서 누락되고 있었습니다. 2026-08-17 분석 커밋에도 posts.json과 로그만 들어 있습니다.
  • 분석 직전에 실제 AdSense 수익 수집 단계 추가 (continue-on-error — AdSense 미승인 상태에서는 건너뜁니다).

gsc-indexing.yml

  • 사이트맵 제출 전 gsc_diagnose.py 실행 — 토큰 권한·GSC 속성·사이트맵 등록 상태를 읽기 전용으로 확인합니다.
  • index_priority.py 실행 — 색인 요청 우선순위 큐를 생성합니다(대시보드 색인 패널이 이 파일을 읽습니다).

보안 삭제 1개

get-oauth-token.yml 삭제. 이 저장소는 npm/cli의 공개 포크인데, 이 워크플로는 Actions 안에서 인증 코드를 refresh_token으로 교환하고 그 값을 아티팩트로 업로드했습니다. 공개 저장소의 아티팩트는 누구나 내려받을 수 있고, 워크플로 자체 주석도 *"refresh_token은 로그에 마스킹되지 않는다"*고 밝히고 있었습니다.

기능 브랜치에서만 지우면 기본 브랜치에 남은 정의로 workflow_dispatch 실행이 계속 가능하므로 여기서도 제거합니다. 기능 손실은 없습니다 — 로컬 전용 blog-automation/setup_google_auth.py가 같은 일을 안전하게 하며, 발급 직후 권한까지 검증합니다.

안전성

  • 실행 본체는 모두 ref: claude/blog-automation-system-KAbtE를 체크아웃하므로, 기본 브랜치에는 트리거 정의만 올라갑니다.
  • latest 대비 순수 추가분이며, 3차 세션이 latest에 올린 blog-run.yml(발행량 감축)·fix-unlicensed-images.yml건드리지 않습니다. 되돌아가는 변경이 없음을 파일 단위로 확인했습니다.
  • alert-watchdog는 알림 실패가 워크플로를 실패로 만들지 않도록 항상 종료코드 0으로 끝납니다.
  • pending-cleanup은 수동 실행 시 기본이 리포트 전용이며 --apply가 있어야 파일을 바꿉니다.

필요한 시크릿

TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID — 없으면 알림은 건너뛰고 리포트만 저장됩니다. 그 외 새로 추가되는 시크릿은 없습니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69

GitHub은 schedule·workflow_dispatch 트리거를 기본 브랜치의 워크플로
파일에서만 인식합니다. 두 파일이 기능 브랜치에만 있어 자동 스케줄이
돌지 않고 대시보드 버튼도 404가 납니다.
- pending-cleanup.yml: 검토 대기 글 정리·재검증 (주 1회)
- alert-watchdog.yml: 운영 알림 워치독 (6시간마다)
실행 자체는 기존과 동일하게 claude/blog-automation-system-KAbtE를
체크아웃해 수행하므로, 기본 브랜치에는 트리거 정의만 올라갑니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
스케줄 실행은 기본 브랜치의 워크플로 정의를 쓰는데, 여기 있는 사본은
`git add`에 `-f`가 빠져 있습니다. docs/.gitignore(npm/cli 템플릿)가 docs/*를
무시하므로 아직 추적되지 않은 analytics_summary.json은 매주 조용히
커밋에서 빠졌고, 대시보드 분석 화면에 쓸 요약 데이터가 저장소에 없습니다.
(2026-08-17 분석 커밋에도 posts.json과 로그만 들어 있음)
- git add -f 로 교체하고 adsense_revenue.json / adsense_rpm.json 추가
- 분석 직전 실제 AdSense 수익 수집 단계 추가 (권한 없으면 건너뜀)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
스케줄 실행은 기본 브랜치의 워크플로 정의를 쓰므로, 진단 단계가 여기에도
있어야 매일 실행됩니다.
- 사이트맵 제출 전에 gsc_diagnose.py 실행 (읽기 전용)
- gsc_diagnosis.json 커밋 대상 추가
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
기능 브랜치에서 지워도 기본 브랜치에 남아 있으면 workflow_dispatch로
계속 실행할 수 있습니다. 공개 저장소에서 refresh_token을 교환해
아티팩트로 올리는 경로이므로 여기서도 제거합니다.
토큰 발급은 로컬 get_refresh_token.py로만 수행합니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
이 브랜치에 동기화한 뒤 기능 브랜치에 index_priority.py 실행 단계가
추가돼, 기본 브랜치 사본에만 빠져 있었습니다. 스케줄 실행은 기본
브랜치 정의를 쓰므로 이대로면 색인 요청 패널이 갱신되지 않습니다.
- python index_priority.py 실행 추가
- docs/data/index_priority.json 커밋 대상 추가
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250Kevinlee7250 changed the title ⚙️ 신규 워크플로 2개를 기본 브랜치에 등록 (대기 글 정리 · 운영 알림 워치독)⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1)Aug 19, 2026
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 19, 2026 18:25
@Kevinlee7250
Kevinlee7250 merged commit 8ac5740 into latestAug 19, 2026
2 checks passed
Kevinlee7250 pushed a commit that referenced this pull request Aug 19, 2026
워크플로 5개가 기본 브랜치에 반영돼 pending-cleanup(주 1회),
alert-watchdog(6시간마다) 스케줄이 실제로 동작하기 시작합니다.
공개 저장소에서 토큰을 교환하던 get-oauth-token.yml도 제거됐습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
github-actionsBot added a commit that referenced this pull request Aug 20, 2026
github-actionsBot added a commit that referenced this pull request Aug 22, 2026
github-actionsBot added a commit that referenced this pull request Aug 22, 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

⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1) - #12

Merged
Kevinlee7250 merged 5 commits into
latestfrom
claude/workflows-to-default
Aug 19, 2026
Merged

⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1)#12
Kevinlee7250 merged 5 commits into
latestfrom
claude/workflows-to-default

Conversation

@Kevinlee7250

@Kevinlee7250Kevinlee7250 commented Aug 10, 2026

Copy link
Copy Markdown
Owner

왜 필요한가

GitHub은 schedule·workflow_dispatch 트리거를 기본 브랜치(latest)에 있는 워크플로 파일에서만 인식합니다. 기능 브랜치에만 있으면 자동 스케줄이 돌지 않고 Actions 목록에도 뜨지 않습니다. (PR #8과 같은 이유의 조치입니다.)

변경 내용

신규 워크플로 2개

파일역할스케줄
pending-cleanup.yml검토 대기 글 정리·재검증·만료매주 목요일 06:00 KST
alert-watchdog.yml전체 워크플로 실패 + 시스템 이상 감시 → 텔레그램 알림6시간마다

기존 워크플로 수정 2개

blog-analytics.yml

  • git addgit add -f. docs/.gitignore(npm/cli 템플릿)가 docs/*를 무시해서 아직 추적되지 않은 analytics_summary.json매주 조용히 커밋에서 누락되고 있었습니다. 2026-08-17 분석 커밋에도 posts.json과 로그만 들어 있습니다.
  • 분석 직전에 실제 AdSense 수익 수집 단계 추가 (continue-on-error — AdSense 미승인 상태에서는 건너뜁니다).

gsc-indexing.yml

  • 사이트맵 제출 전 gsc_diagnose.py 실행 — 토큰 권한·GSC 속성·사이트맵 등록 상태를 읽기 전용으로 확인합니다.
  • index_priority.py 실행 — 색인 요청 우선순위 큐를 생성합니다(대시보드 색인 패널이 이 파일을 읽습니다).

보안 삭제 1개

get-oauth-token.yml 삭제. 이 저장소는 npm/cli의 공개 포크인데, 이 워크플로는 Actions 안에서 인증 코드를 refresh_token으로 교환하고 그 값을 아티팩트로 업로드했습니다. 공개 저장소의 아티팩트는 누구나 내려받을 수 있고, 워크플로 자체 주석도 *"refresh_token은 로그에 마스킹되지 않는다"*고 밝히고 있었습니다.

기능 브랜치에서만 지우면 기본 브랜치에 남은 정의로 workflow_dispatch 실행이 계속 가능하므로 여기서도 제거합니다. 기능 손실은 없습니다 — 로컬 전용 blog-automation/setup_google_auth.py가 같은 일을 안전하게 하며, 발급 직후 권한까지 검증합니다.

안전성

  • 실행 본체는 모두 ref: claude/blog-automation-system-KAbtE를 체크아웃하므로, 기본 브랜치에는 트리거 정의만 올라갑니다.
  • latest 대비 순수 추가분이며, 3차 세션이 latest에 올린 blog-run.yml(발행량 감축)·fix-unlicensed-images.yml건드리지 않습니다. 되돌아가는 변경이 없음을 파일 단위로 확인했습니다.
  • alert-watchdog는 알림 실패가 워크플로를 실패로 만들지 않도록 항상 종료코드 0으로 끝납니다.
  • pending-cleanup은 수동 실행 시 기본이 리포트 전용이며 --apply가 있어야 파일을 바꿉니다.

필요한 시크릿

TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID — 없으면 알림은 건너뛰고 리포트만 저장됩니다. 그 외 새로 추가되는 시크릿은 없습니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69

GitHub은 schedule·workflow_dispatch 트리거를 기본 브랜치의 워크플로
파일에서만 인식합니다. 두 파일이 기능 브랜치에만 있어 자동 스케줄이
돌지 않고 대시보드 버튼도 404가 납니다.
- pending-cleanup.yml: 검토 대기 글 정리·재검증 (주 1회)
- alert-watchdog.yml: 운영 알림 워치독 (6시간마다)
실행 자체는 기존과 동일하게 claude/blog-automation-system-KAbtE를
체크아웃해 수행하므로, 기본 브랜치에는 트리거 정의만 올라갑니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
스케줄 실행은 기본 브랜치의 워크플로 정의를 쓰는데, 여기 있는 사본은
`git add`에 `-f`가 빠져 있습니다. docs/.gitignore(npm/cli 템플릿)가 docs/*를
무시하므로 아직 추적되지 않은 analytics_summary.json은 매주 조용히
커밋에서 빠졌고, 대시보드 분석 화면에 쓸 요약 데이터가 저장소에 없습니다.
(2026-08-17 분석 커밋에도 posts.json과 로그만 들어 있음)
- git add -f 로 교체하고 adsense_revenue.json / adsense_rpm.json 추가
- 분석 직전 실제 AdSense 수익 수집 단계 추가 (권한 없으면 건너뜀)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
스케줄 실행은 기본 브랜치의 워크플로 정의를 쓰므로, 진단 단계가 여기에도
있어야 매일 실행됩니다.
- 사이트맵 제출 전에 gsc_diagnose.py 실행 (읽기 전용)
- gsc_diagnosis.json 커밋 대상 추가
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
기능 브랜치에서 지워도 기본 브랜치에 남아 있으면 workflow_dispatch로
계속 실행할 수 있습니다. 공개 저장소에서 refresh_token을 교환해
아티팩트로 올리는 경로이므로 여기서도 제거합니다.
토큰 발급은 로컬 get_refresh_token.py로만 수행합니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
이 브랜치에 동기화한 뒤 기능 브랜치에 index_priority.py 실행 단계가
추가돼, 기본 브랜치 사본에만 빠져 있었습니다. 스케줄 실행은 기본
브랜치 정의를 쓰므로 이대로면 색인 요청 패널이 갱신되지 않습니다.
- python index_priority.py 실행 추가
- docs/data/index_priority.json 커밋 대상 추가
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250Kevinlee7250 changed the title ⚙️ 신규 워크플로 2개를 기본 브랜치에 등록 (대기 글 정리 · 운영 알림 워치독)⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1)Aug 19, 2026
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 19, 2026 18:25
@Kevinlee7250
Kevinlee7250 merged commit 8ac5740 into latestAug 19, 2026
2 checks passed
Kevinlee7250 pushed a commit that referenced this pull request Aug 19, 2026
워크플로 5개가 기본 브랜치에 반영돼 pending-cleanup(주 1회),
alert-watchdog(6시간마다) 스케줄이 실제로 동작하기 시작합니다.
공개 저장소에서 토큰을 교환하던 get-oauth-token.yml도 제거됐습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
github-actionsBot added a commit that referenced this pull request Aug 20, 2026
github-actionsBot added a commit that referenced this pull request Aug 22, 2026
github-actionsBot added a commit that referenced this pull request Aug 22, 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

⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1) - #12

Merged
Kevinlee7250 merged 5 commits into
latestfrom
claude/workflows-to-default
Aug 19, 2026
Merged

⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1)#12
Kevinlee7250 merged 5 commits into
latestfrom
claude/workflows-to-default

Conversation

@Kevinlee7250

@Kevinlee7250Kevinlee7250 commented Aug 10, 2026

Copy link
Copy Markdown
Owner

왜 필요한가

GitHub은 schedule·workflow_dispatch 트리거를 기본 브랜치(latest)에 있는 워크플로 파일에서만 인식합니다. 기능 브랜치에만 있으면 자동 스케줄이 돌지 않고 Actions 목록에도 뜨지 않습니다. (PR #8과 같은 이유의 조치입니다.)

변경 내용

신규 워크플로 2개

파일역할스케줄
pending-cleanup.yml검토 대기 글 정리·재검증·만료매주 목요일 06:00 KST
alert-watchdog.yml전체 워크플로 실패 + 시스템 이상 감시 → 텔레그램 알림6시간마다

기존 워크플로 수정 2개

blog-analytics.yml

  • git addgit add -f. docs/.gitignore(npm/cli 템플릿)가 docs/*를 무시해서 아직 추적되지 않은 analytics_summary.json매주 조용히 커밋에서 누락되고 있었습니다. 2026-08-17 분석 커밋에도 posts.json과 로그만 들어 있습니다.
  • 분석 직전에 실제 AdSense 수익 수집 단계 추가 (continue-on-error — AdSense 미승인 상태에서는 건너뜁니다).

gsc-indexing.yml

  • 사이트맵 제출 전 gsc_diagnose.py 실행 — 토큰 권한·GSC 속성·사이트맵 등록 상태를 읽기 전용으로 확인합니다.
  • index_priority.py 실행 — 색인 요청 우선순위 큐를 생성합니다(대시보드 색인 패널이 이 파일을 읽습니다).

보안 삭제 1개

get-oauth-token.yml 삭제. 이 저장소는 npm/cli의 공개 포크인데, 이 워크플로는 Actions 안에서 인증 코드를 refresh_token으로 교환하고 그 값을 아티팩트로 업로드했습니다. 공개 저장소의 아티팩트는 누구나 내려받을 수 있고, 워크플로 자체 주석도 *"refresh_token은 로그에 마스킹되지 않는다"*고 밝히고 있었습니다.

기능 브랜치에서만 지우면 기본 브랜치에 남은 정의로 workflow_dispatch 실행이 계속 가능하므로 여기서도 제거합니다. 기능 손실은 없습니다 — 로컬 전용 blog-automation/setup_google_auth.py가 같은 일을 안전하게 하며, 발급 직후 권한까지 검증합니다.

안전성

  • 실행 본체는 모두 ref: claude/blog-automation-system-KAbtE를 체크아웃하므로, 기본 브랜치에는 트리거 정의만 올라갑니다.
  • latest 대비 순수 추가분이며, 3차 세션이 latest에 올린 blog-run.yml(발행량 감축)·fix-unlicensed-images.yml건드리지 않습니다. 되돌아가는 변경이 없음을 파일 단위로 확인했습니다.
  • alert-watchdog는 알림 실패가 워크플로를 실패로 만들지 않도록 항상 종료코드 0으로 끝납니다.
  • pending-cleanup은 수동 실행 시 기본이 리포트 전용이며 --apply가 있어야 파일을 바꿉니다.

필요한 시크릿

TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID — 없으면 알림은 건너뛰고 리포트만 저장됩니다. 그 외 새로 추가되는 시크릿은 없습니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69

GitHub은 schedule·workflow_dispatch 트리거를 기본 브랜치의 워크플로
파일에서만 인식합니다. 두 파일이 기능 브랜치에만 있어 자동 스케줄이
돌지 않고 대시보드 버튼도 404가 납니다.
- pending-cleanup.yml: 검토 대기 글 정리·재검증 (주 1회)
- alert-watchdog.yml: 운영 알림 워치독 (6시간마다)
실행 자체는 기존과 동일하게 claude/blog-automation-system-KAbtE를
체크아웃해 수행하므로, 기본 브랜치에는 트리거 정의만 올라갑니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
스케줄 실행은 기본 브랜치의 워크플로 정의를 쓰는데, 여기 있는 사본은
`git add`에 `-f`가 빠져 있습니다. docs/.gitignore(npm/cli 템플릿)가 docs/*를
무시하므로 아직 추적되지 않은 analytics_summary.json은 매주 조용히
커밋에서 빠졌고, 대시보드 분석 화면에 쓸 요약 데이터가 저장소에 없습니다.
(2026-08-17 분석 커밋에도 posts.json과 로그만 들어 있음)
- git add -f 로 교체하고 adsense_revenue.json / adsense_rpm.json 추가
- 분석 직전 실제 AdSense 수익 수집 단계 추가 (권한 없으면 건너뜀)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
스케줄 실행은 기본 브랜치의 워크플로 정의를 쓰므로, 진단 단계가 여기에도
있어야 매일 실행됩니다.
- 사이트맵 제출 전에 gsc_diagnose.py 실행 (읽기 전용)
- gsc_diagnosis.json 커밋 대상 추가
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
기능 브랜치에서 지워도 기본 브랜치에 남아 있으면 workflow_dispatch로
계속 실행할 수 있습니다. 공개 저장소에서 refresh_token을 교환해
아티팩트로 올리는 경로이므로 여기서도 제거합니다.
토큰 발급은 로컬 get_refresh_token.py로만 수행합니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
이 브랜치에 동기화한 뒤 기능 브랜치에 index_priority.py 실행 단계가
추가돼, 기본 브랜치 사본에만 빠져 있었습니다. 스케줄 실행은 기본
브랜치 정의를 쓰므로 이대로면 색인 요청 패널이 갱신되지 않습니다.
- python index_priority.py 실행 추가
- docs/data/index_priority.json 커밋 대상 추가
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250Kevinlee7250 changed the title ⚙️ 신규 워크플로 2개를 기본 브랜치에 등록 (대기 글 정리 · 운영 알림 워치독)⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1)Aug 19, 2026
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 19, 2026 18:25
@Kevinlee7250
Kevinlee7250 merged commit 8ac5740 into latestAug 19, 2026
2 checks passed
Kevinlee7250 pushed a commit that referenced this pull request Aug 19, 2026
워크플로 5개가 기본 브랜치에 반영돼 pending-cleanup(주 1회),
alert-watchdog(6시간마다) 스케줄이 실제로 동작하기 시작합니다.
공개 저장소에서 토큰을 교환하던 get-oauth-token.yml도 제거됐습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
github-actionsBot added a commit that referenced this pull request Aug 20, 2026
github-actionsBot added a commit that referenced this pull request Aug 22, 2026
github-actionsBot added a commit that referenced this pull request Aug 22, 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

⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1) - #12

Merged
Kevinlee7250 merged 5 commits into
latestfrom
claude/workflows-to-default
Aug 19, 2026
Merged

⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1)#12
Kevinlee7250 merged 5 commits into
latestfrom
claude/workflows-to-default

Conversation

@Kevinlee7250

@Kevinlee7250Kevinlee7250 commented Aug 10, 2026

Copy link
Copy Markdown
Owner

왜 필요한가

GitHub은 schedule·workflow_dispatch 트리거를 기본 브랜치(latest)에 있는 워크플로 파일에서만 인식합니다. 기능 브랜치에만 있으면 자동 스케줄이 돌지 않고 Actions 목록에도 뜨지 않습니다. (PR #8과 같은 이유의 조치입니다.)

변경 내용

신규 워크플로 2개

파일역할스케줄
pending-cleanup.yml검토 대기 글 정리·재검증·만료매주 목요일 06:00 KST
alert-watchdog.yml전체 워크플로 실패 + 시스템 이상 감시 → 텔레그램 알림6시간마다

기존 워크플로 수정 2개

blog-analytics.yml

  • git addgit add -f. docs/.gitignore(npm/cli 템플릿)가 docs/*를 무시해서 아직 추적되지 않은 analytics_summary.json매주 조용히 커밋에서 누락되고 있었습니다. 2026-08-17 분석 커밋에도 posts.json과 로그만 들어 있습니다.
  • 분석 직전에 실제 AdSense 수익 수집 단계 추가 (continue-on-error — AdSense 미승인 상태에서는 건너뜁니다).

gsc-indexing.yml

  • 사이트맵 제출 전 gsc_diagnose.py 실행 — 토큰 권한·GSC 속성·사이트맵 등록 상태를 읽기 전용으로 확인합니다.
  • index_priority.py 실행 — 색인 요청 우선순위 큐를 생성합니다(대시보드 색인 패널이 이 파일을 읽습니다).

보안 삭제 1개

get-oauth-token.yml 삭제. 이 저장소는 npm/cli의 공개 포크인데, 이 워크플로는 Actions 안에서 인증 코드를 refresh_token으로 교환하고 그 값을 아티팩트로 업로드했습니다. 공개 저장소의 아티팩트는 누구나 내려받을 수 있고, 워크플로 자체 주석도 *"refresh_token은 로그에 마스킹되지 않는다"*고 밝히고 있었습니다.

기능 브랜치에서만 지우면 기본 브랜치에 남은 정의로 workflow_dispatch 실행이 계속 가능하므로 여기서도 제거합니다. 기능 손실은 없습니다 — 로컬 전용 blog-automation/setup_google_auth.py가 같은 일을 안전하게 하며, 발급 직후 권한까지 검증합니다.

안전성

  • 실행 본체는 모두 ref: claude/blog-automation-system-KAbtE를 체크아웃하므로, 기본 브랜치에는 트리거 정의만 올라갑니다.
  • latest 대비 순수 추가분이며, 3차 세션이 latest에 올린 blog-run.yml(발행량 감축)·fix-unlicensed-images.yml건드리지 않습니다. 되돌아가는 변경이 없음을 파일 단위로 확인했습니다.
  • alert-watchdog는 알림 실패가 워크플로를 실패로 만들지 않도록 항상 종료코드 0으로 끝납니다.
  • pending-cleanup은 수동 실행 시 기본이 리포트 전용이며 --apply가 있어야 파일을 바꿉니다.

필요한 시크릿

TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID — 없으면 알림은 건너뛰고 리포트만 저장됩니다. 그 외 새로 추가되는 시크릿은 없습니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69

GitHub은 schedule·workflow_dispatch 트리거를 기본 브랜치의 워크플로
파일에서만 인식합니다. 두 파일이 기능 브랜치에만 있어 자동 스케줄이
돌지 않고 대시보드 버튼도 404가 납니다.
- pending-cleanup.yml: 검토 대기 글 정리·재검증 (주 1회)
- alert-watchdog.yml: 운영 알림 워치독 (6시간마다)
실행 자체는 기존과 동일하게 claude/blog-automation-system-KAbtE를
체크아웃해 수행하므로, 기본 브랜치에는 트리거 정의만 올라갑니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
스케줄 실행은 기본 브랜치의 워크플로 정의를 쓰는데, 여기 있는 사본은
`git add`에 `-f`가 빠져 있습니다. docs/.gitignore(npm/cli 템플릿)가 docs/*를
무시하므로 아직 추적되지 않은 analytics_summary.json은 매주 조용히
커밋에서 빠졌고, 대시보드 분석 화면에 쓸 요약 데이터가 저장소에 없습니다.
(2026-08-17 분석 커밋에도 posts.json과 로그만 들어 있음)
- git add -f 로 교체하고 adsense_revenue.json / adsense_rpm.json 추가
- 분석 직전 실제 AdSense 수익 수집 단계 추가 (권한 없으면 건너뜀)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
스케줄 실행은 기본 브랜치의 워크플로 정의를 쓰므로, 진단 단계가 여기에도
있어야 매일 실행됩니다.
- 사이트맵 제출 전에 gsc_diagnose.py 실행 (읽기 전용)
- gsc_diagnosis.json 커밋 대상 추가
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
기능 브랜치에서 지워도 기본 브랜치에 남아 있으면 workflow_dispatch로
계속 실행할 수 있습니다. 공개 저장소에서 refresh_token을 교환해
아티팩트로 올리는 경로이므로 여기서도 제거합니다.
토큰 발급은 로컬 get_refresh_token.py로만 수행합니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
이 브랜치에 동기화한 뒤 기능 브랜치에 index_priority.py 실행 단계가
추가돼, 기본 브랜치 사본에만 빠져 있었습니다. 스케줄 실행은 기본
브랜치 정의를 쓰므로 이대로면 색인 요청 패널이 갱신되지 않습니다.
- python index_priority.py 실행 추가
- docs/data/index_priority.json 커밋 대상 추가
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250Kevinlee7250 changed the title ⚙️ 신규 워크플로 2개를 기본 브랜치에 등록 (대기 글 정리 · 운영 알림 워치독)⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1)Aug 19, 2026
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 19, 2026 18:25
@Kevinlee7250
Kevinlee7250 merged commit 8ac5740 into latestAug 19, 2026
2 checks passed
Kevinlee7250 pushed a commit that referenced this pull request Aug 19, 2026
워크플로 5개가 기본 브랜치에 반영돼 pending-cleanup(주 1회),
alert-watchdog(6시간마다) 스케줄이 실제로 동작하기 시작합니다.
공개 저장소에서 토큰을 교환하던 get-oauth-token.yml도 제거됐습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
github-actionsBot added a commit that referenced this pull request Aug 20, 2026
github-actionsBot added a commit that referenced this pull request Aug 22, 2026
github-actionsBot added a commit that referenced this pull request Aug 22, 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

⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1) - #12

Merged
Kevinlee7250 merged 5 commits into
latestfrom
claude/workflows-to-default
Aug 19, 2026
Merged

⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1)#12
Kevinlee7250 merged 5 commits into
latestfrom
claude/workflows-to-default

Conversation

@Kevinlee7250

@Kevinlee7250Kevinlee7250 commented Aug 10, 2026

Copy link
Copy Markdown
Owner

왜 필요한가

GitHub은 schedule·workflow_dispatch 트리거를 기본 브랜치(latest)에 있는 워크플로 파일에서만 인식합니다. 기능 브랜치에만 있으면 자동 스케줄이 돌지 않고 Actions 목록에도 뜨지 않습니다. (PR #8과 같은 이유의 조치입니다.)

변경 내용

신규 워크플로 2개

파일역할스케줄
pending-cleanup.yml검토 대기 글 정리·재검증·만료매주 목요일 06:00 KST
alert-watchdog.yml전체 워크플로 실패 + 시스템 이상 감시 → 텔레그램 알림6시간마다

기존 워크플로 수정 2개

blog-analytics.yml

  • git addgit add -f. docs/.gitignore(npm/cli 템플릿)가 docs/*를 무시해서 아직 추적되지 않은 analytics_summary.json매주 조용히 커밋에서 누락되고 있었습니다. 2026-08-17 분석 커밋에도 posts.json과 로그만 들어 있습니다.
  • 분석 직전에 실제 AdSense 수익 수집 단계 추가 (continue-on-error — AdSense 미승인 상태에서는 건너뜁니다).

gsc-indexing.yml

  • 사이트맵 제출 전 gsc_diagnose.py 실행 — 토큰 권한·GSC 속성·사이트맵 등록 상태를 읽기 전용으로 확인합니다.
  • index_priority.py 실행 — 색인 요청 우선순위 큐를 생성합니다(대시보드 색인 패널이 이 파일을 읽습니다).

보안 삭제 1개

get-oauth-token.yml 삭제. 이 저장소는 npm/cli의 공개 포크인데, 이 워크플로는 Actions 안에서 인증 코드를 refresh_token으로 교환하고 그 값을 아티팩트로 업로드했습니다. 공개 저장소의 아티팩트는 누구나 내려받을 수 있고, 워크플로 자체 주석도 *"refresh_token은 로그에 마스킹되지 않는다"*고 밝히고 있었습니다.

기능 브랜치에서만 지우면 기본 브랜치에 남은 정의로 workflow_dispatch 실행이 계속 가능하므로 여기서도 제거합니다. 기능 손실은 없습니다 — 로컬 전용 blog-automation/setup_google_auth.py가 같은 일을 안전하게 하며, 발급 직후 권한까지 검증합니다.

안전성

  • 실행 본체는 모두 ref: claude/blog-automation-system-KAbtE를 체크아웃하므로, 기본 브랜치에는 트리거 정의만 올라갑니다.
  • latest 대비 순수 추가분이며, 3차 세션이 latest에 올린 blog-run.yml(발행량 감축)·fix-unlicensed-images.yml건드리지 않습니다. 되돌아가는 변경이 없음을 파일 단위로 확인했습니다.
  • alert-watchdog는 알림 실패가 워크플로를 실패로 만들지 않도록 항상 종료코드 0으로 끝납니다.
  • pending-cleanup은 수동 실행 시 기본이 리포트 전용이며 --apply가 있어야 파일을 바꿉니다.

필요한 시크릿

TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID — 없으면 알림은 건너뛰고 리포트만 저장됩니다. 그 외 새로 추가되는 시크릿은 없습니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69

GitHub은 schedule·workflow_dispatch 트리거를 기본 브랜치의 워크플로
파일에서만 인식합니다. 두 파일이 기능 브랜치에만 있어 자동 스케줄이
돌지 않고 대시보드 버튼도 404가 납니다.
- pending-cleanup.yml: 검토 대기 글 정리·재검증 (주 1회)
- alert-watchdog.yml: 운영 알림 워치독 (6시간마다)
실행 자체는 기존과 동일하게 claude/blog-automation-system-KAbtE를
체크아웃해 수행하므로, 기본 브랜치에는 트리거 정의만 올라갑니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
스케줄 실행은 기본 브랜치의 워크플로 정의를 쓰는데, 여기 있는 사본은
`git add`에 `-f`가 빠져 있습니다. docs/.gitignore(npm/cli 템플릿)가 docs/*를
무시하므로 아직 추적되지 않은 analytics_summary.json은 매주 조용히
커밋에서 빠졌고, 대시보드 분석 화면에 쓸 요약 데이터가 저장소에 없습니다.
(2026-08-17 분석 커밋에도 posts.json과 로그만 들어 있음)
- git add -f 로 교체하고 adsense_revenue.json / adsense_rpm.json 추가
- 분석 직전 실제 AdSense 수익 수집 단계 추가 (권한 없으면 건너뜀)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
스케줄 실행은 기본 브랜치의 워크플로 정의를 쓰므로, 진단 단계가 여기에도
있어야 매일 실행됩니다.
- 사이트맵 제출 전에 gsc_diagnose.py 실행 (읽기 전용)
- gsc_diagnosis.json 커밋 대상 추가
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
기능 브랜치에서 지워도 기본 브랜치에 남아 있으면 workflow_dispatch로
계속 실행할 수 있습니다. 공개 저장소에서 refresh_token을 교환해
아티팩트로 올리는 경로이므로 여기서도 제거합니다.
토큰 발급은 로컬 get_refresh_token.py로만 수행합니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
이 브랜치에 동기화한 뒤 기능 브랜치에 index_priority.py 실행 단계가
추가돼, 기본 브랜치 사본에만 빠져 있었습니다. 스케줄 실행은 기본
브랜치 정의를 쓰므로 이대로면 색인 요청 패널이 갱신되지 않습니다.
- python index_priority.py 실행 추가
- docs/data/index_priority.json 커밋 대상 추가
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250Kevinlee7250 changed the title ⚙️ 신규 워크플로 2개를 기본 브랜치에 등록 (대기 글 정리 · 운영 알림 워치독)⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1)Aug 19, 2026
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 19, 2026 18:25
@Kevinlee7250
Kevinlee7250 merged commit 8ac5740 into latestAug 19, 2026
2 checks passed
Kevinlee7250 pushed a commit that referenced this pull request Aug 19, 2026
워크플로 5개가 기본 브랜치에 반영돼 pending-cleanup(주 1회),
alert-watchdog(6시간마다) 스케줄이 실제로 동작하기 시작합니다.
공개 저장소에서 토큰을 교환하던 get-oauth-token.yml도 제거됐습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
github-actionsBot added a commit that referenced this pull request Aug 20, 2026
github-actionsBot added a commit that referenced this pull request Aug 22, 2026
github-actionsBot added a commit that referenced this pull request Aug 22, 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

⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1) - #12

Merged
Kevinlee7250 merged 5 commits into
latestfrom
claude/workflows-to-default
Aug 19, 2026
Merged

⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1)#12
Kevinlee7250 merged 5 commits into
latestfrom
claude/workflows-to-default

Conversation

@Kevinlee7250

@Kevinlee7250Kevinlee7250 commented Aug 10, 2026

Copy link
Copy Markdown
Owner

왜 필요한가

GitHub은 schedule·workflow_dispatch 트리거를 기본 브랜치(latest)에 있는 워크플로 파일에서만 인식합니다. 기능 브랜치에만 있으면 자동 스케줄이 돌지 않고 Actions 목록에도 뜨지 않습니다. (PR #8과 같은 이유의 조치입니다.)

변경 내용

신규 워크플로 2개

파일역할스케줄
pending-cleanup.yml검토 대기 글 정리·재검증·만료매주 목요일 06:00 KST
alert-watchdog.yml전체 워크플로 실패 + 시스템 이상 감시 → 텔레그램 알림6시간마다

기존 워크플로 수정 2개

blog-analytics.yml

  • git addgit add -f. docs/.gitignore(npm/cli 템플릿)가 docs/*를 무시해서 아직 추적되지 않은 analytics_summary.json매주 조용히 커밋에서 누락되고 있었습니다. 2026-08-17 분석 커밋에도 posts.json과 로그만 들어 있습니다.
  • 분석 직전에 실제 AdSense 수익 수집 단계 추가 (continue-on-error — AdSense 미승인 상태에서는 건너뜁니다).

gsc-indexing.yml

  • 사이트맵 제출 전 gsc_diagnose.py 실행 — 토큰 권한·GSC 속성·사이트맵 등록 상태를 읽기 전용으로 확인합니다.
  • index_priority.py 실행 — 색인 요청 우선순위 큐를 생성합니다(대시보드 색인 패널이 이 파일을 읽습니다).

보안 삭제 1개

get-oauth-token.yml 삭제. 이 저장소는 npm/cli의 공개 포크인데, 이 워크플로는 Actions 안에서 인증 코드를 refresh_token으로 교환하고 그 값을 아티팩트로 업로드했습니다. 공개 저장소의 아티팩트는 누구나 내려받을 수 있고, 워크플로 자체 주석도 *"refresh_token은 로그에 마스킹되지 않는다"*고 밝히고 있었습니다.

기능 브랜치에서만 지우면 기본 브랜치에 남은 정의로 workflow_dispatch 실행이 계속 가능하므로 여기서도 제거합니다. 기능 손실은 없습니다 — 로컬 전용 blog-automation/setup_google_auth.py가 같은 일을 안전하게 하며, 발급 직후 권한까지 검증합니다.

안전성

  • 실행 본체는 모두 ref: claude/blog-automation-system-KAbtE를 체크아웃하므로, 기본 브랜치에는 트리거 정의만 올라갑니다.
  • latest 대비 순수 추가분이며, 3차 세션이 latest에 올린 blog-run.yml(발행량 감축)·fix-unlicensed-images.yml건드리지 않습니다. 되돌아가는 변경이 없음을 파일 단위로 확인했습니다.
  • alert-watchdog는 알림 실패가 워크플로를 실패로 만들지 않도록 항상 종료코드 0으로 끝납니다.
  • pending-cleanup은 수동 실행 시 기본이 리포트 전용이며 --apply가 있어야 파일을 바꿉니다.

필요한 시크릿

TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID — 없으면 알림은 건너뛰고 리포트만 저장됩니다. 그 외 새로 추가되는 시크릿은 없습니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69

GitHub은 schedule·workflow_dispatch 트리거를 기본 브랜치의 워크플로
파일에서만 인식합니다. 두 파일이 기능 브랜치에만 있어 자동 스케줄이
돌지 않고 대시보드 버튼도 404가 납니다.
- pending-cleanup.yml: 검토 대기 글 정리·재검증 (주 1회)
- alert-watchdog.yml: 운영 알림 워치독 (6시간마다)
실행 자체는 기존과 동일하게 claude/blog-automation-system-KAbtE를
체크아웃해 수행하므로, 기본 브랜치에는 트리거 정의만 올라갑니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
스케줄 실행은 기본 브랜치의 워크플로 정의를 쓰는데, 여기 있는 사본은
`git add`에 `-f`가 빠져 있습니다. docs/.gitignore(npm/cli 템플릿)가 docs/*를
무시하므로 아직 추적되지 않은 analytics_summary.json은 매주 조용히
커밋에서 빠졌고, 대시보드 분석 화면에 쓸 요약 데이터가 저장소에 없습니다.
(2026-08-17 분석 커밋에도 posts.json과 로그만 들어 있음)
- git add -f 로 교체하고 adsense_revenue.json / adsense_rpm.json 추가
- 분석 직전 실제 AdSense 수익 수집 단계 추가 (권한 없으면 건너뜀)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
스케줄 실행은 기본 브랜치의 워크플로 정의를 쓰므로, 진단 단계가 여기에도
있어야 매일 실행됩니다.
- 사이트맵 제출 전에 gsc_diagnose.py 실행 (읽기 전용)
- gsc_diagnosis.json 커밋 대상 추가
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
기능 브랜치에서 지워도 기본 브랜치에 남아 있으면 workflow_dispatch로
계속 실행할 수 있습니다. 공개 저장소에서 refresh_token을 교환해
아티팩트로 올리는 경로이므로 여기서도 제거합니다.
토큰 발급은 로컬 get_refresh_token.py로만 수행합니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
이 브랜치에 동기화한 뒤 기능 브랜치에 index_priority.py 실행 단계가
추가돼, 기본 브랜치 사본에만 빠져 있었습니다. 스케줄 실행은 기본
브랜치 정의를 쓰므로 이대로면 색인 요청 패널이 갱신되지 않습니다.
- python index_priority.py 실행 추가
- docs/data/index_priority.json 커밋 대상 추가
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250Kevinlee7250 changed the title ⚙️ 신규 워크플로 2개를 기본 브랜치에 등록 (대기 글 정리 · 운영 알림 워치독)⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1)Aug 19, 2026
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 19, 2026 18:25
@Kevinlee7250
Kevinlee7250 merged commit 8ac5740 into latestAug 19, 2026
2 checks passed
Kevinlee7250 pushed a commit that referenced this pull request Aug 19, 2026
워크플로 5개가 기본 브랜치에 반영돼 pending-cleanup(주 1회),
alert-watchdog(6시간마다) 스케줄이 실제로 동작하기 시작합니다.
공개 저장소에서 토큰을 교환하던 get-oauth-token.yml도 제거됐습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
github-actionsBot added a commit that referenced this pull request Aug 20, 2026
github-actionsBot added a commit that referenced this pull request Aug 22, 2026
github-actionsBot added a commit that referenced this pull request Aug 22, 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

⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1) - #12

Merged
Kevinlee7250 merged 5 commits into
latestfrom
claude/workflows-to-default
Aug 19, 2026
Merged

⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1)#12
Kevinlee7250 merged 5 commits into
latestfrom
claude/workflows-to-default

Conversation

@Kevinlee7250

@Kevinlee7250Kevinlee7250 commented Aug 10, 2026

Copy link
Copy Markdown
Owner

왜 필요한가

GitHub은 schedule·workflow_dispatch 트리거를 기본 브랜치(latest)에 있는 워크플로 파일에서만 인식합니다. 기능 브랜치에만 있으면 자동 스케줄이 돌지 않고 Actions 목록에도 뜨지 않습니다. (PR #8과 같은 이유의 조치입니다.)

변경 내용

신규 워크플로 2개

파일역할스케줄
pending-cleanup.yml검토 대기 글 정리·재검증·만료매주 목요일 06:00 KST
alert-watchdog.yml전체 워크플로 실패 + 시스템 이상 감시 → 텔레그램 알림6시간마다

기존 워크플로 수정 2개

blog-analytics.yml

  • git addgit add -f. docs/.gitignore(npm/cli 템플릿)가 docs/*를 무시해서 아직 추적되지 않은 analytics_summary.json매주 조용히 커밋에서 누락되고 있었습니다. 2026-08-17 분석 커밋에도 posts.json과 로그만 들어 있습니다.
  • 분석 직전에 실제 AdSense 수익 수집 단계 추가 (continue-on-error — AdSense 미승인 상태에서는 건너뜁니다).

gsc-indexing.yml

  • 사이트맵 제출 전 gsc_diagnose.py 실행 — 토큰 권한·GSC 속성·사이트맵 등록 상태를 읽기 전용으로 확인합니다.
  • index_priority.py 실행 — 색인 요청 우선순위 큐를 생성합니다(대시보드 색인 패널이 이 파일을 읽습니다).

보안 삭제 1개

get-oauth-token.yml 삭제. 이 저장소는 npm/cli의 공개 포크인데, 이 워크플로는 Actions 안에서 인증 코드를 refresh_token으로 교환하고 그 값을 아티팩트로 업로드했습니다. 공개 저장소의 아티팩트는 누구나 내려받을 수 있고, 워크플로 자체 주석도 *"refresh_token은 로그에 마스킹되지 않는다"*고 밝히고 있었습니다.

기능 브랜치에서만 지우면 기본 브랜치에 남은 정의로 workflow_dispatch 실행이 계속 가능하므로 여기서도 제거합니다. 기능 손실은 없습니다 — 로컬 전용 blog-automation/setup_google_auth.py가 같은 일을 안전하게 하며, 발급 직후 권한까지 검증합니다.

안전성

  • 실행 본체는 모두 ref: claude/blog-automation-system-KAbtE를 체크아웃하므로, 기본 브랜치에는 트리거 정의만 올라갑니다.
  • latest 대비 순수 추가분이며, 3차 세션이 latest에 올린 blog-run.yml(발행량 감축)·fix-unlicensed-images.yml건드리지 않습니다. 되돌아가는 변경이 없음을 파일 단위로 확인했습니다.
  • alert-watchdog는 알림 실패가 워크플로를 실패로 만들지 않도록 항상 종료코드 0으로 끝납니다.
  • pending-cleanup은 수동 실행 시 기본이 리포트 전용이며 --apply가 있어야 파일을 바꿉니다.

필요한 시크릿

TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID — 없으면 알림은 건너뛰고 리포트만 저장됩니다. 그 외 새로 추가되는 시크릿은 없습니다.

🤖 Generated with Claude Code

https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69

GitHub은 schedule·workflow_dispatch 트리거를 기본 브랜치의 워크플로
파일에서만 인식합니다. 두 파일이 기능 브랜치에만 있어 자동 스케줄이
돌지 않고 대시보드 버튼도 404가 납니다.
- pending-cleanup.yml: 검토 대기 글 정리·재검증 (주 1회)
- alert-watchdog.yml: 운영 알림 워치독 (6시간마다)
실행 자체는 기존과 동일하게 claude/blog-automation-system-KAbtE를
체크아웃해 수행하므로, 기본 브랜치에는 트리거 정의만 올라갑니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
스케줄 실행은 기본 브랜치의 워크플로 정의를 쓰는데, 여기 있는 사본은
`git add`에 `-f`가 빠져 있습니다. docs/.gitignore(npm/cli 템플릿)가 docs/*를
무시하므로 아직 추적되지 않은 analytics_summary.json은 매주 조용히
커밋에서 빠졌고, 대시보드 분석 화면에 쓸 요약 데이터가 저장소에 없습니다.
(2026-08-17 분석 커밋에도 posts.json과 로그만 들어 있음)
- git add -f 로 교체하고 adsense_revenue.json / adsense_rpm.json 추가
- 분석 직전 실제 AdSense 수익 수집 단계 추가 (권한 없으면 건너뜀)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
스케줄 실행은 기본 브랜치의 워크플로 정의를 쓰므로, 진단 단계가 여기에도
있어야 매일 실행됩니다.
- 사이트맵 제출 전에 gsc_diagnose.py 실행 (읽기 전용)
- gsc_diagnosis.json 커밋 대상 추가
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
기능 브랜치에서 지워도 기본 브랜치에 남아 있으면 workflow_dispatch로
계속 실행할 수 있습니다. 공개 저장소에서 refresh_token을 교환해
아티팩트로 올리는 경로이므로 여기서도 제거합니다.
토큰 발급은 로컬 get_refresh_token.py로만 수행합니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
이 브랜치에 동기화한 뒤 기능 브랜치에 index_priority.py 실행 단계가
추가돼, 기본 브랜치 사본에만 빠져 있었습니다. 스케줄 실행은 기본
브랜치 정의를 쓰므로 이대로면 색인 요청 패널이 갱신되지 않습니다.
- python index_priority.py 실행 추가
- docs/data/index_priority.json 커밋 대상 추가
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
@Kevinlee7250Kevinlee7250 changed the title ⚙️ 신규 워크플로 2개를 기본 브랜치에 등록 (대기 글 정리 · 운영 알림 워치독)⚙️ 워크플로를 기본 브랜치에 동기화 (신규 2 · 수정 2 · 보안 삭제 1)Aug 19, 2026
@Kevinlee7250
Kevinlee7250 marked this pull request as ready for review August 19, 2026 18:25
@Kevinlee7250
Kevinlee7250 merged commit 8ac5740 into latestAug 19, 2026
2 checks passed
Kevinlee7250 pushed a commit that referenced this pull request Aug 19, 2026
워크플로 5개가 기본 브랜치에 반영돼 pending-cleanup(주 1회),
alert-watchdog(6시간마다) 스케줄이 실제로 동작하기 시작합니다.
공개 저장소에서 토큰을 교환하던 get-oauth-token.yml도 제거됐습니다.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RgLYqM9puPW1aqHTccbX69
github-actionsBot added a commit that referenced this pull request Aug 20, 2026
github-actionsBot added a commit that referenced this pull request Aug 22, 2026
github-actionsBot added a commit that referenced this pull request Aug 22, 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