new-term-radar
신규 AI 용어를 매일 추적, X·Hugging Face·GitHub 등에서 모델·제품·레포 이름을 빠르게 수집
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Canonical HsinTiger Social Automation: governed Meta scheduling, Substack drafts, audience intelligence, and owner dashboard
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Canonical repository:
HsinTiger/news-radarThis is the only repository that owns social scheduling, Meta publishing, Substack draft generation, operational state, audience data, and the owner dashboard. The repository name remains
news-radarso the existing GitHub Pages URL does not break; the product name is HsinTiger Social Automation.
| Surface | State | Truth boundary |
|---|---|---|
| Meta scheduled publishing | RECOVERY | One post/day/platform under source, quality, quota, readback, and shared-lock gates |
| Submission processor | LIVE | Poller claims one-off work; target-specific evidence remains required |
| Meta publish-now | ARMED | Owner submissions still pass editorial gates before any platform write |
| Substack editorial schedules | WINDOWS WRITER | 12:00 Podcast batch and Sunday company article run on the owner Windows host |
| Substack remote draft transport | BROWSER SESSION ARMED | The scheduled Codex task uses the signed-in Substack UI, requires an editor draft ID readback, and never exports browser credentials; first unattended run remains pending |
| Substack one-off publish-now | CANARY PENDING | Explicit owner choice only; published requires post id, public URL, timestamp, and unauthenticated readback |
| Social Ops API | DEPLOYED | Cloudflare Worker + authenticated D1 |
| Runtime SQLite | CANONICAL RELEASE STATE | Versioned GitHub Release bundle, SHA-256 + PRAGMA quick_check + readback |
| Dashboard data | SEEDED | 29,219 knowledge metadata rows, 807 post records, 381 engagement snapshots |
Owner surfaces:
The Pages UI is authenticated with an owner token stored only in browser
sessionStorage. It never receives a GitHub credential.
rewrite finding gets one
composer retry; if it remains, the draft is held for review and cannot enter
the automatic Meta queue. Historical backfill is evidence-only and never
retroactively fails or publishes a draft.published
means the platform publish path returned success and the result was recorded.news_items.substack_written_at; the scheduled Codex task then creates remote
drafts through the already signed-in Substack Browser session. Mac no longer
owns Substack selection or AI composition.cover.png. Image-search instructions and image-generation prompts are banned.post_draft response.
Windows Browser transport instead requires the exact editor URL/draft ID to
be read back and recorded in the run manifest plus artifact metadata. A local
article, a clicked Create button, or a Saved label without an ID is not remote
evidence.draft_priority. The owner may explicitly
choose publish_now; after reader-ready, cover, and audit gates the Mac calls
prepublish_draft and publish_draft on that same saved draft ID.published additionally requires substack_post_id, substack_post_url,
substack_published_at, and a successful public readback without cookies.
An ambiguous API result remains partial and is never blindly resent.Observe -> Interpret -> Propose -> Owner approve -> Execute -> Verify -> Learn
The automation may collect data, generate reversible drafts, and propose changes without interruption. It may not silently enable live publishing, increase frequency, or apply learning proposals.
Topic-weight and per-platform cadence learning are exact-action loops: the reflector records
field/current_value/proposed_value; the dashboard records the owner's
decision; learning-review.yml applies only an approved action while holding
the canonical Release lease. Identity, current-value drift, range, weekly
delta, compare-and-swap, and post-write readback all fail closed. Approval
authorizes that proposal only; it never grants publishing authority.
flowchart LR
Sources[Public sources + owner submissions] --> Runtime[(SQLite runtime state)]
Watchdog[Cloudflare scheduler watchdog] --> Scheduler[Governed scheduler]
Scheduler --> Runtime
Runtime --> Compose[Platform-specific compose]
Compose --> Queue[Governed Meta queue]
Queue --> Meta[FB / IG / Threads]
Runtime --> Win[Windows Substack writer]
Win --> Files[Reader-ready article + character cover]
Files --> Handoff[Browser handoff manifest]
Handoff --> Browser[Signed-in Substack UI]
Browser -->|editor draft ID readback| Drafts[Substack drafts]
Meta --> Metrics[Engagement + audience collectors]
Metrics --> D1[(Social Ops D1)]
Runtime --> Sync[Metadata sync]
Sync --> D1
D1 --> Dashboard[Owner dashboard]
Dashboard --> Proposal[Learning proposals]
Proposal --> Approval{Owner approval}
Approval --> Policy[Versioned policy]
scripts/state_store.py transports SQLite through the
runtime-state-v1 GitHub Release.Cloudflare D1 stores:
| Workflow | Purpose | Publishing authority |
|---|---|---|
adaptive-scheduler.yml | Evaluates platform cadence and dispatches the main pipeline; receives GitHub cron plus Cloudflare watchdog ticks | Disabled while AUTOMATION_MODE=paused; shared lock and quotas prevent duplicate dispatch |
submission-poller.yml | Claims D1 one-off submissions and dispatches an allowlisted workflow | Disabled while SUBMISSION_PROCESSOR_MODE=paused |
engagement-monitor.yml | Polls 1h/24h/168h post-age buckets hourly (±45-minute capture window) | Read-only platform access |
audience-monitor.yml | Captures daily follower snapshots | Read-only platform access |
operational-sync.yml | Syncs runtime metadata and Substack terminal evidence to D1 | No publishing authority |
learning-review.yml | Mirrors owner decisions, applies exact approved topic/cadence actions, backfills quality evidence, then creates the next proposals | Policy-write authority only; no publishing |
full_pipeline.yml | Harvest, compose, publish, verify, feedback, persist | Only dispatched by governed scheduler or owner |
reels_publish.yml | Generates or publishes one idempotent reel | No independent cron; live publish requires owner action |
queued -> claimed -> dispatched
Meta: content_queued -> published
Substack: source_queued -> draft_created
Any path: failed / rejected
Transitions are validated server-side. Terminal states are idempotent and
cannot be downgraded. source_queued does not mean a Substack draft exists;
content_queued does not mean a Meta post exists.
The owner Windows host is the only machine authorized to select scheduled Substack topics or call the editorial LLM:
python scripts/windows_substack_editorial_worker.py podcast-batch
python scripts/windows_substack_editorial_worker.py weekly
The runner fast-forwards origin/main, acquires the shared Release lease, uses
gpt-latest through Codex CLI, falls back only to claude-latest, and fails
closed if both routes fail. The Python writer keeps SUBSTACK_AUTO_DRAFT=0 so
no cookie is copied into the repo or scheduled shell. The enclosing Codex task
then prepares an exact 2/1-artifact browser handoff, creates Everyone drafts in
the existing signed-in Substack UI, records each editor draft ID, and verifies
the completed manifest:
python scripts/windows_substack_browser_handoff.py prepare podcast-batch --started-at <ISO-8601>
python scripts/windows_substack_browser_handoff.py record --title <title> --draft-id <id> --editor-url <url>
python scripts/windows_substack_browser_handoff.py verify
Missing artifacts, missing login, a mismatched draft URL, Paid audience, or an
incomplete ID set must fail the scheduled run. See
docs/windows_substack_browser_draft_automation.md.
The Mac must keep every Substack topic-selection/AI-writing agent unloaded. Do
not remove its GitHub token, Substack cookies, Keychain data, or Meta workers.
For the stop-and-quarantine handoff, follow
docs/MAC_SUBSTACK_V2_CUTOVER_HANDOFF.md.
Local deterministic gates:
python -X utf8 -m pytest tests/unit -q
python -m compileall -q src scripts
node --check cloudflare-worker/worker.js
node --check dashboard/app.js
npx wrangler deploy --dry-run
git diff --check
Exact gate scope matters: unit tests and a signed-in browser snapshot do not prove the next unattended task will finish. The first scheduled Windows run must still produce two editor draft IDs before the 13:00 target can be called proven.
HsinTiger/news-radar — canonical, active automation and owner surfaces.HsinTiger/news-radar-pm — archived legacy planning/audit history.HsinTiger/news-radar-dashboard — archived legacy state-branch dashboard.The canonical repository slug intentionally remains news-radar to preserve
the live Pages URLs. Its GitHub description and homepage identify it as
HsinTiger Social Automation.
See the rebuild checkpoint for evidence, known unknowns, and the owner canary packet.