패스트뷰
경력근거: Content Provider(콘텐츠 공급 파트너사)가 쓰는 제품까지 직접 만듭니다.
패스트뷰는 하루 1,500만 자의 콘텐츠를 AI로 번역·제작·유통하는 콘텐츠 테크 회사예요. 쇼더스는 기사·대본·롱폼 영상을 넣으면 대본 재구성·보이스·자막·장면 구성까지 만들어 세로형 쇼츠로 완성하고, 자동 품질 검증을 거친 쇼츠를 연결된 유튜브 채널에 바로 발행할 수 있게 해요.
공고는 이 자리가 할 일로 'Content Provider(콘텐츠 공급 파트너사)가 쓰는 제품까지 직접 만듭니다'를 들고, 운영 쪽 일로 '성공한 것처럼 보이는 조용한 실패를 잡는 지표와 알림을 만듭니다'를 꼽아요. 기사 한 건이 쇼츠가 되려면 하이라이트 추출·보이스·렌더링을 차례로 거치고, 발행 요청 뒤 채널 영상 목록에 나타나야 끝나요. 그사이 한 단계가 실패 기록 없이 끊기거나, 영상 번호까지 받은 발행 요청이 채널 영상 목록에 나타나지 않으면 제작 기록만 봐서는 성공과 구별되지 않아요.
공고는 고객·사업 담당자·품질 담당자의 피드백을 빠르게 반영하고, 콘텐츠 공급 파트너사(Content Provider)가 쓰는 제품까지 직접 만드는 일을 이 자리에 맡겨요.
공고는 배포 자동화·모니터링·장애 대응을 챙기고, 성공한 것처럼 보이는 조용한 실패를 잡는 지표와 알림을 만드는 일을 이 자리에 맡겨요.
쇼더스는 기사·대본·롱폼 영상을 넣으면 대본 재구성·보이스·자막·장면 구성까지 만들어 세로형 쇼츠로 완성하고, 자동 품질 검증을 거친 쇼츠를 연결된 유튜브 채널에 바로 발행할 수 있어요.
콘텐츠 공급 파트너사 담당자가 그날 보낸 기사의 결과를 확인하려고 여는 관리자 페이지예요. 그날 보낸 기사마다 쇼츠가 채널에 올라갔는지, 아직 만들거나 올리는 중인지, 쇼츠 제작이 시작되지 않았는지, 제작 단계 어디에서 멈췄는지, 발행 요청 뒤 채널 영상 목록에 보이지 않는지 알려 줘요. 받은 데이터를 담을 DB 설계와 기술·구조, 그리고 성공·실패 기록 없이 끊긴 단계를 멈췄다고 볼 시간 기준과 발행 요청 뒤 채널 목록에 안 보이면 문제로 볼 시간 기준은 지원자가 정해요.
패스트뷰에 기사를 보내고, 그 기사로 만든 쇼츠를 연결된 유튜브 채널에 올리는 콘텐츠 공급 파트너사(Content Provider)의 담당자예요. 하루에 보낸 기사 가운데 어느 것이 쇼츠로 채널에 올라갔고 어느 것이 어디에서 멈췄는지 모르면, 멈춘 기사를 놓치거나 같은 기사를 다시 보내고 패스트뷰에 건마다 물어보게 돼요.
콘텐츠 공급 파트너사가 쇼츠로 만들라고 보낸 기사예요. 한 행이 기사 한 건이고 article_id 가 키예요. partner_id 는 보낸 파트너사 코드(CP-01~CP-60)이고, channel_id 는 이 기사의 쇼츠를 올릴 그 파트너사의 유튜브 채널이에요. 파트너사는 채널이 하나이거나 둘이고, 한 채널은 한 파트너사에만 속해요. supplied_at 은 패스트뷰가 기사를 받은 시각이고, 이 데이터의 모든 시각은 패스트뷰 서버의 한 시계로 찍은 한국 시간이에요. 같은 기사를 다시 보내면 새 article_id 를 받아서 제목이 똑같은 기사가 두 행이 되고, 제목 앞부분만 같은 다른 기사도 있어요. 큰 데이터는 2026년 9월 7일부터 10월 16일까지 40일 동안 파트너사 60곳이 보낸 기사 31,366건이에요. 시작용은 10월 16일 13시부터 CP-17 담당자가 화면을 연 18시 40분 12초까지 CP-17 이 보낸 기사 13건 전부이고, CP-17 은 그날 13시 전에는 기사를 보내지 않았어요.
전체 13행 가운데 앞 5행이에요.
| article_id | partner_id | channel_id | headline | supplied_at |
|---|---|---|---|---|
| AR-130827 | CP-17 | CH-120 | [경제] 수도권 아파트 전세 거래 석 달째 줄어 | 2026-10-16T13:04:27+09:00 |
| AR-130926 | CP-17 | CH-120 | [사회] 수도권 주말 많은 비 예보…하천 산책로 통제 | 2026-10-16T14:21:48+09:00 |
| AR-130948 | CP-17 | CH-120 | [IT] 스마트폰 출하량 다섯 달째 늘어 | 2026-10-16T14:48:05+09:00 |
| AR-130968 | CP-17 | CH-120 | [생활] 환절기 감기 환자 늘어…실내 습도 관리 중요 | 2026-10-16T15:06:33+09:00 |
| AR-131006 | CP-17 | CH-120 | [경제] 기준금리 동결 배경과 연말 전망 | 2026-10-16T15:40:19+09:00 |
13행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 31,366행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "파트너사가 보낸 기사 한 건. 키는 article_id.",
"additionalProperties": false,
"required": [
"article_id",
"partner_id",
"channel_id",
"headline",
"supplied_at"
],
"properties": {
"article_id": {
"type": "string",
"pattern": "^AR-[0-9]{6}$",
"description": "기사 번호. 이 표의 키예요. 같은 기사를 다시 보내면 새 번호를 받아요."
},
"partner_id": {
"type": "string",
"pattern": "^CP-[0-9]{2}$",
"description": "기사를 보낸 콘텐츠 공급 파트너사 코드(CP-01~CP-60)."
},
"channel_id": {
"type": "string",
"pattern": "^CH-[0-9]{3}$",
"description": "이 기사의 쇼츠를 올릴 유튜브 채널 코드. 한 채널은 한 파트너사에만 속해요."
},
"headline": {
"type": "string",
"description": "파트너사가 보낸 기사 제목. 다시 보낸 기사는 처음 보낸 기사와 제목이 같아요."
},
"supplied_at": {
"type": "string",
"format": "date-time",
"description": "패스트뷰가 기사를 받은 시각. 한국 시간(+09:00) ISO 8601, 초 단위. 패스트뷰 서버의 한 시계로 찍은 시각이에요."
}
}
}기사 한 건을 쇼츠로 만드는 동안 단계마다 남은 기록이에요. 한 행이 기록 한 줄이고 log_id 가 키예요. article_id 는 cp_articles.article_id 를 가리켜요. stage 는 script(하이라이트 추출·대본 재구성), voice(보이스), render(자막·장면 구성·렌더링) 가운데 하나이고 이 순서로 진행돼요. status 는 단계를 시작하면 started, 마치면 succeeded, 실패하면 failed 로 남고, 단계를 시작하면 started 는 반드시 남아요. 실패한 단계를 다시 시작하면 같은 단계의 started 가 한 번 더 남아요. logged_at 은 그 기록을 남긴 시각이에요. 실패가 기록된 기사, 렌더링이 다른 기사보다 한참 오래 걸린 기사, 실패한 단계를 다시 시작해 끝까지 마친 기사, 다시 시작한 뒤 아무 기록도 이어지지 않은 기사, 단계를 시작한 뒤 succeeded 도 failed 도 남지 않은 기사, 기사를 받고 한참 뒤에야 첫 기록이 남은 기사가 들어 있어요. 큰 데이터는 40일 동안 남은 기록 187,352줄 전부이고, 시작용은 시작용 기사 13건에 18시 40분 12초까지 남은 기록 61줄 전부예요.
전체 61행 가운데 앞 5행이에요.
| log_id | article_id | stage | status | logged_at |
|---|---|---|---|---|
| SL-1184105 | AR-130827 | script | started | 2026-10-16T13:05:02+09:00 |
| SL-1184117 | AR-130827 | script | succeeded | 2026-10-16T13:06:11+09:00 |
| SL-1184118 | AR-130827 | voice | started | 2026-10-16T13:06:12+09:00 |
| SL-1184124 | AR-130827 | voice | succeeded | 2026-10-16T13:07:03+09:00 |
| SL-1184125 | AR-130827 | render | started | 2026-10-16T13:07:04+09:00 |
61행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 187,352행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "쇼츠 제작 단계 기록 한 줄. 키는 log_id.",
"additionalProperties": false,
"required": [
"log_id",
"article_id",
"stage",
"status",
"logged_at"
],
"properties": {
"log_id": {
"type": "string",
"pattern": "^SL-[0-9]{7}$",
"description": "기록 번호. 이 표의 키예요."
},
"article_id": {
"type": "string",
"pattern": "^AR-[0-9]{6}$",
"description": "이 기록이 속한 기사. cp_articles.article_id 를 가리켜요."
},
"stage": {
"type": "string",
"enum": [
"script",
"voice",
"render"
],
"description": "제작 단계. script 는 하이라이트 추출·대본 재구성, voice 는 보이스, render 는 자막·장면 구성·렌더링이에요. 이 순서로 진행돼요."
},
"status": {
"type": "string",
"enum": [
"started",
"succeeded",
"failed"
],
"description": "단계를 시작하면 started, 마치면 succeeded, 실패하면 failed 가 남아요. 단계를 시작하면 started 는 반드시 남아요. 실패한 단계를 다시 시작하면 같은 단계의 started 가 한 번 더 남아요."
},
"logged_at": {
"type": "string",
"format": "date-time",
"description": "이 기록을 남긴 시각. 한국 시간(+09:00) ISO 8601, 초 단위. 패스트뷰 서버의 한 시계로 찍은 시각이에요."
}
}
}렌더링을 마친 쇼츠를 유튜브 채널에 올린 업로드 요청 가운데, 업로드가 받아들여져 영상 번호를 받은 요청이에요. 한 행이 요청 한 건이고 request_id 가 키예요. article_id 는 cp_articles.article_id 를 가리키고, 기사 한 건에 요청은 많아야 한 건이에요. channel_id 는 요청한 채널로, 그 기사의 cp_articles.channel_id 와 같아요. video_id 는 업로드 때 받은 영상 번호이고 channel_listings.video_id 와 같은 번호 체계예요. requested_at 은 요청을 보낸 시각이에요. 영상 번호를 받았는데 채널 영상 목록에 한 번도 나오지 않은 요청, 요청하고 몇 분 만에 목록에 나온 요청, 한 시간 넘게 지나서야 목록에 나온 요청이 들어 있어요. 큰 데이터는 40일 동안의 요청 30,421건 전부이고, 시작용은 시작용 기사에서 18시 40분 12초까지 보낸 요청 7건 전부예요.
전체 7행 가운데 앞 5행이에요.
| request_id | article_id | channel_id | video_id | requested_at |
|---|---|---|---|---|
| PR-229904 | AR-130827 | CH-120 | VD-3031491 | 2026-10-16T13:13:01+09:00 |
| PR-230040 | AR-130968 | CH-120 | VD-3031632 | 2026-10-16T15:22:31+09:00 |
| PR-230071 | AR-131006 | CH-120 | VD-3031667 | 2026-10-16T15:49:02+09:00 |
| PR-230114 | AR-131052 | CH-120 | VD-3031712 | 2026-10-16T16:27:20+09:00 |
| PR-230217 | AR-131160 | CH-120 | VD-3031821 | 2026-10-16T17:44:20+09:00 |
7행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 30,421행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "영상 번호를 받은 채널 발행 요청 한 건. 키는 request_id.",
"additionalProperties": false,
"required": [
"request_id",
"article_id",
"channel_id",
"video_id",
"requested_at"
],
"properties": {
"request_id": {
"type": "string",
"pattern": "^PR-[0-9]{6}$",
"description": "발행 요청 번호. 이 표의 키예요."
},
"article_id": {
"type": "string",
"pattern": "^AR-[0-9]{6}$",
"description": "이 쇼츠를 만든 기사. cp_articles.article_id 를 가리켜요. 기사 한 건에 요청은 많아야 한 건이에요."
},
"channel_id": {
"type": "string",
"pattern": "^CH-[0-9]{3}$",
"description": "업로드를 요청한 채널 코드. 그 기사의 cp_articles.channel_id 와 같아요."
},
"video_id": {
"type": "string",
"pattern": "^VD-[0-9]{7}$",
"description": "업로드가 받아들여질 때 받은 영상 번호. channel_listings.video_id 와 같은 번호 체계예요."
},
"requested_at": {
"type": "string",
"format": "date-time",
"description": "업로드를 요청한 시각. 한국 시간(+09:00) ISO 8601, 초 단위. 패스트뷰 서버의 한 시계로 찍은 시각이에요."
}
}
}파트너사 유튜브 채널마다 1시간에 한 번, 채널마다 정해진 분에 그 채널의 최근 공개 영상 목록을 받아 온 기록이에요. 한 번 받을 때 가장 최근에 공개된 영상 5개를 받고, 한 행이 그 목록에 있던 영상 하나예요. channel_id·observed_at·video_id 묶음이 키이고, channel_id 와 observed_at 이 같은 5행이 한 번 받은 목록 전체예요. channel_id 는 cp_articles.channel_id 와 같은 채널 코드예요. video_id 는 publish_requests.video_id 와 같은 번호 체계이고, 파트너사가 채널에 직접 올린 영상도 목록에 나와서 publish_requests 에 없는 video_id 도 있어요. observed_at 은 목록을 받은 시각이고, 목록을 받지 못한 시각에는 행이 없어요. 새 영상이 공개되면 오래된 영상은 최근 5개에서 밀려나 그 뒤 목록에는 나오지 않아요. 한 시간 넘게 목록을 받지 못한 구간이 들어 있어요. 큰 데이터는 40일 동안 채널 68개에서 받은 목록 318,050행이고, 시작용은 CP-17 의 채널 CH-120 에서 10월 16일 13시부터 18시 40분 12초까지 받은 목록 5번 전부(25행)예요.
전체 25행 가운데 앞 5행이에요.
| channel_id | observed_at | video_id |
|---|---|---|
| CH-120 | 2026-10-16T13:35:08+09:00 | VD-3031491 |
| CH-120 | 2026-10-16T13:35:08+09:00 | VD-3031101 |
| CH-120 | 2026-10-16T13:35:08+09:00 | VD-3031107 |
| CH-120 | 2026-10-16T13:35:08+09:00 | VD-3031086 |
| CH-120 | 2026-10-16T13:35:08+09:00 | VD-3031081 |
25행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 318,050행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "한 번 받은 채널 영상 목록에 있던 영상 하나. 키는 (channel_id, observed_at, video_id) 묶음.",
"additionalProperties": false,
"required": [
"channel_id",
"observed_at",
"video_id"
],
"properties": {
"channel_id": {
"type": "string",
"pattern": "^CH-[0-9]{3}$",
"description": "목록을 받은 유튜브 채널 코드. cp_articles.channel_id 와 같은 채널 코드예요."
},
"observed_at": {
"type": "string",
"format": "date-time",
"description": "목록을 받은 시각. channel_id 와 이 값이 같은 행 5개가 한 번 받은 목록 전체예요. 한국 시간(+09:00) ISO 8601, 초 단위. 패스트뷰 서버의 한 시계로 찍은 시각이에요."
},
"video_id": {
"type": "string",
"pattern": "^VD-[0-9]{7}$",
"description": "그 목록에 있던 영상 번호. 파트너사가 채널에 직접 올린 영상은 publish_requests 에 없어요."
}
}
}파트너사 담당자가 이 관리자 페이지를 연 기록이에요. 한 행이 한 번 연 것이고 view_id 가 키예요. partner_id 는 cp_articles.partner_id 와 같은 파트너사 코드예요. viewed_at 은 화면을 연 시각이고, 이 기능이 '지금'으로 삼는 시각이에요. 큰 데이터는 40일 동안 연 기록 4,280건이고, 시작용은 10월 16일 18시 40분 12초에 CP-17 담당자가 연 기록 1건이에요.
전체 1행 가운데 앞 1행이에요.
| view_id | partner_id | viewed_at |
|---|---|---|
| VW-54253 | CP-17 | 2026-10-16T18:40:12+09:00 |
1행 전부를 JSON 파일 하나로 받을 수 있어요.
같은 형식으로 만든 4,280행이에요. 위 데이터가 이 안에 그대로 들어 있어요(한 줄에 한 행, gzip 압축).
미리보기와 내려받는 데이터 모두 이 형식(JSON Schema)을 따라요.
{
"type": "object",
"description": "파트너사 담당자가 발행 현황 화면을 한 번 연 기록. 키는 view_id.",
"additionalProperties": false,
"required": [
"view_id",
"partner_id",
"viewed_at"
],
"properties": {
"view_id": {
"type": "string",
"pattern": "^VW-[0-9]{5}$",
"description": "화면 열람 번호. 이 표의 키예요."
},
"partner_id": {
"type": "string",
"pattern": "^CP-[0-9]{2}$",
"description": "화면을 연 담당자의 파트너사 코드. cp_articles.partner_id 와 같은 코드예요."
},
"viewed_at": {
"type": "string",
"format": "date-time",
"description": "화면을 연 시각. 이 기능이 '지금'으로 삼는 시각이에요. 한국 시간(+09:00) ISO 8601, 초 단위. 패스트뷰 서버의 한 시계로 찍은 시각이에요."
}
}
}