왕초보도 가능한 블로그 수익화! 무료 웨비나 신청

쿠팡 슬라이딩 배너: 티스토리용 매뉴얼

티스토리용 쿠팡 슬라이딩 배너 사용 방법입니다. 4종의 배너를 이용할 수 있습니다.

안녕하세요, 여러분. 애드센스 승인 때문에 막히셨나요?
아니면 무효 트래픽으로 계정이 터졌나요?

그래서 준비했습니다.
바로 누구나 쓸 수 있는, 쿠팡파트너스 배너를 배포해드립니다.이 배너는 현재 대한민국에서 가장 많은 트래픽을 보유한 언론사들도 사용하고 있고, 실제로 이걸로 수익을 수백만 원씩 내고 있는 분들도 계세요.

다만 이 배너는 ‘이슈 트래픽’에 더 최적화된 구조입니다. 고단가 키워드나 전문성 높은 콘텐츠에는 적합하지 않을 수 있어요.

CPC는 보통 10원에서 50원 사이, 평균적으로는 약 30원 정도라고 보시면 됩니다.

광고 클릭당 수익은 낮지만,유입만 잘 되면 바로 돈이 되는 구조입니다.
그래서 애드센스 승인이 안되신 분들이나 막힌 분들은, 지금 당장 시작하기 딱 좋아요.

그리고 소소한 팁 하나 더 드릴게요. 가족이나 지인들에게 “이 링크로 사달라~”고 하면,
내가 그 구매 금액의 3% 정도를 수익으로 받을 수 있습니다.

예를 들어, 지인이 냉장고를 하나 샀다?100만 원짜리면, 나는 3만 원이 그냥 들어오는 거예요.

그래서 이 배너를 ‘짠테크’ 용도로 활용하시는 분들도 많아요.단톡방에 슬쩍 올려두거나, 부모님 휴대폰에 즐겨찾기 등록해두는 식으로요. 작지만 쏠쏠하게 쌓이는 수익이니까, 꼭 활용해보세요!

티스토리워드프레스블로그스팟
– 스킨 편집에서 코드 추가
– 서식을 설정하여 배너 추가
– 수동으로만 배너 추가 가능
– 티스토리 정책 위반의 가능성 (현재는 제재하지 않지만 추후에 제재 가능성)
– 플러그인 등을 사용하여 코드 추가 가능 (다양한 방식)
– 자동으로 모든 글의 특정 위치(예: 첫 번째 문단 아래)에 배너 표시 가능
– 수동으로 배너 추가 가능
– 스킨 편집에서 코드 추가
– 블로그 본문에 코드를 추가하여 배너 표시
– 수동으로만 배너 추가 가능

❗ 2026년 5월 8일 업데이트: 쿠팡 슬라이딩 배너 광고(커버형 배너 광고) 금지

쿠팡이 2026년 6월 8일부터 쿠팡 파트너스의 다이나믹 배너 위에 “밀어서 확인”, “당겨보세요”, “열어서 혜택 확인” 등의 문구를 넣거나, 손잡이 모양·슬라이드 모션·화살표 디자인 요소 등을 활용하여 클릭을 유도하는 형태의 광고를 금지하는 운영 정책 개정을 발표했습니다.

티스토리용 쿠팡 슬라이딩 배너 4종

기존의 쿠팡 배너와 비슷하게 하면서 기능을 개선했습니다.

  1. 배너 4종 지원
  2. 민감도 설정 가능 (일정 비율 이상 드래그하면 자동으로 이동)
  3. 링크를 현재 창/새 창에서 열리도록 설정 가능 (기본: 새 창에서 열림)
  4. 일정 비율 이상 드래그한 후에 놓으면 이동
  5. 배너 클릭 시 이동 여부 선택 가능 (기본적으로 비활성화)
  6. 애드블록이 활성화되어 있는 경우 다이내믹 배너가 표시되지 않지만, 그런 경우에도 배너 작동
  7. 드래그 방향 설정 가능 (드래그 방향을 바꿀 경우 커버 이미지 교체 필요)

기존에는 원격 서버에서 스크립트가 로드되는 방식이어서 원격 서버에 문제가 있을 경우 배너가 작동하지 않는 문제가 있었습니다. 이제는 스크립트를 스킨 편집을 통해 입력하는 방식이므로 이런 문제가 발생하지 않습니다.

👉 티스토리 예시: https://hackya.tistory.com/7
👉 워드프레스 예시: https://wordpress-1313504-5467463.cloudwaysapps.com/ 내의 모든 글 (왼쪽, 오른쪽 방향 각각 예시 확인 가능)
👉 블로그스팟 예시: https://generatepressthemes.blogspot.com/2022/07/blog-post.html

쿠팡 배너 이용 시 주의사항

슬라이딩 배너 예시.

쿠팡 슬라이딩 배너 이용 시

  1. 티스토리 정책과
  2. 쿠팡 파트너스의 정책 위반이 되지 않도록 주의해야 합니다.

티스토리는 제재하지 않는 것으로 보이지만 티스토리의 주먹구구식 잣대로 인해 피해를 입을 가능성이 있습니다. 누군가 신고한다면 티스토리에서 임의로 제재를 가할 가성능을 배제할 수 없습니다. 티스토리에서 이용 시 과도한 배너 노출은 위험할 수도 있으니 주의하시기 바랍니다. (👉 워드프레스와 블로그스팟에서는 이런 리스크에서 자유롭습니다.)

쿠팡 정책에도 유의해야 합니다. 쿠팡은 자동 실행 금지 정책을 강력하게 시행하고 있습니다.

사용자가 아무 액션도 하지 않았는데 쿠팡 웹/앱이 자동실행되는 형태
배너를 스치기만 해도 쿠팡이 뜨는 형태 (배너 영역을 일부만 움직이거나 배너 내에서 상하 스크롤 시 쿠팡 웹/앱이 실행)

배너 영역을 일부만 움직일 때 쿠팡 웹/앱이 실행할 경우 정책 위반이 될 수 있다고 간주하고 있습니다. (“부정광고 제보 포상금 제도 실시 안내” 참고)

배너를 구현할 때 상기에 해당하지 않은지 면밀한 모니터링이 필요합니다. 인기 사이트에 구현된 배너를 참고하여 설정을 할 수 있을 것입니다. 다른 사이트들을 살펴보니 배너를 일정 비율(예: 절반) 이상 드래그할 때 이동하도록 되어 있는 사이트가 많네요. 특히 “민감도를 적절히 설정”하는 것이 바람직한 것 같습니다. 약간만 드래그했을 때 이동하도록 할 경우 누군가가 신고하면 정책 위반이 되어 수익금을 몰수 당할 위험성이 있습니다.

  • 티스토리 정책 위반: 티스토리 접근 제한 제재 가능성 (워드프레스나 블로그스팟에서는 이 부분에서 자유롭습니다. 워드프레스 버전과 블로그스팟 버전도 곧 추가될 예정입니다.)
  • 쿠팡 정책 위반: 수익금 몰수까지 될 수 있으므로 주의.

📍이러한 위험성을 인지하고 사용하는 것이 중요합니다!!!

쿠팡 링크 생성하기

먼저 쿠팡 파트너스 링크를 생성해야 합니다. 두 가지 링크가 필요합니다.

  • 간편 링크
  • 다이내믹 배너

배너는 다이내믹 배너가 배경에 표시되고 커버를 드래그했을 때 간편 링크로 이동하게 됩니다. (간편 링크가 중요!)

참고로 채널 아이디를 만들어서 채널 아이디를 지정하면 추후 링크 클릭률 등 통계를 추적할 때 용이합니다.

다이나믹 배너 링크는 링크생성 > 다이나믹 배너에서 생성할 수 있습니다.

배너 생성 버튼을 누릅니다.

다이내믹 배너는 배경에 다이내믹 배너가 표시되도록 하는 기능에 사용되며 실제로 클릭이 되지는 않으므로(간편 링크가 클릭됩니다) 대충 설정해도 무방합니다.

배너 만들기 버튼을 클릭합니다.

상기 코드에서 중요한 것은 ID와 TrackingCode입니다. 이 두 요소가 필요합니다.

이제 티스토리에 코드를 추가하는 방법에 대하여 살펴보겠습니다.

자바스크립트 코드

자바스크립트 코드를 스킨 편집의 HTML 탭의 맨 아래(</body> 바로 위)에 추가해야 합니다. 자바스크립트 코드는 다음과 같습니다.

<script>
setTimeout(function () {
	const dragSensitivity = 0.55; // 드래그 민감도
	const clickTolerance = 0;   // 클릭 간주 기준 (px), 0: 클릭 시 이동 안함. 클릭 시 이동하려면 1~3값 설정 고려.
	const dragRatioThreshold = 0.55; // 배너 너비 대비 드래그 비율, 배너 드래그 후 드롭 시.
	const newWindow = 1; // 1: 새 창, 0: 현재 창

	const bannerConfigs = [
		{
			selector: '.sliding-banner-300',
			width: 300,
			height: 300,
			id: '801591',
			trackingCode: 'AF0123456', // 본인의 추적 코드로 대체
			subId: '',
			tsource: '',
			background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/600x600-back2.jpg',
			cover: 'https://adsensefarm.kr/wp-content/uploads/2025/11/WOW-30Ox25O-cover-left.png',
			arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrowbtn.png',
			dragDirection: 'left'
		},
		{
			selector: '.sliding-banner-150',
			width: 320,
			height: 150,
			id: '884870',
			trackingCode: 'AF0123456', // 본인의 추적 코드로 대체
			subId: '',
			tsource: '',
			background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/640x300-back2.jpg',
			cover: 'https://adsensefarm.kr/wp-content/uploads/2025/11/WOW-32Ox15O-cover-left.png',
			arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrowbtn.png',
			dragDirection: 'left'
		},
		{
			selector: '.sliding-banner-250',
			width: 300,
			height: 250,
			id: '884871',
			trackingCode: 'AF0123456', // 본인의 추적 코드로 대체
			subId: '',
			tsource: '',
			background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/600x500-back2.jpg',
			cover: 'https://adsensefarm.kr/wp-content/uploads/2025/11/WOW-30Ox25O-cover-left.png',
			arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrowbtn.png',
			dragDirection: 'left'
		},
		{
			selector: '.sliding-banner-280',
			width: 336,
			height: 280,
			id: '884871',
			trackingCode: 'AF0123456', // 본인의 추적 코드로 대체
			subId: '',
			tsource: '',
			background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/600x500-back3.jpg',
			cover: 'https://adsensefarm.kr/wp-content/uploads/2025/11/WOW-30Ox25O-cover-right.png',
			arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrow-right.png',
			dragDirection: 'right'
		}
	];

	const coupangLink = 'https://link.coupang.com/a/123456'; // 본인의 간편 링크로 대체 📍

	function openLink(link) {
		if (newWindow) {
			window.open(link, '_blank');
		} else {
			history.replaceState(null, null, window.location.href);
			window.location.href = link;
		}
	}

	function generateIframeURL(config) {
		return `https://ads-partners.coupang.com/widgets.html?id=${config.id}&template=carousel&trackingCode=${config.trackingCode}&subId=${encodeURIComponent(config.subId || '')}&width=${config.width}&height=${config.height}&tsource=${encodeURIComponent(config.tsource || '')}`;
	}

	function createBanner(config) {
		const iframeURL = generateIframeURL(config);
		const wrapper = document.createElement('div');
		wrapper.innerHTML = `
			<div class="customBannerArea" style="width: ${config.width}px; height: ${config.height}px;">
				<div class="customBox" style="width: ${config.width}px; height: ${config.height}px; position: relative; cursor: grab;" draggable="false">
					<img src="${config.background}" class="backward" draggable="false">
					<iframe src="${iframeURL}" width="${config.width}" height="${config.height}" frameborder="0" scrolling="no" referrerpolicy="unsafe-url" browsingtopics style="pointer-events: none;"></iframe>
					<div class="customBanner active" style="z-index: 3; ${config.dragDirection === 'right' ? 'right: -80px; left: auto;' : 'left: -40px;'}">
						<img src="${config.cover}" class="cover" style="pointer-events: none;" draggable="false">
						<p class="banner-bubble" style="line-height: 1.2rem!important; pointer-events: none; ${config.dragDirection === 'right' ? 'left: -40px; right: auto;' : 'right: -40px;'}">당겨주세요!</p>
						<div class="arrow" style="pointer-events: none; ${config.dragDirection === 'right' ? 'left: -10px; right: auto;' : 'right: -10px;'}">
							<img src="${config.arrowIcon}">
						</div>
					</div>
				</div>
			</div>
		`;
		return wrapper;
	}

// trigger event update

function setupDragEvents(dragTarget, animatedBanner, threshold, link, direction) {
	let startX = 0, diffX = 0, triggered = false, isDragging = false;

	function getClientX(e) {
		return e.type.includes('touch') ? e.touches[0].clientX : e.clientX;
	}

	function triggerOnce() {
		if (triggered) return;
		triggered = true;
		animatedBanner.style.transform = 'translateX(0)';
		animatedBanner.classList.add('active');
		openLink(link);
	}

	function startDrag(e) {
		if (e.type.startsWith('mouse') && e.button !== 0) return;
		isDragging = true;
		startX = getClientX(e);
		diffX = 0;
		triggered = false;
		animatedBanner.classList.remove('active');
		e.preventDefault();
	}

	function onDrag(e) {
		if (!isDragging) return;
		const currentX = getClientX(e);
		diffX = currentX - startX;

		if ((direction === 'left' && diffX < 0) || (direction === 'right' && diffX > 0)) {
			animatedBanner.style.transform = `translateX(${diffX}px)`;
			if (Math.abs(diffX) > threshold) {
				triggerOnce();
			}
			e.preventDefault();
		}
	}

	function endDrag() {
		if (!isDragging) return;
		isDragging = false;
		const dragRatio = Math.abs(diffX) / dragTarget.offsetWidth;

		if (Math.abs(diffX) < clickTolerance || (
			dragRatio >= dragRatioThreshold &&
			((direction === 'left' && diffX < 0) || (direction === 'right' && diffX > 0))
		)) {
			triggerOnce();
		} else {
			animatedBanner.style.transform = 'translateX(0)';
			animatedBanner.classList.add('active');
		}
		diffX = 0;
	}

	dragTarget.addEventListener('mousedown', startDrag);
	dragTarget.addEventListener('mousemove', onDrag);
	dragTarget.addEventListener('mouseup', endDrag);
	dragTarget.addEventListener('mouseleave', endDrag);
	dragTarget.addEventListener('touchstart', startDrag, { passive: false });
	dragTarget.addEventListener('touchmove', onDrag, { passive: false });
	dragTarget.addEventListener('touchend', endDrag);
}

// end

	bannerConfigs.forEach(config => {
		const targets = document.querySelectorAll(config.selector);
		if (targets.length === 0) return;
		targets.forEach(target => {
			target.innerHTML = '';
			const banner = createBanner(config);
			target.appendChild(banner);
			const customBox = banner.querySelector('.customBox');
			const animatedBanner = banner.querySelector('.customBanner');
			const threshold = config.width * dragSensitivity;
			setupDragEvents(customBox, animatedBanner, threshold, coupangLink, config.dragDirection);
		});
	});
}, 100);
</script>

여기에서 중요한 것은 간편 링크와 trackingCode 부분입니다. 이 두 가지를 제대로 표시하면 배너는 올바르게 작동할 것입니다.

처음 배너를 설정할 때에는 아래의 내용을 주의하여 설정하시기 바랍니다. 특히 민감도 부분은 정책 위반에 영향을 미칠 수 있으므로 주의해야 합니다.

	const dragSensitivity = 0.55; // 드래그 민감도
	const clickTolerance = 0;   // 클릭 간주 기준 (px), 0: 클릭 시 이동 안함. 클릭 시 이동하려면 1~3값 설정 고려.
	const dragRatioThreshold = 0.55; // 배너 너비 대비 드래그 비율, 배너 드래그 후 드롭 시.
	const newWindow = 1; // 1: 새 창, 0: 현재 창

이 부분에 대하여 설명해보겠습니다.

  1. dragSensitivity: 많은 사이트에서 배너를 약간만 드래그해도 이동하도록 되어 있습니다. 이 기능을 구현한 것입니다. 민감도를 0.1로 설정하면 조금만 드래그해도 이동하게 됩니다. 하지만 이렇게 낮은 값을 설정할 경우 쿠팡 정책 위반이 될 수 있으므로 주의하세요. 이 값을 조정하여 원하는 민감도를 설정하세요. 0.9 정도로 설정하면 사실상 민감도가 없고, 끝까지 드래그해야 이동하게 됩니다. (0.1~1.0 사이 입력 가능, 기본: 0.55)
  2. clickTolerance: 클릭 시 이동 여부를 지정합니다. 기본적으로 비활성화(0)되어 있습니다. 만약 1로 설정하면 1px만큼 이동 시 클릭으로 간주되어 이동하게 됩니다. 클릭 시 이동하도록 활성화할 경우 정책 위반이 되지 않는지 판단하여 사용 여부를 결정하세요. 다른 사이트를 살펴보니 일부 사이트는 클릭 시 이동하고, 일부 사이트는 클릭 시 이동하지 않는 것 같습니다. 정책 위반 염려가 되는 경우 비활성화(0) 상태로 둘 것을 권장합니다. (0: 배너 클릭 비활성화, 1~3: 배너 클릭 시 이동, 기본: 0)
  3. dragRatioThreshold: 드래그하다가 놓을 경우 동작을 제어합니다. 0.5 정도로 설정하면 절반 정도 드래그하다 놓으면 이동하고, 절반 이하를 드래그하다 놓으면 이동하지 않습니다. 마찬가지로 정책 위반 여부를 감안하여 적절한 값을 선택하세요.
  4. newWindow: 1로 설정하면 새 창에서 쿠팡 앱/웹이 열리고 0으로 설정하면 현재 창에서 열립니다. 일부 사이트에서 새 창에서 열리도록 되어 있어서 이 기능을 추가했습니다. 페이스북 앱에서 사이트 글이 열린다면, 새 창으로 설정하는 것이 바람직할 수 있습니다. (1: 새 창에서 열림, 0: 현재 창에서 열림, 기본: 1)

👉 사용자 브라우저에서 팝업 창을 차단하는 경우 newWindow가 1이면 배너 팝업이 표시되지 않고 차단됩니다. 이 점이 싫다면 newWindow 값을 0으로 설정하시기 바랍니다.

	selector: '.sliding-banner-300',
			width: 300,
			height: 300,
			id: '801591',
			trackingCode: 'AF0123456', // 본인의 추적 코드로 대체
			subId: '',
			tsource: '',
			background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/600x600-back2.jpg',
			cover: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/600x600-drag.jpg',
			arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrowbtn.png',
			dragDirection: 'left'

4가지 selecotr가 있습니다. 4가지 배너를 모두 사용한다면 모두 설정하고 특정 배너 크기(예: 300 x300)만 사용한다면 해당 배너 크기에 대한 selecotr만 구성하면 됩니다.

  • width, height: 배너 크기입니다. 변경하지 않습니다.
  • id: 쿠팡 다이나믹 배너 생성 시 코드에서 id를 여기에 설정합니다.
  • tackingCode: 본인의 추적 코드로 대체합니다. (다이나믹 배너 코드에서도 확인 가능)
  • subId: 설정하지 않아도 됩니다. 하고 싶은 경우 설정합니다. 채널ID 부분입니다.
  • tsource: 자신의 도메인 주소(예: example.com)를 입력하면 됩니다. 설정하지 않아도 잘 작동합니다.
  • background: 방문자 브라우저에 애드블록이 활성화될 경우 다이나믹 배너는 차단됩니다. 다이나믹 배너가 차단되거나 작동하지 않을 때 배경에 표시될 이미지를 지정합니다. 지정된 이미지를 그대로 사용해도 되고, 원하는 이미지를 업로드해도 됩니다. (이미지를 본인의 티스토리로 업로드하여 이미지 URL을 대체해도 됩니다. 아래에 배너 이미지를 업로드할 테니 다운로드하여 원하는 것을 사용할 수도 있습니다.)
  • cover: 드래그할 부분의 커버 이미지. 마찬가지로 배너에 지정된 이미지를 그대로 이용해도 되고, 원하는 이미지를 업로드하여 이미지 URL로 대체
  • arrowIcon: 화살표 아이콘.
  • dragDirection: 드래그 방향. left와 right 중에서 선택. 보통은 현재 설정대로 이용하시면 됩니다. (3개 배너는 기본적으로 left, 336×280은 right).

👉드래그 방향에 따라 커버 이미지는 조금 다르게 만들어야 합니다. (하지만 임의로 만들면 위험하고, 쿠파스 홈페이지에서 카테고리 배너를 생성하여 이용하세요.) right 방향(왼쪽에서 오른쪽)의 경우 오른쪽에 여백이 조금 더 있어야 하고, left 방향은 반대입니다.

📍중요📍

커버 이미지의 경우 저희가 제작해서 드렸지만, 쿠팡에 문의한 결과 배너를 임의로 제작하면 정책 위반으로 문제가 된다는 답변을 받았습니다.

파트너스에서 제공하는 배너, 위젯이 아닌 쿠팡의 로고를 임의로 편집해 사용하거나 쿠팡파트너스 혹은 쿠팡의 상호명을 사칭해 활동할 경우 (도메인, 프로필이미지, 프로필명, 검색광고 등) 지식 재산권 위반으로 간주되어 탈퇴 처리 대상이 됩니다.
로고를 변형한 것 뿐만 아니라 쿠팡 파트너스에서 제공하지 않는 로켓 도형을 임의로 사용하는 경우도 탈퇴 처리 대상에 포함되는 점 안내드립니다.

쿠팡 파트너스에서는 본 서비스에서 제공해드리는 컨텐츠(배너 등)로 활동하실 것을 안내 드립니다.
필요하신 경우, 본 서비스에서 제공드리는 공식 배너로 활동 부탁드립니다.

공식 배너를 활용하여 300×250 크기와 300×150 크기의 커버 이미지를 만들었습니다. 300×300 크기에서도 300×250 크기로 설정했습니다. 가능하면 300×250이나 300×150 크기를 이용할 것을 권장합니다. 혹은 직접 쿠파스 사이트에서 카테고리 배너를 생성하여 이용하셔도 됩니다.

앞서 배포한 커버 이미지는 가급적 삭제하시고, 가능하면 쿠파스 사이트에서 직접 카테고리 배너를 생성하여 캡처를 하는 등의 방법으로 활용하시면 좋을 것 같습니다.

카테고리 배너 생성이 안 되면 아래 배너를 이용할 수 있습니다.

300×250 크기와 300×150 크기 커버 이미지를 left, right 방향으로 만들었습니다. (실제 배너 크기에서 조금 맞지 않을 수 있습니다.)

https://adsensefarm.kr/wp-content/uploads/2025/11/Special-30Ox25O-cover-left.png

https://adsensefarm.kr/wp-content/uploads/2025/11/Special-30Ox25O-cover-right.png

https://adsensefarm.kr/wp-content/uploads/2025/11/WOW-30Ox25O-cover-left.png

https://adsensefarm.kr/wp-content/uploads/2025/11/WOW-30Ox25O-cover-right.png

https://adsensefarm.kr/wp-content/uploads/2025/11/Special-32Ox15O-cover-left.png

https://adsensefarm.kr/wp-content/uploads/2025/11/Special-32Ox15O-cover-right.png

https://adsensefarm.kr/wp-content/uploads/2025/11/WOW-32Ox15O-cover-left.png

https://adsensefarm.kr/wp-content/uploads/2025/11/WOW-32Ox15O-cover-right.png

JS 코드에서 (이전에 입력했던 cover 이미지 라인들을) 아래 굵은 색으로 표시된 Cover 이미지 라인들로 교체하시면 됩니다. 해당 라인들만 복사하여 대체할 수 있습니다.

const bannerConfigs = [
		{
			selector: '.sliding-banner-300',
			width: 300,
			height: 300,
			id: '801591',
			trackingCode: 'AF0123456', // 본인의 추적 코드로 대체
			subId: '',
			tsource: '',
			background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/600x600-back2.jpg',
			cover: 'https://adsensefarm.kr/wp-content/uploads/2025/11/WOW-30Ox25O-cover-left.png',
			arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrowbtn.png',
			dragDirection: 'left'
		},
		{
			selector: '.sliding-banner-150',
			width: 320,
			height: 150,
			id: '884870',
			trackingCode: 'AF0123456', // 본인의 추적 코드로 대체
			subId: '',
			tsource: '',
			background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/640x300-back2.jpg',
			cover: 'https://adsensefarm.kr/wp-content/uploads/2025/11/WOW-32Ox15O-cover-left.png',
			arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrowbtn.png',
			dragDirection: 'left'
		},
		{
			selector: '.sliding-banner-250',
			width: 300,
			height: 250,
			id: '884871',
			trackingCode: 'AF0123456', // 본인의 추적 코드로 대체
			subId: '',
			tsource: '',
			background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/600x500-back2.jpg',
			cover: 'https://adsensefarm.kr/wp-content/uploads/2025/11/WOW-30Ox25O-cover-left.png',
			arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrowbtn.png',
			dragDirection: 'left'
		},
		{
			selector: '.sliding-banner-280',
			width: 336,
			height: 280,
			id: '884871',
			trackingCode: 'AF0123456', // 본인의 추적 코드로 대체
			subId: '',
			tsource: '',
			background: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/600x500-back3.jpg',
			cover: 'https://adsensefarm.kr/wp-content/uploads/2025/11/WOW-30Ox25O-cover-right.png',
			arrowIcon: 'https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrow-right.png',
			dragDirection: 'right'
		}
	];

티스토리 스킨 편집(HTML 탭)에서
cover:
로 검색(브라우저에서 Ctrl+F를 눌러 검색 가능)하여 상기 JS 코드의 cover: 라인으로 각각 교체하실 수 있습니다. (총 4개)

오른쪽으로 드래그하는 경우 화살표 이미지는 다음 이미지를 사용할 수 있습니다:

https://tistory1.daumcdn.net/tistory/8074023/skin/images/arrow-right.png

📍드래그 방향은 변경이 가능합니다. 드래그 방향을 변경하면 커버 이미지도 변경해야 하니다. 상기 dragDirection 옵션 부분 참고하세요.

👉 336×280 크기의 경우 왼쪽에서 오른쪽으로 드래그되며, 모바일에서는 오른쪽 부분이 잘릴 수 있으므로 사용 시 참고하세요. (모바일에서는 300×300 크기로 설정하고 싶은 경우에는 상기 JS 코드와 아래에 제시하는 CSS 코드를 챗gpt에 넣어서 요청해볼 수 있을 것입니다.)

	const coupangLink = 'https://link.coupang.com/a/123456'; // 본인의 간편 링크로 대체

이 부분은 본인의 간편 링크로 대체하시기 바랍니다. 드래그 시 간편 링크로 이동하므로 이 링크가 매우 중요합니다. 상기의 다른 부분이 잘못되어도 배너는 작동하지만, 이 링크가 잘못되면 방문자가 드래그하여 이동해도 수익으로 인정되지 않으므로 반드시 본인의 링크로 대체하세요.

참고로 “당겨주세요” 부분은 HTML/CSS로 구현되었습니다. 오디세이 스킨에서 잘 작동하는 것을 확인했습니다. 다른 스킨에서 이 부분의 레이아웃이 이상하다면

<p class="banner-bubble" style="line-height: 1.2rem!important; pointer-events: none; ${config.dragDirection === 'right' ? 'left: -40px; right: auto;' : 'right: -40px;'}">당겨주세요!</p>

위 부분에서 line-height: 1.2rem!important 부분의 값을 조정해보세요. 또한, 아래의 CSS 코드의 “.banner-bubble” 부분을 조정하여 제대로 표시되도록 조정할 수 있습니다.

CSS 코드

배너의 스타일은 CSS 코드로 제어됩니다. 다음 CSS 코드를 사용할 것입니다.

/* Sliding Banner */
.customBannerArea {
    position: relative;
    overflow: hidden;
    margin: 20px auto;
    padding: 0 20px;
    text-align: center;
}

.customBox {
    position: relative;
    overflow: hidden;
    margin-bottom: 10px;
}

.customBox iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
}

.customBox .backward {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
    object-fit: cover;
}

.customBanner {
    position: absolute;
    top: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2;
}

.customBanner img.cover {
    width: 100%;
    height: 100% !important;
    object-fit: cover;
    opacity: 0.93;
}

.customBanner.active img {
    box-shadow: none !important;
}

.customBanner.active a {
    height: 100% !important;
}

.customBanner .arrow {
    position: absolute;
    top: calc(50% - 15px);
    background-color: #2196f3;
    width: 24px;
    height: 24px;
    border-radius: 24px;
}

.banner-bubble {
    position: absolute;
    top: 10px;
    background-color: #bd0000;
    height: 24px;
    width: 77px;
    color: white !important;
    font-size: 0.75em !important;
    border-radius: 5px;
    padding-top: 2px;
    line-height: 1.2rem !important;
}

.sliding-banner-300 .banner-bubble:after, 
.sliding-banner-150 .banner-bubble:after, 
.sliding-banner-250 .banner-bubble:after {
    content: "";
    position: absolute;
    bottom: 0;
    width: 0;
    height: 0;
    border: 10px solid transparent;
    border-top-color: #bd0000;
    border-bottom: 0;
    border-left: 0;
    margin-left: -2.5px;
    margin-bottom: -5px;
}

.sliding-banner-280 .banner-bubble:after {
    content: "";
    position: absolute;
    bottom: 0;
    width: 0;
    height: 0;
    border: 10px solid transparent;
    border-top-color: #bd0000;
    border-bottom: 0;
    border-right: 0;
    margin-left: -45.5px;
    margin-bottom: -5px;
}

.customBanner.active {
    animation: customMv1 1.2s ease-out infinite;
}

@keyframes customMv1 {
    0% {
        transform: translate3d(-7%, 0, 0);
    }
    20% {
        transform: translate3d(-10%, 0, 0);
    }
    40% {
        transform: translate3d(-5%, 0, 0);
    }
    60% {
        transform: translate3d(-10%, 0, 0);
    }
    80% {
        transform: translate3d(-5%, 0, 0);
    }
    100% {
        transform: translate3d(-7%, 0, 0);
    }
}

@media (min-width: 1200px) {
    .customBannerArea {
        background-color: #ffffffc9;
        box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
        padding: 0px;
        z-index: 1000;
        text-align: center;
    }
}

CSS를 조금 안다면 스타일은 적절히 원하는 대로 수정할 수 있습니다.

✅화살표가 깨지는 경우

일부 스킨에서 위의 코드를 사용할 때 화살표가 제대로 표시되지 않을 수 있습니다. 그런 경우 위의 코드 대신 다음 CSS 코드로 시도해보시기 바랍니다.

/* Sliding Banner */
.customBannerArea {
    position: relative;
    overflow: hidden;
    margin: 20px auto;
    padding: 0 20px;
    text-align: center;
}

.customBox {
    position: relative;
    overflow: hidden;
    margin-bottom: 10px;
}

.customBox iframe {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
}

.customBox .backward {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 0;
    object-fit: cover;
}

.customBanner {
    position: absolute;
    top: 0;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 2;
}

.customBanner img.cover {
    width: 100%;
    height: 100% !important;
    object-fit: cover;
    opacity: 0.93;
}

.customBanner.active img {
    box-shadow: none !important;
}

.customBanner.active a {
    height: 100% !important;
}

/* ✅ 수정된 화살표 스타일 */
.customBanner .arrow {
    position: absolute;
    top: 50%;
    right: 10px;
    transform: translateY(-50%);
    background-color: #2196f3;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
    font-size: 16px;
    font-weight: bold;
    z-index: 10;
    box-shadow: 0 2px 5px rgba(0,0,0,0.3);
    cursor: pointer;
}

.banner-bubble {
    position: absolute;
    top: 10px;
    background-color: #bd0000;
    height: 24px;
    width: 77px;
    color: white !important;
    font-size: 0.75em !important;
    border-radius: 5px;
    padding-top: 2px;
    line-height: 1.2rem !important;
}

.sliding-banner-300 .banner-bubble:after,
.sliding-banner-150 .banner-bubble:after,
.sliding-banner-250 .banner-bubble:after {
    content: "";
    position: absolute;
    bottom: 0;
    width: 0;
    height: 0;
    border: 10px solid transparent;
    border-top-color: #bd0000;
    border-bottom: 0;
    border-left: 0;
    margin-left: -2.5px;
    margin-bottom: -5px;
}

.sliding-banner-280 .banner-bubble:after {
    content: "";
    position: absolute;
    bottom: 0;
    width: 0;
    height: 0;
    border: 10px solid transparent;
    border-top-color: #bd0000;
    border-bottom: 0;
    border-right: 0;
    margin-left: -45.5px;
    margin-bottom: -5px;
}

.customBanner.active {
    animation: customMv1 1.2s ease-out infinite;
}

@keyframes customMv1 {
    0% {
        transform: translate3d(-7%, 0, 0);
    }
    20% {
        transform: translate3d(-10%, 0, 0);
    }
    40% {
        transform: translate3d(-5%, 0, 0);
    }
    60% {
        transform: translate3d(-10%, 0, 0);
    }
    80% {
        transform: translate3d(-5%, 0, 0);
    }
    100% {
        transform: translate3d(-7%, 0, 0);
    }
}

@media (min-width: 1200px) {
    .customBannerArea {
        background-color: #ffffffc9;
        box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
        padding: 0px;
        z-index: 1000;
        text-align: center;
    }
}

/* ✅ 반응형 대응 */
@media (max-width: 768px) {
    .customBanner .arrow {
        width: 28px;
        height: 28px;
        font-size: 18px;
        right: 8px;
    }
}

📌 적용 후 스타일이 데모와 약간 다른 경우

사용하는 스킨이나 환경에 따라 다른 스타일이 우선 적용되어 미세한 스타일 차이가 발생할 수 있습니다. 그런 경우 CSS를 수정하여 조정해야 합니다. CSS를 조금 알면 쉽게 조정이 가능할 것입니다.

다음은 실제 사용자가 문의한 내용을 정리한 것입니다.

1. 커버 이미지가 완전히 덮히지 않는 경우

커버 이미지가 완전히 덮히지 않는 경우 상기에서

.customBanner img.cover {
    width: 100%;
    height: 100% !important;
    object-fit: cover;
    opacity: 0.93;
}

부분을 찾아서

.customBanner img.cover {
    width: 100%;
    height: 112% !important;
    object-fit: cover;
    opacity: 0.93;
}

위와 같이 수정해주세요. (숫자를 적절히 조정하세요.)

2. 투명도가 적용되지 않는 경우에는 상기 코드에서 opacity 부분에 !important를 추가해주세요.

.customBanner img.cover {
    width: 100%;
    height: 112% !important;
    object-fit: cover;
    opacity: 0.93 !important;
}

3. “당겨주세요” 글자의 위치가 조금 어긋나는 경우

언급했듯이,

“당겨주세요” 부분은 HTML/CSS로 구현되었습니다. 오디세이 스킨에서 잘 작동하는 것을 확인했습니다. 다른 스킨에서 이 부분의 레이아웃이 이상하다면

<p class="banner-bubble" style="line-height: 1.2rem!important; pointer-events: none; ${config.dragDirection === 'right' ? 'left: -40px; right: auto;' : 'right: -40px;'}">당겨주세요!</p>

위 부분에서 line-height: 1.2rem!important 부분의 값을 조정해보세요. 또한, 아래의 CSS 코드의 “.banner-bubble” 부분을 조정하여 제대로 표시되도록 조정할 수 있습니다.

예를 들어,

.banner-bubble {
    padding-left: 10px;
}

이와 같은 CSS로 레이아웃 제어를 시도해볼 수 있습니다. CSS에 대하여 조금 알면 쉽게 가능합니다.

티스토리 스킨에 코드 추가하기

이제 티스토리에 스킨에 상기 JS 코드와 CSS 코드를 추가할 수 있습니다.

꾸미기 » 스킨 편집을 클릭합니다.

html 편집 버튼을 클릭합니다.

상기의 자바스크립트(JS) 코드는 HTML 탭의 </body> 바로 위에 그대로 복사합니다.

👉 뉴스킨 구버전을 이용하는 경우에는 아래 표시된 부분을 수정해야 합니다.

<!-- 기능을 끄고 싶으신 분들은 위 코드를 삭제해주세요>

이 코드에서 끝에 –가 누락되었습니다.

<!-- 기능을 끄고 싶으신 분들은 위 코드를 삭제해주세요 -->

이 라인 아래 </body> 바로 위에 추가해주세요.

상기의 CSS 코드는 CSS 탭의 맨 아래에 붙여넣기 합니다.

티스토리 포스트 본문에 배너 표시하기

이제 위의 작업이 완료되었다면 배너를 원하는 곳에 추가할 수 있습니다.

다음 HTML 태그를 원하는 곳에 삽입하여 배너를 표시할 수 있습니다.

<div class="sliding-banner-300"></div> <!-- 300x300 크기 -->
<div class="sliding-banner-150"></div> <!-- 320x150 크기 -->
<div class="sliding-banner-250"></div> <!-- 300x250 크기 -->
<div class="sliding-banner-280"></div> <!-- 336x280 크기 -->

하지만 위와 같이 div 태그를 추가하면 편집 화면에서 배너가 표시되었는지 여부를 구분할 수가 없네요. 그래서 저는 다음과 같은 형식으로 대체했습니다.

예시:

<div class="sliding-banner-300">
<script></script>
</div>

서식 만들기

서식으로 저장하여 서식으로 불러오면 편리합니다.

콘텐츠 > 서식 관리 > 서식 쓰기를 클릭합니다.

서식 이름을 지정(예: 쿠팡300×300)하고 HTML 모드를 클릭합니다.

HTML 코드를 입력합니다.

완료를 누릅니다.

300×300 배너만 사용할 경우 하나만 지정하면 되고, 다른 배너도 활용하고 싶다면 해당 배너 크기도 마찬가지 방법으로 서식으로 만듭니다.

300×300 배너 크기

<div class="sliding-banner-300">
<script></script>
</div>

320×150 배너 크기

<div class="sliding-banner-150">
<script></script>
</div>

300×250 배너 크기

<div class="sliding-banner-250">
<script></script>
</div>

336 x 280 배너 크기

<div class="sliding-banner-280">
<script></script>
</div>

위에서 업급했지만, 본래는 <div class=”sliding-banner-250″></div>과 같이 입력하면 되지만, 티스토리 글 편집 화면에서 이렇게 입력하면 구분이 안 되어서 <script></script>를 추가한 것입니다. 그러면 편집 화면에서 배너가 추가되었다는 것을 쉽게 구분할 수 있습니다.

티스토리 포스트 본문에 배너 삽입하기

위의 과정까지 완료했다면 티스토리 글에 배너를 삽입할 수 있습니다.

배너를 삽입할 곳에 마우스를 클릭하고, 메뉴에서 서식을 선택합니다.

서식 선택 창이 표시됩니다.

원하는 서식을 선택하면 서식이 삽입됩니다.

위의 그림과 같이 Script null이 표시됩니다. <script></script>에 아무런 내용이 없어서 Null이 표시됩니다. 위에서 언급했듯이 <script></script>는 본래 없어야 하지만, 글 편집 화면에서 구분을 위해 삽입한 것입니다. 실제 글에서는 이 부분은 제거되고 배너가 표시됩니다.

이제 저장 후에 배너가 제대로 작동하는지 체크해보세요. 만약 민감도 등을 수정해야 한다면 스킨 편집에서 JS 코드와 CSS 코드를 직접 수정할 수 있습니다.

300×300 배너 크기:

300×250 배너 크기:

300×150 배너 크기:

336×280 배너 크기:

이 배너 크기는 왼쪽에서 오른쪽으로 드래그하도록 되어 있습니다. 모바일에서 오른쪽 영역이 잘릴 수 있으므로 사용 시 참고하세요. 모바일에서 이 배너 크기만 숨기는 것도 고려할 수 있을 것입니다.

@media screen and (max-width: 768px) {
	.sliding-banner-280 {
		display: none;
	}
}

사이드바에 추가하는 방법

사이드바에 카테고리 배너 등을 표시하고 싶은 경우에는 다음과 같은 방법을 시도해보세요.

먼저 쿠팡에서 배너를 생성합니다.

원하는 카테고리를 선택합니다.

배너 크기를 선택하고 HTML 코드를 복사합니다. 하단에 HTML 복사 버튼을 클릭하여 복사합니다.

꾸미기 > 사이드바를 클릭하고 HTML 배너출력 옆의 플러스 기호를 클릭하고 사이드바1 또는 사이드바2 등을 선택합니다. HTML 배너 출력이 없으면 플러그인에서 설치해야 할 것입니다.

다음과 같이 HTML 소스에 HTML 태그를 추가합니다.

확인을 눌러 저장합니다.

배너를 2개 정도 넣으면 좀더 클릭률이 올라갈 가능성이 있으므로, 1개보다는 2개 정도 다른 것을 넣어서 테스트해보시기 바랍니다.

❗❗❗ 공정위 문구 (수익 문구) 표시

다이나믹 배너의 경우 공정위 문구 표시가 의무가 아니라는 의견이 있지만(참고“단, 파트너스에서 제공하는 배너, 위젯의 경우 명백하게 광고로 인식될 수 있기 때문에 예외적으로 대가성 문구 생략이 가능할 것으로 보입니다.”), 가급적이면 푸터나 본문에 공정위 문구를 표시할 것을 권장합니다.

예시:

우리 사이트 페이지의 링크를 사용하여 구매한 제품을 통해, 쿠팡 파트너스 및 제휴 광고 프로그램의 일환으로 일정액의 수수료를 제공 받습니다.

스킨 편집에서 푸터 위치를 찾아서 넣어야 합니다. 스킨에 따라 다릅니다. 오디세이 스킨의 경우 id=”footer를 검색하여 적당한 곳에 넣을 수 있습니다.

배너 코드 제거하기

만약 배너를 더 이상 사용하고 싶지 않다면 스킨 편집의 HTML 탭과 CSS 탭에서 추가한 코드를 모두 삭제하면 됩니다.

Q&A

사용자들의 질문이나 버그 관련 내용을 여기에 별도로 정리하고 있습니다. 참고하세요.

1. 애드블록 활성화 시 커버 이미지가 보이지 않는 문제

본 코드는 애드블록이 활성화되어도 잘 작동합니다. 하지만 애드블록이 업데이트되면서 언제든지 차단될 수도 있습니다.

애드블록 활성화 시 커버 이미지가 표시되지 않는다면 이미지 이름을 체크해보세요. 300×250과 같이 표준 광고 배너 사이즈가 이름에 포함되면 차단될 수 있습니다.

2. 모바일에서 배너가 보이지 않는 문제

특히 티스토리의 경우 모바일에서 배너가 표시되지 않는 문제가 발생할 수 있습니다.

  1. 티스토리 앱에서는 작동하지 않습니다. 애드센스 광고도 표시되지 않습니다.
  2. 티스토리 모바일 설정에서 모바일 웹 사용을 비활성해야 합니다.

또한, /m/ 주소로 접속하면 광고가 표시되지 않습니다.

3. 드래그해도 이동이 되지 않습니다.

광고를 드래그해도 이동이 되지 않는 경우, 새 창에서 쿠팡 페이지가 표시되도록 하였다면 브라우저에서 팝업이 차단되도록 설정되지 않았는지 체크해보세요.

팝업 차단이 걱정된다면 현재 창으로 쿠팡 사이트가 열리도록 설정할 수 있습니다.

4. 배너를 클릭하면 쿠팡 창이 두 개가 열립니다.

이 문제를 수정하도록 코드를 업데이트했습니다. JS 코드에 triggerOnce 함수가 있는지 체크해보시고, 없다면 업데이트된 JS 코드로 다시 세팅해주시기 바랍니다.

function triggerOnce() {
		if (triggered) return;
		triggered = true;
		animatedBanner.style.transform = 'translateX(0)';
		animatedBanner.classList.add('active');
		openLink(link);
	}

새로운 코드로 대체해도 동일한 문제가 발생한다면 배너 클릭 시 새 창에서 열리도록 하는 대신 현재 창에서 열리도록 세팅하여 문제가 발생하는지 체크해보시겠어요?

아래 코드에서…

<script>
setTimeout(function () {
	const dragSensitivity = 0.55; // 드래그 민감도
	const clickTolerance = 0;   // 클릭 간주 기준 (px), 0: 클릭 시 이동 안함. 클릭 시 이동하려면 1~3값 설정 고려.
	const dragRatioThreshold = 0.55; // 배너 너비 대비 드래그 비율, 배너 드래그 후 드롭 시.
	const newWindow = 1; // 1: 새 창, 0: 현재 창

newWindow 의 값을 ‘1’에서 ‘0’으로 바꾸면 현재 창에서 쿠팡 사이트가 열립니다.

애드센스로 20억 순수익? 블로그 전부 공개하는 무료 강의

신청하기
하루에 5만원, 하루 1시간 300만원? 재택부업 실체… 월300만원의 가치 공짜 정보는 없다. 있더라도 비싸게 돌아온다

댓글 남기기

모바일 크롬 동적 뷰포트 대응 하단 고정바