ํฐ์คํ ๋ฆฌ ๋ธ๋ก๊ทธ์ RSS ํ์ฉ ์ต์ ๊ธ ๋ชฉ๋ก ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ
๋ค๋ฅธ ๋ธ๋ก๊ทธ์ ์ต์ ๊ธ ๋ชฉ๋ก์ ๋ฉ์ธ ํ๋ฉด์ ํ์ํ์ง ์์ผ๋ฉด ๋ฐฉ๋ฌธ์ ์ฒด๋ฅ ์๊ฐ๊ณผ ๋ด๋ถ ๋งํฌ ํจ์จ์ด ๋ฎ์ ๊ฒ์์์ง ํ๊ฐ๊ฐ ๋จ์ด์ง์ง๋ง, RSS ๊ธฐ๋ฐ ์๋ ๋ก๋ฉ๊ณผ ์คํจ ์ต์ ํ๋ก ์ฒด๋ฅ ์๊ฐ ์ฆ๊ฐ์ ํฌ๋กค๋ง ํจ์จ ๊ฐ์ ์ ๋์์ ๋ฌ์ฑํ ์ ์์ต๋๋ค.
์ต์ ๊ธ ๋ชฉ๋ก์ ํตํ ์ฌ์ฉ์ ๊ฒฝํ(UX) ๊ฐ์ ๊ณผ ๊ฒ์์์ง ํ๊ฐ ์์น
๋ค๋ฅธ ๋ธ๋ก๊ทธ์ ์ต์ ๊ธ ๋ชฉ๋ก์ ๋ถ๋ฌ์์๋ธ๋ก๊ทธ์ ๋ฉ์ธ ํ๋ฉด์ ๊พธ๋ฏธ๋ ๋ฐฉ๋ฒ์ ์น์ฌ์ดํธ์ ํ์ ์ฉ์ด์ฑ์ ๋์ด๋ ์ค์ํ ์ ๋ต์ ๋๋ค. ํนํ ์ด๋ฏธ์ง, ๋์์, ์ต๊ทผ ๊ธ ๋ชฉ๋ก ๋ฑ์ ํตํด ๋ธ๋ก๊ทธ๋ฅผ ๋์ฑ ํ์ฑ ๋ค์ฑ๋กญ๊ฒ ๊พธ๋ฐ ์ ์์ต๋๋ค. ๋ค๋ฅธ ์ฌ์ดํธ๋ ์๋ธ ๋ธ๋ก๊ทธ์ ์ต์ ๊ธ ๋ชฉ๋ก์ ํ์ํด ์ฃผ๋ฉด ๋ฐฉ๋ฌธ์๊ฐ ์ฝ๊ฒ ๋ค๋ฅธ ๋ธ๋ก๊ทธ๋ก ์๋ด๋ฅผ ํด์ค ์ ์์ต๋๋ค. ์ด๋ ๋ฐฉ๋ฌธ์์ ์ฒด๋ฅ ์๊ฐ์ ๋๋ ค์ค ์ ์๊ณ ๋๋ถ์ด ๋ฐฑ๋งํฌ์ ํจ๊ณผ๋ ๋ณผ ์ ์์ด ๊ฒ์์์ง ํ๊ฐ๋ฅผ ๋์ด๋ ๋ฐ ํฐ ๋์์ด ๋ฉ๋๋ค.
์๋ ๋ด์ฉ์ ์ฝ๊ฒ ํฐ์คํ ๋ฆฌ ๋ธ๋ก๊ทธ ๊ธฐ๋ณธ ์คํจ์ ํ์ฉํด์ ๋ค๋ฅธ ์ฌ์ดํธ๋ ๋ธ๋ก๊ทธ์ ์ต์ ๊ธ ๋ชฉ๋ก์ ํ์ํด ์ฃผ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ํฐ์คํ ๋ฆฌ SEO ์ต์ ํ์ ํ ๋ถ๋ถ์ผ๋ก, ๋ด๋ถ ๋งํฌ ๊ตฌ์กฐ๋ฅผ ๊ฐํํ๊ณ ํฌ๋กค๋ง ํจ์จ์ ๊ฐ์ ํฉ๋๋ค.
ํฐ์คํ ๋ฆฌ ๋ฉ์ธ ๋ฆฌ์คํธ ๊พธ๋ฏธ๊ธฐ: RSS ํ์ฉ ์ ๋ต
๋ค๋ฅธ ๋ธ๋ก๊ทธ ๋๋ ์ฌ์ดํธ์ RSS ์ ๋ณด๋ฅผ ์ด์ฉํด์ ๊ฐ๋จํ๊ฒ ๋ฉ์ธ ํ๋ฉด์ ๊พธ๋ฐ ์ ์์ต๋๋ค. RSS๋ ๊ฒ์์์ง์ด ์ฝํ ์ธ ๋ฅผ ์์ธ ์ํ๋ก ๊ฐ์ ธ๊ฐ๋ ๋ฐ ๋์์ ์ฃผ๋ ์ค์ํ ํผ๋์ ๋๋ค. ์๋๋ ๊ธฐ์กด์ ํฐ์คํ ๋ฆฌ BOOK ์คํจ์ ๊ธฐ๋ณธ ๋ฆฌ์คํธ ์ฝ๋๋ฅผ ํ์ฉํด์ ์ ๋ชฉ๊ณผ ๊ธ๋ด์ฉ, ๊ธ ๋ ์ง๋ฅผ ๋ฉ์ธ ํ๋ฉด์ ์ต์ ๊ธ ๋ชฉ๋ก ํํ๋ก ๋ ธ์ถ์ํฌ ์ ์์ต๋๋ค.

RSS ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ ๋์ ๋ก๋ฉ ์ฝ๋ ๋ถ์
ํ ์ปค๋ฒ ๊ธฐ๋ณธ ๋ฆฌ์คํธ ๊ธฐ๋ณธ ์ฝ๋ (Before)
ํฐ์คํ ๋ฆฌ ์คํจ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๊ธฐ๋ณธ ๋ฆฌ์คํธ HTML ์ฝ๋์ ๋๋ค. ์ด ์ฝ๋๋ฅผ ์๋์ RSS ๊ธฐ๋ฐ ์ฝ๋๋ก ๋์ฒดํ์ฌ ์ต์ ์ ๋ณด ๋ ธ์ถ์ ์๋ํํ ์ ์์ต๋๋ค.
s_cover name='cover-list'
div class="cover-list"
h2/h2
ul
s_cover_item
li
a href=""
span class="title"/span span class="excerpt"/span s_cover_item_article_info
span class="date"/span /s_cover_item_article_info
/a
/li
/s_cover_item
/ul
/div
/s_cover
ํ ์ปค๋ฒ ๊ธฐ๋ณธ ๋ฆฌ์คํธ ์์ ์ฝ๋ (After - RSS ์ ์ฉ)
ํฐ์คํ ๋ฆฌ ๊ธฐ๋ณธ ์คํจ์ ๋ณ๊ฒฝํด์ ์๋ ์ฝ๋๋ก ์ฌ์ฉํฉ๋๋ค. ์ด ์ฝ๋๋ JavaScript์ ์ฐ๋ํ์ฌ RSS ์ ๋ณด๋ฅผ ์ด์ฉํด ๊ธฐ๋ณธ ๋ฆฌ์คํธ ํํ๋ก ์ถ๋ ฅํด ์ค๋๋ค.
s_cover name='cover-list'
div class="cover-list"
ul id="cover-items"
/ul
/div
/s_cover
ํ ์ปค๋ฒ ๊ธฐ๋ณธ ๋ฆฌ์คํธ RSS ์คํฌ๋ฆฝํธ ์ฝ๋
์ด ์ฝ๋๋ RSS ์ฃผ์๋ฅผ ํตํด ๋ค๋ฅธ ์ฌ์ดํธ๋ ๋ธ๋ก๊ทธ์ ์ต์ ๊ธ์ ์๋์ผ๋ก ๋ถ๋ฌ์ค๋ JavaScript์
๋๋ค. rssUrl์ ์์ ํ์ฌ ์ํ๋ ๋ธ๋ก๊ทธ์ ์ต์ ๊ธ ๋ชฉ๋ก์ ํ์ํ ์ ์์ต๋๋ค. defer ๋ฐ async ์์ฑ์ ํ์ด์ง ๋ก๋ฉ ์๋์ ์ํฅ์ ์ต์ํํ์ฌ ๋
ธ์ถ ์์์ ๊ธ์ ์ ์ธ ์ํฅ์ ์ค๋๋ค.
script defer="defer"
async function fetchRSS() {
const rssUrl = 'https://api.rss2json.com/v1/api.json?rss_url=https://everydayhub.tistory.com/rss';
try {
const response = await fetch(rssUrl);
const { items } = await response.json();
const coverItemsList = document.getElementById('cover-items');
const limitedItems = items.slice(0, 5);
limitedItems.forEach(item = {
const coverItem = document.createElement('div');
coverItem.className = 'cover-item';
const listItem = document.createElement('li');
const link = document.createElement('a');
link.href = item.link;
link.target = '_blank';
const titleDiv = document.createElement('div');
titleDiv.className = 'title';
titleDiv.innerHTML = item.title;
const excerptDiv = document.createElement('div');
excerptDiv.className = 'excerpt';
excerptDiv.innerHTML = item.description;
if (excerptDiv.innerHTML.length 200) {
excerptDiv.innerHTML = excerptDiv.innerHTML.substring(0, 200) + '...';
}
const dateDiv = document.createElement('div');
dateDiv.className = 'date';
dateDiv.innerHTML = new Date(item.pubDate).toLocaleDateString();
const articleInfo = document.createElement('div');
articleInfo.className = 'article-info';
const dateSpan = document.createElement('span');
dateSpan.appendChild(dateDiv);
articleInfo.appendChild(dateSpan);
link.appendChild(titleDiv);
link.appendChild(excerptDiv);
link.appendChild(articleInfo);
listItem.appendChild(link);
coverItem.appendChild(listItem);
coverItemsList.appendChild(coverItem);
});
} catch (error) {
console.error('RSS ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ค ์ค๋ฅ ๋ฐ์:', error);
}
}
fetchRSS();
/script
์ต์ ๊ธ ๋ชฉ๋ก ๋ก๋ฉ ๋ฐฉ์๋ณ SEO ์ฑ๋ฅ ์ํฅ ๋น๊ต
| ๋ก๋ฉ ๋ฐฉ์ | SEO ์ ๊ฒ ํญ๋ชฉ | ์ฒด๋ฅ ์๊ฐ ๊ธฐ์ฌ๋ | ํฌ๋กค๋ง ํจ์จ |
|---|---|---|---|
| RSS ๋์ ๋ก๋ฉ (JS) | ๋ด๋ถ ๋งํฌ ์ฆ๊ฐ | ๋์ (๋ค๋ฅธ ์ฝํ ์ธ ๋ก ์ ๋) | ์ค๊ฐ (JS ๋ ๋๋ง ํ ํ์ ) |
| ์ ์ HTML ๋งํฌ | ํ ์คํธ ๊ธฐ๋ฐ ๋งํฌ ๊ตฌ์กฐ | ๋ณดํต | ๋์ (์ฆ์ ์์ธ ์ํ ํ์ ๊ฐ๋ฅ) |
| ํฐ์คํ ๋ฆฌ ๊ธฐ๋ณธ ์ปค๋ฒ | ํ๋ซํผ ์ ๊ณต ๊ธฐ๋ณธ ๊ธฐ๋ฅ | ๋์ (์ฌ์ดํธ ๊ตฌ์กฐ ์ ํํ) | ๋์ (๊ฒ์์์ง ์นํ์ ๊ตฌ์กฐ) |
ํ ์ปค๋ฒ ์คํจ์ ๊ธฐ๋ณธ ๋ฆฌ์คํธ CSS (UX ์ต์ ํ)
ํฐ์คํ ๋ฆฌ ๊ธฐ๋ณธ ๋ฆฌ์คํธ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ CSS์ ๋๋ค. ์ด ์คํ์ผ์ ์์ ํ๊ฑฐ๋ ๋ณ๊ฒฝํ์ฌ ์ฌ์ฉ์ ๊ฒฝํ(UX)์ ๊ฐ์ ํ๋ฉด ์ดํ๋ฅ ์ ๋ฎ์ถ๊ณ ๊ฒ์์์ง ํ๊ฐ๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
.cover-list {
position: relative;
overflow: hidden;
width: 100%;
margin-bottom: 42px;
}
.cover-list h2 {
margin-bottom: 35px;
padding-bottom: 19px;
border-bottom: 1px solid #eee;
font-weight: 500;
font-size: 1em;
color: #555;
}
.cover-list ul li {
overflow: hidden;
margin-bottom: 33px;
}
.cover-list ul li a {
display: block;
text-decoration: none;
}
.cover-list ul li .title {
display: block;
overflow: hidden;
max-width: 95%;
margin-bottom: 6px;
text-overflow: ellipsis;
white-space: nowrap;
font-size: 1.25em;
line-height: 1.4;
}
.cover-list ul li .excerpt {
display: block;
overflow: hidden;
max-width: 95%;
margin-bottom: 18px;
text-overflow: ellipsis;
font-size: 0.875em;
line-height: 1.5rem;
color: #999;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
}
.cover-list ul li .date {
display: block;
font-size: 0.75em;
color: #999;
}
Q1. ํฐ์คํ ๋ฆฌ ๋ธ๋ก๊ทธ์ ๋ค๋ฅธ ๋ธ๋ก๊ทธ ์ต์ ๊ธ ๋ชฉ๋ก์ ํ์ํ๋ฉด SEO์ ์ด๋ค ๊ธ์ ์ ํจ๊ณผ๊ฐ ์๋์?
A. ๋ด๋ถ ๋งํฌ ๊ตฌ์กฐ๊ฐ ๊ฐํ๋์ด ํฌ๋กค๋ง ํจ์จ์ด ๋์์ง๊ณ , ๋ฐฉ๋ฌธ์๊ฐ ์ฐ๊ด ์ฝํ ์ธ ๋ก ์ฝ๊ฒ ์ด๋ํ ์ ์์ด ์ฒด๋ฅ ์๊ฐ๊ณผ ํ์ด์ง ๋ทฐ๊ฐ ์ฆ๊ฐํฉ๋๋ค. ์ด๋ ๊ฒ์์์ง ํ๊ฐ์ ๋ ธ์ถ ์์์ ๊ธ์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
Q2. RSS ์ต์ ๊ธ ๋ชฉ๋ก์ ๋์ ์ผ๋ก ๋ก๋ฉํ ๋ ํ์ด์ง ๋ก๋ฉ ์๋์ ๋ฌธ์ ๊ฐ ์๊ธฐ์ง ์๋์?
A. JavaScript๋ฅผ ์ฌ์ฉํ์ฌ ๋์ ์ผ๋ก ๋ก๋ฉํ ๋ defer ๋๋ async ์์ฑ์ ์ฌ์ฉํ์ฌ ์คํฌ๋ฆฝํธ ์คํ์ ์ง์ฐ์ํค๋ฉด, ๋ฉ์ธ ์ฝํ ์ธ ์ LCP(Largest Contentful Paint)์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํ ์ ์์ต๋๋ค. ๊ธฐ์ ์ SEO ์ ๊ฒ์ ํตํด ๋ก๋ฉ ์ต์ ํ๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค.
Q3. RSS ์ฃผ์๋ฅผ ํตํด ๋ถ๋ฌ์จ ๋ชฉ๋ก์ด ๋ฐฑ๋งํฌ ํจ๊ณผ๋ฅผ ์ฃผ์ด ๋ ธ์ถ ์์๋ฅผ ๋์ผ ์ ์๋์?
A. ๋ค. ๋ค๋ฅธ ์ฌ์ดํธ์ ์ต์ ๊ธ ๋ชฉ๋ก์ ๋ถ๋ฌ์ ๋งํฌ๋ฅผ ๊ฑฐ๋ ๊ฒ์ ๋ฐฑ๋งํฌ์ ์ ์ฌํ ๋ด๋ถ ๋งํฌ ์ญํ ์ ํ๋ฉฐ, ์ฃผ์ ์ฐ๊ด์ฑ์ ๋์ผ์ ์์ต๋๋ค.