๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT/tech-resources

SoundCloud, AI ๊ฒ€์ƒ‰ ์‹œ๋Œ€, ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ๋ธ”๋กœ๊ทธ ๋งŒ๋“œ๋Š” ๋ฒ• – ์Œ์•…์œผ๋กœ ์‚ฌ์šฉ์ž์™€ ๊ต๊ฐํ•˜๊ธฐ

AI ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€์‘ํ•˜๋Š” ๋ธ”๋กœ๊ทธ ์ฝ˜ํ…์ธ  ๊ตฌ์„ฑ ๋ฐฉ๋ฒ• ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ํ™œ์šฉ ์ „๋žต

๋‹จ์ˆœํžˆ ์ •๋ณด๋ฅผ ๋‚˜์—ดํ•˜๋Š” ์ •์ ์ธ ๋ธ”๋กœ๊ทธ๋Š” ๋” ์ด์ƒ ๋ฐฉ๋ฌธ์ž์˜ ๋งˆ์Œ์„ ๋ถ™์žก๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ์ด์ œ๋Š” ๊ฐ์„ฑ๊ณผ ๊ฒฝํ—˜ ์ค‘์‹ฌ์˜ ๋™์  ๋ธ”๋กœ๊ทธ, ๊ทธ๋ฆฌ๊ณ  ๋‹ค์–‘ํ•œ ๊ฐ๊ฐ์„ ์ž๊ทนํ•˜๋Š” ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ๋ธ”๋กœ๊ทธ๋กœ์˜ ์ „ํ™˜์ด ํ•„์š”ํ•œ ์‹œ์ ์ž…๋‹ˆ๋‹ค.

ํŠนํžˆ AI ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ ํ™˜๊ฒฝ์—์„œ๋Š” ๋‹จ์ˆœํ•œ ํ…์ŠคํŠธ๋ณด๋‹ค ๊ณต๊ฐ๊ณผ ์ฒดํ—˜์„ ์œ ๋„ํ•˜๋Š” ์ฝ˜ํ…์ธ ๊ฐ€ ๋” ๋†’์€ ํ‰๊ฐ€๋ฅผ ๋ฐ›์œผ๋ฉฐ, ์‚ฌ์šฉ์ž๋Š” ์ •๋ณด๋ฅผ ์ฐพ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ฝ˜ํ…์ธ ๋ฅผ ๋А๋ผ๋Š” ๊ฐ์„ฑ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ํ๋ฆ„์— ๋ฐœ๋งž์ถ”์ง€ ์•Š๋Š”๋‹ค๋ฉด, AI ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ์˜ ํŠธ๋ž˜ํ”ฝ ์†์‹ค์€ ํ”ผํ•  ์ˆ˜ ์—†๋Š” ๋ธ”๋กœ๊ทธ์˜ ํ˜„์‹ค์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ •์  ๋ธ”๋กœ๊ทธ์—์„œ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ๋ธ”๋กœ๊ทธ : ์ž๋™ ์Œ์•…์žฌ์ƒ ๊ธฐ๋Šฅ์œผ๋กœ ์ฒดํ—˜ ์ค‘์‹ฌ ์ฝ˜ํ…์ธ  ๋งŒ๋“ค๊ธฐ

์ด๋Ÿฌํ•œ ๋ณ€ํ™” ์†์—์„œ ๋ธ”๋กœ๊ทธ ์ƒ์กด ์ „๋žต์œผ๋กœ ๋– ์˜ค๋ฅด๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ, ๋ธ”๋กœ๊ทธ์— ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์š”์†Œ๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ๋„ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์ด ์•„๋‹๊ฐ€ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ๊ตฌํ˜„์ด ๊ฐ„ํŽธํ•˜๊ณ  ์„œ๋ฒ„ ๋ถ€๋‹ด๋„ ์ ์€ ์Œ์•… ์ž๋™ ์žฌ์ƒ ๊ธฐ๋Šฅ์€ ๋ฐฉ๋ฌธ์ž์˜ ์ฒด๋ฅ˜ ์‹œ๊ฐ„์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋Š˜๋ ค์ฃผ๋Š” ํšจ๊ณผ์ ์ธ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” SoundCloud API์™€ Intersection Observer๋ฅผ ํ™œ์šฉํ•˜์—ฌ, ์Šคํฌ๋กค ์œ„์น˜์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์Œ์•…์ด ์žฌ์ƒ๋˜๊ณ  ์ค‘๋‹จ๋˜๋Š” ์Šค๋งˆํŠธํ•œ ์˜ค๋””์˜ค ํ”Œ๋ ˆ์ด์–ด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž์„ธํžˆ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ, ์ •์ ์ธ ๋ธ”๋กœ๊ทธ๋ฅผ ๋„˜์–ด์„œ ๊ฐ์„ฑ์ ์ธ ๋™์  ๋ธ”๋กœ๊ทธ๋กœ ์ง„ํ™”ํ•  ์‹œ๊ฐ„์ž…๋‹ˆ๋‹ค.

SoundCloud ์†Œ๊ฐœ

SoundCloud๋Š” ์ „ ์„ธ๊ณ„ ์•„ํ‹ฐ์ŠคํŠธ์™€ ์ฒญ์ทจ์ž๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์„ธ๊ณ„ ์ตœ๋Œ€ ๊ทœ๋ชจ์˜ ์˜ค๋””์˜ค ํ”Œ๋žซํผ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. 2007๋…„ ๋…์ผ ๋ฒ ๋ฅผ๋ฆฐ์—์„œ ์„ค๋ฆฝ๋œ ์ด ํ”Œ๋žซํผ์€ ์Œ์•…์„ ์ œ์ž‘ํ•˜๊ณ  ๊ณต์œ ํ•˜๋Š” ์ฐฝ์ž‘์ž๋“ค์—๊ฒŒ ์—ด๋ฆฐ ๊ณต๊ฐ„์„ ์ œ๊ณตํ•˜๋ฉฐ, ๊ธฐ์„ฑ ์•„ํ‹ฐ์ŠคํŠธ๋ฟ ์•„๋‹ˆ๋ผ ์ธ๋”” ๋ฎค์ง€์…˜, DJ, ํŒŸ์บ์Šคํ„ฐ, ์˜ค๋””์˜ค ํฌ๋ฆฌ์—์ดํ„ฐ์—๊ฒŒ๋„ ํฐ ์‚ฌ๋ž‘์„ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ธ”๋กœ๊ทธ ์Œ์•… ์ž๋™ ์žฌ์ƒ๊ธฐ๋Šฅ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์Œ์•… ์ œ์ž‘์ž: ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๊ณก์„ ์—…๋กœ๋“œํ•˜๊ณ , ์ „ ์„ธ๊ณ„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ž์‹ ์˜ ์‚ฌ์šด๋“œ๋ฅผ ์•Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฒญ์ทจ์ž: ์ตœ์‹  ์œ ํ–‰ ์Œ์•…๋ถ€ํ„ฐ ๋งˆ์ด๋„ˆํ•œ ์ธ๋”” ํŠธ๋ž™๊นŒ์ง€ ๋‹ค์–‘ํ•œ ์˜ค๋””์˜ค ์ฝ˜ํ…์ธ ๋ฅผ ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ์œผ๋กœ ๊ฐ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ธ”๋กœ๊ฑฐ๋‚˜ ํฌ๋ฆฌ์—์ดํ„ฐ: ์˜ค๋””์˜ค ์ฝ˜ํ…์ธ ๋ฅผ ์›น์‚ฌ์ดํŠธ๋‚˜ ๋ธ”๋กœ๊ทธ์— ์‰ฝ๊ฒŒ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์–ด ๋ชฐ์ž…๊ฐ ์žˆ๋Š” ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•

  • ๋ฌด์ œํ•œ ์—…๋กœ๋“œ: ์œ ๋ฃŒ ์ด์šฉ ์‹œ ๊ฑฐ์˜ ๋ฌด์ œํ•œ์˜ ํŠธ๋ž™ ์—…๋กœ๋“œ ๊ฐ€๋Šฅ
  • ์ž„๋ฒ ๋“œ ๊ธฐ๋Šฅ: ์›น์‚ฌ์ดํŠธ๋‚˜ ๋ธ”๋กœ๊ทธ์— ํ”Œ๋ ˆ์ด์–ด ์‚ฝ์ž… ๊ฐ€๋Šฅ
  • ๋Œ“๊ธ€ ๊ธฐ๋Šฅ: ํŠน์ • ์‹œ๊ฐ„๋Œ€์— ๋Œ“๊ธ€์„ ๋‹ฌ ์ˆ˜ ์žˆ์–ด ์‹ค์‹œ๊ฐ„ ํ”ผ๋“œ๋ฐฑ ๊ฐ€๋Šฅ
  • ์ฒญ์ทจ ํ†ต๊ณ„ ์ œ๊ณต: ์žฌ์ƒ ํšŸ์ˆ˜, ์ข‹์•„์š”, ์ง€์—ญ๋ณ„ ์ฒญ์ทจ ๋ถ„์„ ๋“ฑ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ๋งˆ์ผ€ํŒ… ๊ฐ€๋Šฅ
  • ๋ชจ๋ฐ”์ผ ์•ฑ ์ œ๊ณต: iOS ๋ฐ Android ์•ฑ์œผ๋กœ ์–ธ์ œ ์–ด๋””์„œ๋‚˜ ์Œ์•… ์ œ์ž‘ ๋ฐ ์ฒญ์ทจ ๊ฐ€๋Šฅ

์ผ๋ฐ˜ ์ฒญ์ทจ์ž ๊ธฐ์ค€ ๋ฌด๋ฃŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๊ธฐ๋Šฅ ๋ฌด๋ฃŒ ์—ฌ๋ถ€ ์„ค๋ช…
์Œ์•… ์ŠคํŠธ๋ฆฌ๋ฐ ๊ฐ€๋Šฅ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๊ณก์„ ๋ฌด๋ฃŒ๋กœ ์ฒญ์ทจ ๊ฐ€๋Šฅ
๋ชจ๋ฐ”์ผ/์›น์•ฑ ์ด์šฉ ๊ฐ€๋Šฅ iOS, Android, ์›น ๋ชจ๋‘ ๋ฌด๋ฃŒ ์ด์šฉ ๊ฐ€๋Šฅ
ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ ๊ฐ€๋Šฅ ์ข‹์•„ํ•˜๋Š” ๊ณก๋“ค์„ ๋ชจ์•„ ํ”Œ๋ ˆ์ด๋ฆฌ์ŠคํŠธ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ
๋ธ”๋กœ๊ทธ์— ์ž„๋ฒ ๋“œ(์‚ฝ์ž…) ๊ฐ€๋Šฅ iframe ๋ฐฉ์‹์œผ๋กœ ์ž์œ ๋กญ๊ฒŒ ์‚ฝ์ž… ๊ฐ€๋Šฅ
๊ด‘๊ณ  ์—†์Œ ๋ถˆ๊ฐ€๋Šฅ ๋ฌด๋ฃŒ ๊ณ„์ •์€ ๊ด‘๊ณ ๊ฐ€ ํฌํ•จ๋จ

ํ•ต์‹ฌ ๊ธฐ๋Šฅ ์š”์•ฝ

  • SoundCloud API ๊ธฐ๋ฐ˜ ์Œ์•… ์žฌ์ƒ
  • ์Šคํฌ๋กค ์ง„์ž… ์‹œ ์ž๋™ ์žฌ์ƒ / ๋ฒ—์–ด๋‚˜๋ฉด ์ผ์‹œ์ •์ง€
  • ์ค‘๋ณต ๋กœ๋”ฉ ๋ฐฉ์ง€ ๋ฐ ์›น ์„ฑ๋Šฅ ์ตœ์ ํ™”
  • SEO ์นœํ™”์ ์ธ ๊ตฌ์กฐ ์œ ์ง€ (๋น„๋™๊ธฐ ๋ฐฉ์‹)

์™œ ์ด๋Ÿฐ ๋ฐฉ์‹์ด ํ•„์š”ํ•œ๊ฐ€์š”?

์Œ์•… ํ”Œ๋ ˆ์ด์–ด๋Š” ๋ฐฉ๋ฌธ์ž์˜ ๊ฐ์ •์— ๊ธ์ •์ ์ธ ์˜ํ–ฅ์„ ์ฃผ์ง€๋งŒ, ๋ฌด์กฐ๊ฑด ์ž๋™ ์žฌ์ƒ๋˜๋ฉด ์‚ฌ์šฉ์ž ๋ถˆํŽธ์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ํŽ˜์ด์ง€ ์ดˆ๊ธฐ ๋กœ๋”ฉ ์†๋„๋ฅผ ๋А๋ฆฌ๊ฒŒ ํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰์—”์ง„ ์ธ๋ฑ์‹ฑ์— ์•…์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ SEO ์ „๋žต์„ ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ๋ธ”๋กœ๊ทธ ์ œ์ž‘ํ•˜๊ธฐ

๋ฐฉ๋ฒ• ์„ค๋ช…
Intersection Observer ๋ทฐํฌํŠธ์— ํ•ด๋‹น ์š”์†Œ๊ฐ€ 70% ์ด์ƒ ๋“ค์–ด์˜ฌ ๋•Œ๋งŒ ์Œ์•… ์žฌ์ƒ
SoundCloud API ์•ˆ์ •์ ์ธ ์Œ์•… ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ ์ด๋ฒคํŠธ ์ œ์–ด
Lazy Load ๋ฐฉ์‹ ํŽ˜์ด์ง€ ํ•˜๋‹จ๊นŒ์ง€ ์Šคํฌ๋กคํ•  ๋•Œ์—๋งŒ ํ”Œ๋ ˆ์ด์–ด DOM ์‚ฝ์ž…
SEO ์ตœ์ ํ™” ํ”Œ๋ ˆ์ด์–ด๋Š” HTML <iframe>์œผ๋กœ ์‚ฝ์ž…๋˜๋ฉฐ ๊ฒ€์ƒ‰์—”์ง„ ํŒŒ์‹ฑ์— ๋ฐฉํ•ด๋˜์ง€ ์•Š์Œ

์ฝ”๋“œ ์„ค๋ช…๊ณผ ๊ตฌํ˜„

<div id="music"></div>
<!-- SoundCloud API ํ•„์ˆ˜ ๋กœ๋“œ -->
<script src="https://w.soundcloud.com/player/api.js"></script>

์ดํ›„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ IntersectionObserver๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ .music ์š”์†Œ๊ฐ€ ํ™”๋ฉด์— 70% ์ด์ƒ ๋ณด์ผ ๋•Œ๋งŒ SoundCloud iframe์„ ์ƒ์„ฑํ•˜๊ณ  ์ž๋™ ์žฌ์ƒํ•ฉ๋‹ˆ๋‹ค.

// DOMContentLoaded ์‹œ์ ์— ์‹คํ–‰
document.addEventListener('DOMContentLoaded', function() {
  ...
  const observer = new IntersectionObserver((entries) => {
      entries.forEach(entry => {
          if (entry.isIntersecting && entry.intersectionRatio >= 0.7) {
              // ๋ทฐํฌํŠธ ์•ˆ์— ์ถฉ๋ถ„ํžˆ ๋“ค์–ด์˜จ ๊ฒฝ์šฐ ์žฌ์ƒ
              if (!isPlayerCreated) {
                  createPlayer();
              } else if (widget) {
                  widget.play();
              }
          } else {
              // ๋ฒ—์–ด๋‚ฌ์„ ๋•Œ ์ •์ง€
              if (widget) {
                  widget.pause();
              }
          }
      });
  }, { threshold: 0.7 });
  ...
});

์œ„ ์ฝ”๋“œ ์ž‘๋™ ๋ฐฉ์‹ ์„ค๋ช…

  1. ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋˜๋ฉด #music ์š”์†Œ๋ฅผ ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค.
  2. ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ์š”์†Œ๊นŒ์ง€ ์Šคํฌ๋กคํ•˜๋ฉด iframe์„ ์ƒ์„ฑํ•˜์—ฌ SoundCloud ์˜ค๋””์˜ค๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.
  3. ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ค€๋น„๋˜๋ฉด ์ž๋™์œผ๋กœ ์Œ์•…์ด ์žฌ์ƒ๋ฉ๋‹ˆ๋‹ค.
  4. ์‚ฌ์šฉ์ž๊ฐ€ ์˜์—ญ์„ ๋ฒ—์–ด๋‚˜๋ฉด ์Œ์•…์€ ์ž๋™ ์ผ์‹œ์ •์ง€๋ฉ๋‹ˆ๋‹ค.

SoundCloud ์Œ์•… ์žฌ์ƒ ๋ฐฉ์‹ ์˜ˆ์‹œ

์•„๋ž˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๊ตฌ๊ฐ„์ด ์ž๋™์œผ๋กœ ์Œ์•…์ด ์žฌ์ƒ๋˜๋Š” ๊ตฌ๊ฐ„์ž…๋‹ˆ๋‹ค.

์ด ๊ตฌ๊ฐ„์—๋Š” SoundCloud ์Œ์•… ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋ฉฐ, ๋ฐฉ๋ฌธ์ž๊ฐ€ ์ด ์œ„์น˜๊นŒ์ง€ ์Šคํฌ๋กคํ•˜๋ฉด ์ž๋™์œผ๋กœ ์Œ์•…์ด ์žฌ์ƒ๋ฉ๋‹ˆ๋‹ค.
๋ฐ˜๋Œ€๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ์ด ์˜์—ญ์„ ๋ฒ—์–ด๋‚˜๋ฉด ์Œ์•… ์žฌ์ƒ์ด ์ž๋™์œผ๋กœ ์ผ์‹œ ์ •์ง€๋˜์–ด ์‚ฌ์ดํŠธ ์ด์šฉ์— ๋ฐฉํ•ด๊ฐ€ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ ๋ธ”๋กœ๊ทธ ํผํฌ๋จผ์Šค๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฐฉ๋ฌธ์ž์˜ ์ฒด๋ฅ˜ ์‹œ๊ฐ„์„ ๋Š˜๋ฆฌ๋Š” ๋ฐ ํšจ๊ณผ์ ์ด๋ฉฐ, ๋ชจ๋ฐ”์ผ ํ™˜๊ฒฝ์—์„œ๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์Œ์•…์žฌ์ƒ ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋…ธ์ถœ๋œ ์ง€์ ์— ์ฝ”๋“œ ์ ์šฉ

<div id="music"></div>

Souncloud ์‚ฌ์ดํŠธ ๋ฐฉ๋ฌธ ํ›„ ์›ํ•˜๋Š” ๊ณก์„ Share ๋ฒ„ํŠผ์œผ๋กœ ์ฝ”๋“œ ๋ณต์‚ฌ ํ›„ ์•„๋ž˜ ์ฝ”๋“œ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ์— ์ ์šฉํ•˜๊ธฐ ํž˜๋“ค ๊ฒฝ์šฐ ์•„๋ž˜ ์ฝ”๋“œ ๋ณ€ํ™˜๊ธฐ๋กœ ๋ณ€ํ™˜ ํ›„ ๋ณต์‚ฌํ•ด์„œ ๋ถ™์—ฌ ๋„ฃ์œผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ๋ธ”๋กœ๊ทธ ์‚ฌ์šด๋“œ ํ™œ์šฉ

์ „์ฒด ์ ์šฉ ์ฝ”๋“œ

์ƒ๋‹จ ์ž…๋ ฅ๋ž€์— ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•˜๋Š” ์Œ์•… ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•œ ํ›„ ‘๋ณ€๊ฒฝ’ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ž๋™์œผ๋กœ ์Œ์•…์ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

<div>
  <input type="text" id="soundcloudInput" style="width: 80%;" placeholder="SoundCloud ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”" />
  <button id="convertBtn">๋ณ€๊ฒฝ</button>
</div>

<div id="music" style="margin-top: 20px;"></div>

<script src="https://w.soundcloud.com/player/api.js"></script>
<script>
  document.addEventListener('DOMContentLoaded', function () {
    const musicDiv = document.getElementById('music');
    const input = document.getElementById('soundcloudInput');
    const btn = document.getElementById('convertBtn');
    let widget = null;
    let playerCreated = false;

    const defaultURL = 'https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/2090861070&auto_play=false&visual=true&buying=false&sharing=false';

    let lastURL = localStorage.getItem('soundcloudURL') || defaultURL;

    input.value = decodeURIComponent(getUrlParam(lastURL, 'url') || '');

    const observer = new IntersectionObserver(entries => {
      entries.forEach(entry => {
        if (entry.isIntersecting && entry.intersectionRatio >= 0.7) {
          if (!playerCreated) {
            createPlayer(lastURL);
          } else if (widget) {
            widget.play();
          }
        } else {
          if (widget) {
            widget.pause();
          }
        }
      });
    }, {
      threshold: 0.7,
      rootMargin: '0px 0px -100px 0px'
    });

    observer.observe(musicDiv);

    function createPlayer(url) {
      if (playerCreated) return;

      const iframe = document.createElement('iframe');
      iframe.id = 'sc-widget';
      iframe.width = '100%';
      iframe.height = '300';
      iframe.style.border = 'none';
      iframe.allow = 'autoplay';
      iframe.src = url;

      musicDiv.innerHTML = '';
      musicDiv.appendChild(iframe);

      playerCreated = true;

      const checkReady = setInterval(() => {
        if (typeof SC !== 'undefined') {
          clearInterval(checkReady);
          widget = SC.Widget(iframe);
          widget.bind(SC.Widget.Events.READY, function () {
            widget.play();
          });
          widget.bind(SC.Widget.Events.ERROR, function (e) {
            console.error('์žฌ์ƒ ์˜ค๋ฅ˜:', e);
          });
        }
      }, 100);
    }

    function getUrlParam(fullUrl, paramName) {
      try {
        const urlObj = new URL(fullUrl);
        return urlObj.searchParams.get(paramName);
      } catch {
        return null;
      }
    }

    btn.addEventListener('click', () => {
      const userInput = input.value.trim();
      if (!userInput) {
        alert('SoundCloud ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.');
        return;
      }

      fetch(`https://soundcloud.com/oembed?format=json&url=${encodeURIComponent(userInput)}`)
        .then(res => res.json())
        .then(data => {
          const parser = new DOMParser();
          const doc = parser.parseFromString(data.html, 'text/html');
          const iframe = doc.querySelector('iframe');
          if (iframe && iframe.src) {
            let newSrc = iframe.src
              .replace('&auto_play=true', '&auto_play=false')
              .replace('&show_comments=true', '&show_comments=false')
              .replace('&show_user=true', '&show_user=false')
              .replace('&show_reposts=true', '&show_reposts=false')
              .replace('&sharing=true', '&sharing=false');

            localStorage.setItem('soundcloudURL', newSrc);
            lastURL = newSrc;

            playerCreated = false;
            createPlayer(lastURL);
          } else {
            alert('์˜ฌ๋ฐ”๋ฅธ SoundCloud ์ฃผ์†Œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.');
          }
        })
        .catch(() => alert('์ฃผ์†Œ ์ •๋ณด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.'));
    });
  });
</script>

SEO์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์€?

  • ์ด ๋ฐฉ์‹์€ ๊ฒ€์ƒ‰์—”์ง„ ์ตœ์ ํ™”(SEO)์— ์ข€๋” ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.
  • ์Œ์•… ํ”Œ๋ ˆ์ด์–ด๋Š” JavaScript๋กœ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋ฏ€๋กœ, ํฌ๋กค๋Ÿฌ๊ฐ€ ์ฝ˜ํ…์ธ ์— ๋ฐฉํ•ด๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • <meta> ํƒœ๊ทธ, title, alt, ๊ตฌ์กฐํ™” ๋ฐ์ดํ„ฐ ๋“ฑ SEO์˜ ํ•ต์‹ฌ ์š”์†Œ์™€ ์ถฉ๋Œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ฐฉ๋ฌธ์ž๊ฐ€ ์„ ํƒ์ ์œผ๋กœ ๋“ค์„์ˆ˜ ์žˆ์–ด ์ ‘๊ทผ์„ฑ ๋ฌธ์ œ๋ฅผ ์ตœ์†Œํ™” ํ•ฉ๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ํŒ

  • ๋‹ค์–‘ํ•œ ์Œ์•…์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด SoundCloud์˜ ํŠธ๋ž™ ID๋งŒ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ์žฌ์ƒ ๋Œ€์‹  auto_play=false๋กœ ์„ค์ •ํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญํ•˜๋„๋ก ์œ ๋„ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹คํฌ ๋ชจ๋“œ ๋˜๋Š” ํ…Œ๋งˆ์™€์˜ ํ†ตํ•ฉ์„ ๊ณ ๋ คํ•˜์—ฌ visual=false๋กœ ์„ค์ •ํ•˜๋ฉด ๊น”๋”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SoundCloud์™€ Intersection Observer๋ฅผ ํ•จ๊ป˜ ํ™œ์šฉํ•˜๋ฉด, ์‚ฌ์šฉ์ž์˜ ํ–‰๋™์— ๋ฐ˜์‘ํ•˜๋Š” ์Šค๋งˆํŠธํ•œ ์Œ์•… ์žฌ์ƒ ๊ธฐ๋Šฅ์„ ์†์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ๋ธ”๋กœ๊ทธ์— ๋™์ ์ธ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์š”์†Œ๋ฅผ ๋”ํ•จ์œผ๋กœ์จ, ๋ฐฉ๋ฌธ์ž์—๊ฒŒ ๋”์šฑ ํ’๋ถ€ํ•˜๊ณ  ๊ฐ์„ฑ์ ์ธ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ์˜์—ญ๊นŒ์ง€ ์Šคํฌ๋กคํ–ˆ์„ ๋•Œ๋งŒ ์Œ์•…์ด ์ž๋™์œผ๋กœ ์žฌ์ƒ๋˜๊ณ , ํ™”๋ฉด์—์„œ ๋ฒ—์–ด๋‚˜๋ฉด ์ž๋™์œผ๋กœ ์ •์ง€๋˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์–ด ๋ถˆํ•„์š”ํ•œ ๋ฆฌ์†Œ์Šค ๋‚ญ๋น„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ ๋ฐฉ๋ฌธ์ž์˜ ์ฒด๋ฅ˜ ์‹œ๊ฐ„์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋Š˜๋ฆฌ๋Š” ๋ฐ ํšจ๊ณผ๊ฐ€ ์žˆ์œผ๋ฉฐ, ๋ธ”๋กœ๊ทธ ๋ธŒ๋žœ๋“œ์— ๋Œ€ํ•œ ์ธ์ƒ๋„ ๋”์šฑ ๊ธ์ •์ ์œผ๋กœ ํ˜•์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„๋‚˜ ๊ฒ€์ƒ‰ ์ตœ์ ํ™”(SEO)์— ๋ณ„๋‹ค๋ฅธ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ๋„ ์ •์  ๋ธ”๋กœ๊ทธ๋ฅผ ๋™์  ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์ฝ˜ํ…์ธ ๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.


1. AI ์‹œ๋Œ€์— ๋ธ”๋กœ๊ทธ ์ฝ˜ํ…์ธ ๋Š” ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”ํ•ด์•ผ ํ•˜๋‚˜์š”?

๋‹ต๋ณ€:
๋‹จ์ˆœ ์ •๋ณด ๋‚˜์—ดํ˜• ์ •์  ๋ธ”๋กœ๊ทธ๋Š” ๋ฐฉ๋ฌธ์ž์˜ ๊ด€์‹ฌ์„ ๋Œ๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. AI ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ ํ™˜๊ฒฝ์—์„œ๋Š” ์‚ฌ์šฉ์ž๋Š” ๊ณต๊ฐ๊ณผ ์ฒดํ—˜์„ ์œ ๋„ํ•˜๋Š” ๊ฐ์„ฑ์ ์ด๊ณ  ๋™์ ์ธ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์ฝ˜ํ…์ธ ๊ฐ€ ๋” ๋†’์€ ํ‰๊ฐ€๋ฅผ ๋ฐ›์œผ๋ฉฐ, ์‚ฌ์šฉ์ž๋Š” ์ •๋ณด๋ฅผ ์ฐพ๋Š” ๊ฒƒ์„ ๋„˜์–ด ์ฝ˜ํ…์ธ ๋ฅผ ๋А๋ผ๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


2. ๋ธ”๋กœ๊ทธ์— ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์š”์†Œ๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์–ด๋–ค ํšจ๊ณผ๊ฐ€ ์žˆ๋‚˜์š”?

๋‹ต๋ณ€:
์Œ์•… ์ž๋™ ์žฌ์ƒ ๊ฐ™์€ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ๊ธฐ๋Šฅ์€ ๋ฐฉ๋ฌธ์ž์˜ ์ฒด๋ฅ˜ ์‹œ๊ฐ„์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋Š˜๋ ค์ฃผ๊ณ , ๋ธ”๋กœ๊ทธ์˜ ๋ชฐ์ž…๊ฐ๊ณผ ๊ฐ์„ฑ์  ๊ฒฝํ—˜์„ ๊ฐ•ํ™”ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„ ๋ถ€๋‹ด์ด ์ ๊ณ  ๊ตฌํ˜„๋„ ์‰ฌ์›Œ์„œ ๋ธ”๋กœ๊ทธ ์ƒ์กด ์ „๋žต์œผ๋กœ ๊ฐ๊ด‘๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.


3. SoundCloud API์™€ Intersection Observer๋ฅผ ํ™œ์šฉํ•œ ์Œ์•… ์ž๋™ ์žฌ์ƒ์€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋‚˜์š”?

๋‹ต๋ณ€:
์Šคํฌ๋กค๋กœ ์Œ์•… ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ํ™”๋ฉด ๋‚ด 70% ์ด์ƒ ๋ณด์ผ ๋•Œ SoundCloud ์Œ์•…์ด ์ž๋™ ์žฌ์ƒ๋˜๊ณ , ๋ฒ—์–ด๋‚˜๋ฉด ์ž๋™์œผ๋กœ ์ผ์‹œ์ •์ง€๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฐฉ์‹์€ ์ค‘๋ณต ๋กœ๋”ฉ๊ณผ ์‚ฌ์šฉ์ž ๋ถˆํŽธ์„ ์ตœ์†Œํ™”ํ•˜๋ฉฐ, SEO์—๋„ ์•ˆ์ „ํ•œ ๊ตฌ์กฐ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.


4. ์ด๋Ÿฐ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์ ์šฉ์ด SEO์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

๋‹ต๋ณ€:
์Œ์•… ํ”Œ๋ ˆ์ด์–ด๋Š” JavaScript๋กœ ๋™์ ์œผ๋กœ ์‚ฝ์ž…๋˜์–ด ํฌ๋กค๋Ÿฌ๊ฐ€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ณ , SEO ํ•ต์‹ฌ ์š”์†Œ๋“ค๊ณผ ์ถฉ๋Œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„๋‚˜ ๊ฒ€์ƒ‰์—”์ง„ ์ธ๋ฑ์‹ฑ์— ๋ถ€์ •์  ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ๋„ ๋ฐฉ๋ฌธ์ž ๊ฒฝํ—˜์„ ๋†’์ด๋Š” ์ตœ์ ์˜ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

'IT > tech-resources' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋™์  ๋งํฌ ๋ฒ„ํŠผ,๋ธ”๋กœ๊ทธ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋งž์ถค ๋ฒ„ํŠผ ์ž๋™ ์ƒ์„ฑํ•˜๊ธฐ ,์ด์œ ๋ฒ„ํŠผ๋ชจ์Œ  (3) 2025.06.20
๋ฆฌ์ŠคํŠธ ์ฝ”๋“œ๋ณ€ํ™˜๊ธฐ ์‚ฌ์šฉํ•ด์„œ ๋ธ”๋กœ๊ทธ ์ฝ˜ํ…์ธ  ์ •๋ฆฌ ํ•˜๊ธฐ ,์ฃผ์ œ๋ณ„ ์ฝ˜ํ…์ธ  ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ  (0) 2025.06.20
๋ฐ”ํ† ์„ธ๋ผ ๊ฒŒ์ž„ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ• ๊ฐ€์ด๋“œ โ€“ BIOS ์„ค์ •๋ถ€ํ„ฐ ROM ์ถ”๊ฐ€๊นŒ์ง€ ํ•œ๋ฐฉ์—!  (2) 2025.06.07
๋ฌด๋ฃŒ ์ฝ”๋”ฉ, ์ดˆ๋ณด๋„ ํ•  ์ˆ˜ ์žˆ๋Š” ์˜จ๋ผ์ธ ๋ฌด๋ฃŒ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(๋ ˆํ”Œ๋ฆฟ) ํ™œ์šฉ ๋ฐฉ๋ฒ•  (4) 2025.05.29
์ค‘์†Œ๊ธฐ์—…์„ ์œ„ํ•œ AI ํ™œ์šฉ๊ณผ Huggingface ์‚ฌ์šฉ ๋ฐฉ๋ฒ•: ๊ฐ€์ž…๋ถ€ํ„ฐ ์‹ค์ „ ํ™œ์šฉ๋ฒ•๊นŒ์ง€  (2) 2025.05.26
์˜ค๋ž˜๋œ ์ปดํ“จํ„ฐยท๋…ธํŠธ๋ถยทTV Box๋กœ ์ถ”์–ต์˜ ์˜ค๋ฝ์‹ค ๊ฒŒ์ž„๊ธฐ ๋งŒ๋“ค๊ธฐ  (0) 2025.05.06
์›Œ๋“œํ”„๋ ˆ์Šค Human ํ…Œ๋งˆ AMP ๋ชจ๋ฐ”์ผ ๋ฉ”๋‰ด ํ† ๊ธ€ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•  (1) 2025.04.20