diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelRole.java b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelRole.java
index 0f44fce..66cc7f8 100644
--- a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelRole.java
+++ b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelRole.java
@@ -8,7 +8,7 @@ package com.hlab.yanalyst.domain.channel;
*
{@link #OWN} — 내가 운영하는 채널. 이미 발행한 결과물이라 소재가 아니므로
* 수집함·칸반·발굴·피드 어디에도 섞이지 않고 내 채널 분석 화면에서만 쓰인다.
* {@link #SOURCE} — 소재 원본 채널(웹예능 공식채널). 롱폼만 피드에 수집한다.
- * {@link #RIVAL} — 경쟁 쇼츠 채널(같은 소재를 다루는 클립 채널). 쇼츠만 피드에 수집한다.
+ * {@link #RIVAL} — 경쟁 채널(같은 소재를 다루는 클립 채널). 역시 롱폼만 피드에 수집한다.
*
*
* ddl-auto:update 로 컬럼이 추가되므로 기존 행은 role 이 null 이다. null 은 항상 {@link #MY} 로 취급한다.
@@ -45,9 +45,4 @@ public final class ChannelRole {
String r = normalize(role);
return SOURCE.equals(r) || RIVAL.equals(r);
}
-
- /** 해당 역할이 수집할 영상 포맷 — SOURCE 는 롱폼만, RIVAL 은 쇼츠만. */
- public static boolean acceptsShorts(String role) {
- return RIVAL.equals(normalize(role));
- }
}
diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelService.java b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelService.java
index 67dc7ed..475d09b 100644
--- a/src/main/java/com/hlab/yanalyst/domain/channel/ChannelService.java
+++ b/src/main/java/com/hlab/yanalyst/domain/channel/ChannelService.java
@@ -390,7 +390,7 @@ public class ChannelService {
/**
* 피드 시드 채널의 최근 업로드를 1페이지(최대 50건)만 수집한다.
- * 소스 채널은 롱폼만, 경쟁 채널은 쇼츠만 저장한다.
+ * 역할과 무관하게 롱폼만 저장한다 — 쇼츠는 이미 잘린 결과물이라 소재가 아니다.
*
* @param channel SOURCE 또는 RIVAL 역할의 채널
* @param publishedAfter 이 시각 이후 업로드만 수집
@@ -422,10 +422,9 @@ public class ChannelService {
}
if (videoIds.isEmpty()) return 0;
- // SOURCE = 롱폼만(공식계정 쇼츠는 이미 잘린 결과물), RIVAL = 쇼츠만
- Boolean shortsOnly = ChannelRole.acceptsShorts(role);
+ // 피드는 롱폼만 수집한다 (쇼츠는 이미 잘린 결과물 — 자를 원본이 아니다)
String source = ChannelRole.RIVAL.equals(role) ? ChannelRole.RIVAL : ChannelRole.SOURCE;
- return upsertVideos(channel, videoIds, source, shortsOnly, publishedAfter);
+ return upsertVideos(channel, videoIds, source, Boolean.FALSE, publishedAfter);
}
diff --git a/src/main/java/com/hlab/yanalyst/domain/channel/FeedCollectionService.java b/src/main/java/com/hlab/yanalyst/domain/channel/FeedCollectionService.java
index 696c25e..6736e6e 100644
--- a/src/main/java/com/hlab/yanalyst/domain/channel/FeedCollectionService.java
+++ b/src/main/java/com/hlab/yanalyst/domain/channel/FeedCollectionService.java
@@ -18,7 +18,7 @@ import java.util.Map;
/**
* 소재 발굴 피드 수집기.
*
- * SOURCE(웹예능 공식채널)의 신규 롱폼과 RIVAL(경쟁 예능짤 채널)의 신규 쇼츠를 주기적으로 받아온다.
+ *
SOURCE(웹예능 공식채널)와 RIVAL(경쟁 클립 채널)의 신규 롱폼을 주기적으로 받아온다(쇼츠는 수집하지 않는다).
* uploads 플레이리스트 1페이지만 조회하므로 채널당 약 2 units — 검색(search.list 100 units)보다 훨씬 싸다.
*/
@Slf4j
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 0f9cfca..e91960d 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -100,7 +100,7 @@ hlab:
# 발굴 대상 포맷 기본값: LONG_FORM(롱폼) | SHORTS. UI '지금 발굴'에서 건별 선택 가능.
format: ${DISCOVERY_FORMAT:LONG_FORM}
- # 소재 발굴 피드: 소스(웹예능 공식채널) 신규 롱폼 + 경쟁(예능짤) 신규 쇼츠를 최신순으로 수집
+ # 소재 발굴 피드: 소스(웹예능 공식채널)·경쟁(클립 채널)의 신규 롱폼만 최신순으로 수집 (쇼츠 제외)
feed:
enabled: ${FEED_ENABLED:true}
cron: ${FEED_CRON:0 15 */3 * * *} # 3시간마다 (소재 선점은 업로드 후 몇 시간이 승부)
diff --git a/src/main/resources/templates/feed.html b/src/main/resources/templates/feed.html
index 6d62644..59a9a9f 100644
--- a/src/main/resources/templates/feed.html
+++ b/src/main/resources/templates/feed.html
@@ -11,7 +11,7 @@