본문 AI(luna)가 비용의 대부분입니다 — 편수를 줄이면 요금이 거의 비례해서 줄어듭니다.
“무단전재·재배포 금지” 사진도 매체명을 붙여 싣습니다. 저작권법 제28조(공표된 저작물의 인용)에 기대는 방식이라, 판단은 운영자 몫입니다.
이 컴퓨터의 이미지 생성 프로그램에 먼저 요청하고, 컴퓨터가 꺼져 있으면 서버가 이어서 만들어요. 원본 자료 사진 다음에 배치합니다.
PC 에서 node scripts/abroad-longform.mjs 선수이름 --plan 을 돌리면 여기에 대본이 올라옵니다.
카드마다 문장을 고치고 이미지나 영상을 올린 뒤 🔴 레코딩을 누르면, --watch 를 켜 둔 PC 가 받아서 영상을 만듭니다.
안 올린 카드는 지금처럼 자동(헤드샷·위키 공용 사진)으로 채워집니다. 올리는 자료의 사용 권리는 올리는 사람이 확인합니다.
선수 데이터 없이 자유 주제(이적설 총정리, 전술 분석 등)로도 만들 수 있습니다.
입력하면 이 PC의 LLM이 대본을 카드 단위로 쓰고, 카드마다 어떤 사진이 어울리는지도 같이 알려줍니다.
그다음부터는 선수 영상과 똑같이 이미지·영상을 올리고 레코딩하면 됩니다. (PC에 --watch가 켜져 있어야 받아 갑니다.)
맥북이 검수를 통과한 인물 그림을 자동으로 넣고, 카드 자료의 은행에 저장 버튼으로 직접 넣을 수도 있습니다. 소속팀이 바뀐(이적) 선수의 옛 그림은 자동으로 안 걸립니다 — 여기서 소속팀을 고치거나 지우세요.
J1리그(축구)와 NPB(야구) 회차입니다. 카드·나레이션이 일본어로 나가고 유튜브에만 올립니다 — 인스타·네이버는 쓰지 않습니다.
유튜브 계정을 아직 연결하지 않아 자동 발행은 꺼져 있습니다. 카드는 만들어 확인할 수 있습니다.
대표팀 투어·IPL·아시안게임 등 인도가 나오는 크리켓 경기입니다. 카드·나레이션이 영어로 나가고 유튜브에만 올립니다.
유튜브 계정을 아직 연결하지 않아 자동 발행은 꺼져 있습니다. 카드는 만들어 확인할 수 있습니다.
NFL·대학풋볼·NBA·대학농구·MLB·NHL·MLS·유럽축구 결과입니다. 한국 쇼츠와 같은 카드로, 카드·나레이션이 영어로 나가고 유튜브에만 올립니다.
유튜브 계정을 연결하기 전에는 영상만 만들고 올리지 않습니다.
브라질 국내 리그, 해외 주요 리그, 그리고 브라질 선수의 활약 경기를 한 큐에서 관리합니다.
브라질 시간으로 돕니다 — 현지 아침 10시 예고, 현지 새벽 1시 결과.
현재 연결 상태, 제작·업로드 진행, 다음 확장 순서를 한 곳에서 확인합니다.
경기 종료를 감지하면 아래 순서로 국가별 콘텐츠를 만듭니다. 실제 생성·업로드 결과는 실시간으로 반영됩니다.
날짜별로 Firestore rankings 에 최대 200위까지 저장합니다.
어제 스냅샷이 있으면 ▲상승 · ▼하락 · 동일 · NEW 를 붙입니다.
인스타 순위 카드는 상위 30위만 씁니다.
닌텐도 eShop·공식 반기 랭킹, 플스는 스토어가 비면 공식 아시아 월간 차트를 씁니다.
매일 07:15·23:10에 자동 갱신됩니다.
인스타·Threads 조회는 Meta 인사이트라 몇 시간 늦게 잡힐 수 있습니다. 블로그는 오늘 0시 이후 조회입니다. 10분마다 다시 받습니다.
race-league.mjs <리그>(+--short) → race-register.mjs <리그>
자동 발행을 켜고 끄는 운영 설정과, 처음 한 번 연결하는 계정·API 설정을 나눠 볼 수 있습니다.
채널별로 자동 발행을 켜거나 끌 수 있습니다. 끄면 스케줄·자동 발행이 멈춥니다.
현재 운영 중인 한국 스포츠 채널의 Instagram·자동 생성 설정입니다.
한국 시스템과 분리된 포르투갈어 축구 채널 설정입니다. 연결을 마친 뒤에만 자동 제작을 켜세요.
일본어 콘텐츠와 일본 YouTube 채널을 한국·브라질 채널과 분리해 연결합니다. OAuth 연결 전에는 자동 제작이 꺼진 상태로 유지됩니다.
인도 채널은 영어(en-IN) 크리켓 전용이며 YouTube에만 올립니다. 아래에서 인도 채널을 따로 연결하세요 — 연결 전에는 인도 회차가 발행 단계에서 멈춥니다(한국 채널로 잘못 올라가지 않습니다).
미국 채널은 영어(en-US) 결과 쇼츠 전용이며 YouTube에만 올립니다. 아래에서 미국 채널을 연결하세요.
인스타 발행이 끝나면 kimghoul.tistory.com 에 요약 글을 올립니다. 공식 API는 종료되어 관리자 쿠키 방식이 필요합니다. (하루 공개글 약 15편 제한 → 우리는 매시간 1편, 하루 최대 24편. 초안은 다 쌓이지만 발행 버튼은 사람이 누르므로, 하루 15편 넘게 발행하지 않도록 주의하세요) 이슈 글은 Google Trends 한국 · 지난 24시간 · 검색량순 · 활성 주제를 OpenAI로 사람 말투로 쓰고, MiniMax로 장면 이미지를 만듭니다. 키가 없으면 Wikimedia 사진으로 대체합니다. 오늘 올린 주제는 다시 쓰지 않습니다. 켜고 끄기는 위 SNS 채널에서 합니다. 쿠키는 주기적으로 만료됩니다 — 6시간마다 자동 점검 후 만료 시 디스코드로 알려 드립니다.
카테고리 자동 인식이 안 되면 ID를 직접 넣으세요. 관리 → 카테고리 → 각 분류 클릭 후 주소창의 숫자, 또는 글쓰기에서 분류 선택 시 Network 의 category 값.
카테고리: 야구(KBO) · 축구(K리그) · EPL · 라리가 · 게임 · 실시간 이슈
특정 키워드를 직접 넣어 카드·릴스·블로그·SNS 전부에 올리려면 발행 대기 화면 상단의 키워드로 전 채널 만들기를 쓰세요.
본문 AI(luna)가 비용의 대부분입니다 — 편수를 줄이면 요금이 거의 비례해서 줄어듭니다.
“무단전재·재배포 금지” 사진도 매체명을 붙여 싣습니다. 저작권법 제28조(공표된 저작물의 인용)에 기대는 방식이라, 판단은 운영자 몫입니다.
이 컴퓨터의 이미지 생성 프로그램에 먼저 요청하고, 컴퓨터가 꺼져 있으면 서버가 이어서 만들어요. 원본 자료 사진 다음에 배치합니다.
키는 platform.minimax.io (중국 계정이면 minimaxi.com) 에서 발급합니다. 로컬·OpenAI 요청이 실패하면 부족한 장수를 대신 만들어요.
reddit.com/prefs/apps 에서 "create app" → 타입 script → redirect uri 는 http://localhost 로 등록하면 두 값이 나옵니다.
버튼을 누르면 이 컴퓨터에 전용 로그인 창이 열리고 쿠키가 자동 저장됩니다.
로컬 프로그램 상태를 확인하고 있습니다.
블로그 본문을 쓰는 모델과, 그 글을 심사하는 모델을 따로 고릅니다.
목록은 저장된 API 키로 지금 쓸 수 있는 것만 불러옵니다 — 모델 이름은 자주 바뀝니다.
비워 두면 코드 기본값을 씁니다. 본문 gpt-5.6-luna · 심사 gpt-4o.
작은 모델(mini·nano)은 본문에서 분량·구체성을 못 맞춥니다. 심사는 쓰기보다 쉬워서 작은 모델도 변별은 하지만, 잘못 반려하면 비싼 글쓰기를 다시 돌리게 됩니다.
네이버는 초안(임시저장)까지만 자동입니다. 글·사진을 다 만들어 임시저장에 넣고
디스코드로 알려 드리면 네이버 앱이나 웹에서 발행 버튼만 누르시면 됩니다.
발행 단계에 네이버의 봇 탐지(ncaptcha)가 붙어 있어서 자동 발행은 하지 않습니다.
제목·본문 입력란의 키보드 입력을 감시해 사람인지 보는 장치라, 통과시키려면 사람 흉내를 내야 합니다.
하루 1~2편을 눈으로 확인하고 올리는 편이 저품질 판정 위험도 낮습니다.
쿠키는 주기적으로 만료됩니다 — 만료되면 초안 저장이 실패하고 디스코드로 알려 드립니다.
카테고리는 쿠키를 저장하면 이름으로 자동 매칭됩니다 (야구 · 축구 · 게임 · 실시간 이슈). 못 찾으면 블로그 기본 카테고리로 들어갑니다.
아이디:시크릿 형태로 붙여넣기API키:검색엔진ID 형태로 붙여넣기버튼을 누르면 이 컴퓨터에 전용 로그인 창이 열리고 쿠키가 자동 저장됩니다.
이미 만드는 릴스(1080×1920)를 그대로 네이버 클립에 올립니다. 새로 만들 게 없습니다.
블로그와 달리 발행에 봇 탐지가 없어서 끝까지 자동으로 갈 수 있습니다.
다만 클립은 크리에이터 수익 프로그램이라, 무인 발행이 계정 평가에 어떻게 잡힐지 모릅니다.
처음엔 초안까지만 두고 결과를 보신 뒤 자동 발행으로 넘어가시길 권합니다.
네이버 로그인 쿠키를 같이 씁니다 — 위 네이버 설정에서 저장한 쿠키가 그대로 쓰입니다.
본문과 해시태그는 인스타 캡션을 그대로 씁니다. 카테고리는 종목에 맞춰 자동으로 넣습니다 (야구 → SPORTS/BASEBALL, 축구 → SPORTS/SOCCER).
실시간 이슈 글의 사진과 본문으로 세로 숏폼을 만들어 우리 유튜브에 올리고,
그 영상을 블로그 본문에 심습니다.
기사에 박힌 남의 영상을 가져다 쓰면 주제와 상관없는 게 딸려 옵니다
(실제로 자동차 글에 은행 광고가 붙은 적이 있습니다). 우리 영상이면 그럴 일이 없습니다.
검증을 통과한 글에만 만듭니다. 사진이 2장 미만이면 건너뜁니다 — 같은 그림만 반복되면 초라해집니다.
음성은 Microsoft Edge TTS, 배경음은
assets/bgm/{분위기}.mp3 에서 고릅니다 (luxury · upbeat · somber · neutral).
파일이 없으면 무음으로 나갑니다.
Blogger와 YouTube Shorts가 같이 쓰는 공통 Google OAuth 설정입니다. 여기서 클라이언트 ID·Secret을 한 번 저장해 두고, Blogger와 YouTube는 아래 카드에서 각각 Google로 연결해 따로 승인받습니다.
티스토리에 올리는 같은 글을 kimghoul.blogspot.com 에도 올립니다. 위 Google Setting에서 클라이언트를 저장한 뒤, 여기서 Google로 연결해 Blogger 권한만 따로 승인합니다. 켜고 끄기는 위 SNS 채널에서 합니다.
이슈 글 본문 하단(쿠팡 상품이 있으면 그 위)에 배너를 넣습니다.
연예·스포츠 글에도 붙습니다. 광고 단위는 매체마다 따로 만들어야 합니다.
애드핏에서
코드 전체(<ins class="kakao_ad_area">)를 복사해 붙여넣으세요.
kimghoul.tistory.com 등록 · 광고 단위 생성 (PC 300×250 또는 728×90, 모바일 320×100 권장)kimghoul.blogspot.com 매체를 따로 만들고 그 코드를 넣습니다. 티스토리 코드를 blogspot에 넣으면 광고가 안 나갑니다<script src="//t1.daumcdn.net/kas/static/ba.min.js" async></script>
를 한 줄 넣으세요. 본문에서 스크립트를 지우는 경우가 있습니다티스토리·Blogger·네이버 글 본문 문단 사이에 상품 카드를 넣습니다. 연예·스포츠·재난 같은 글에는 API 상품은 붙이지 않고, 아래에 저장한 관련 배너는 붙입니다. 티스토리·Blogger 는 쿠팡 동적 배너를 iframe 으로, 네이버는 위젯을 캡처 이미지+링크로 넣습니다. 상품·배너가 붙을 때만 필수 문구 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다. 를 넣습니다. 승인이 안 됐거나 API가 실패해도 글은 그대로 올라갑니다.
대상은 설정으로 고르지 않습니다. 세 가지를 모두 통과한 글에만 붙습니다. ① 사망·사고·재난·정치·범죄 낱말이 제목·태그·본문 어디에도 없을 것 ② 글 종류가 상품 글(product) 로 판정됐을 것 — 판정값이 없으면 붙이지 않습니다 ③ 검색어가 경기 대진·스코어·당첨번호 모양이 아닐 것. 그래서 속보·해설 글에는 API 상품이 아예 붙지 않고, 아래 관련 배너만 붙습니다. 예전 이슈 글에도 붙이기 옵션은 ①②를 통째로 건너뛰던 우회로라 없앴습니다.
kimghoul.tistory.com 과 kimghoul.blogspot.com 등록OpenAI 크레딧이 떨어졌을 때 쓰는 무료 3차 폴백입니다. 2026-09-01 에 크레딧이 0이 되자 검증 AI 가 못 돌아 블로그 20건이 통째로 버려졌는데, 그 자리를 메웁니다. 기본값은 꺼짐입니다 — NVIDIA API Trial 약관이 프로덕션 사용을 금지하므로 켜는 것은 직접 판단하실 일입니다. 영상은 붙이지 않았습니다: 호스팅되는 모델이 프롬프트를 못 받고 1024x576 가로 고정이라 세로 쇼츠에 못 씁니다.
쿠팡 배너 HTML 또는 네이버 쇼핑 커넥트에서 직접 발급한 링크 한 줄을 등록하고, 태그(야구·유니폼·보조배터리 등)를 달아 두세요. 글 주제와 양쪽 상품이 모두 맞으면 쿠팡 1개와 네이버 1개를 함께 넣습니다. 네이버 쇼핑 커넥트는 공개 상품 발급 API가 없어 먼저 쇼핑 커넥트의 상품 찾기 → 링크 발급을 해야 합니다. 각 서비스의 경제적 이해관계 문구는 실제 사용된 링크에 맞춰 자동으로 들어갑니다. 쿠팡 API 키가 없으면 저장한 쿠팡 링크를 자동으로 대신 사용합니다.
기본은 무료 Edge 음성입니다. 아래에서 쓰임새마다 엔진·목소리·모델을 따로 고를 수 있습니다. 키가 죽거나 크레딧이 떨어지면 그 영상 전체를 Edge 로 다시 읽습니다(한 영상 안에서 목소리가 바뀌지 않습니다). 같은 문장은 한 번만 사서 캐시하고, 플랫폼별 속도 차이는 ffmpeg 로 만듭니다.
ElevenLabs 는 내 라이브러리(프리메이드 몇 개)만으로는 한국어 목소리가 거의 없어서, 공개 Voice Library(커뮤니티 목소리 수천 개)에서 한국어를 인기순으로 최대 100개 같이 찾아옵니다. ☁ 표시가 붙은 목소리는 라이브러리에 추가는 자동(무료)이지만, 실제로 읽는 건 ElevenLabs 유료 플랜에서만 됩니다(무료 플랜은 402 오류). 무료 플랜이면 ☁ 표시 없는(원래 내 라이브러리에 있던) 목소리만 쓸 수 있습니다.
영상 종류마다 엔진을 다르게 쓸 수 있습니다. 목소리를 고르려면 먼저 위에서 해당 엔진의 목소리를 불러오세요. ▶ 로 그 줄 설정 그대로 짧게 들어볼 수 있습니다.
저장 없이 아무 조합이나 들어봅니다. 실제 영상과 같은 경로로 읽습니다.
세이브티커 SAVE PICK만 5분마다 확인해 10분 이내 새 글만 Threads에 올립니다. 같은 본문은 아래 X가 켜져 있으면 X에도 올라갑니다. 본문의 Save 표기는 제거합니다. Instagram 토큰과는 별도 Threads 토큰이 필요합니다. 켜고 끄기는 위 SNS 채널에서 합니다.
오전 10시~밤 10시 사이에 무작위로 올려요. 같은 문장은 최근 목록에서 피하고, “스하리 반하리”는 3일에 한 번 저녁에 올려요. X에는 올리지 않아요.
threads_basic, threads_content_publish (초기엔 본인 계정 테스터로 OK)Threads에 올리는 SAVE PICK 속보와 같은 글을 X에도 올립니다. 한글은 글자당 2로 잡혀 280을 넘기면 이어지는 트윗으로 나눕니다. X 개발자 포털에서 앱 권한을 Read and write로 두고, User Token(OAuth 1.0a) 키 4개를 넣으세요. 켜고 끄기는 위 SNS 채널에서 합니다.
계정 두 곳을 연결합니다. 본계정에는 게임 이슈 · 추천 · 한국 스토어 순위가 올라가고, 경기 계정에는 야구 · 축구 · EPL · 라리가 · LCK가 올라갑니다. 채널마다 Google 승인을 따로 받습니다. 첫 화면은 지메일, 그다음에서 올릴 채널을 고르세요. 위 Google Setting 클라이언트를 공통으로 씁니다. 켜고 끄기는 위 SNS 채널에서 합니다.
이슈 · 추천 · 스토어 순위
채널: 아직 연결 안 됨
결과 · 예고 · 기록 레이스
채널: 아직 연결 안 됨
심사 중에는 반자동 업로드로 영상·설명문을 준비하고 마지막 공개만 직접 누릅니다.
심사가 통과하면 기존 Direct Post API 방식으로 전환할 수 있습니다.
TikTok for Developers 앱에
Content Posting API · video.publish 스코프가 필요합니다.
Storage URL 도메인(firebasestorage.googleapis.com)을 TikTok 개발자 콘솔에서 URL prefix 검증해야 합니다.
심사 전 앱은 비공개(나만 보기)로만 올라갈 수 있습니다.
계정: 연결 후 표시
https://firebasestorage.googleapis.com/ prefix 검증새 관리 화면이 배포되었습니다. 새로고침하면 최신 기능을 쓸 수 있습니다.