Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

loopback-social/community-network-banner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

136 Commits

Repository files navigation

community-network-banner

๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด | ๐Ÿ‡บ๐Ÿ‡ธ English

Loopback Social ๋ฐฐ๋„ˆ ๋ฆฌํฌ์ง€ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค.

์†Œ๊ฐœ

Loopback Social์€ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฐ„์˜ ์—ฐ๋Œ€์™€ ์—ฐํ•ฉ์„ ์œ„ํ•œ ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

์ด ์›น์‚ฌ์ดํŠธ์—์„œ ์ปค๋ฎค๋‹ˆํ‹ฐ ์šด์˜์ž๋Š” ๊ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ์ƒ๋‹จ์— ๋ถ€์ฐฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒ€์€์ƒ‰ ๋  ๋ฐฐ๋„ˆ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฐ๋„ˆ์—๋Š” ์บ ํŽ˜์ธ์— ๋™์ฐธํ•˜๋Š” ๋‹ค๋ฅธ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ด๋ฆ„์ด ํ•จ๊ป˜ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

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

์ด ํ”„๋กœ์ ํŠธ๋ฅผ ํ†ตํ•ด ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฐ„์˜ ์—ฐ๊ฒฐ์„ ์ƒ์ง•ํ•˜๊ณ , ํ•จ๊ป˜ํ•˜๋Š” ์บ ํŽ˜์ธ์œผ๋กœ์„œ ์šด์˜ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

Step 1. ์„ค์น˜ํ•˜๊ธฐ

์›น์‚ฌ์ดํŠธ์— ์—ฐ๋Œ€ ๋ฐฐ๋„ˆ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ํ•œ ์ค„์˜ ์ฝ”๋“œ๋ฅผ HTML ํŒŒ์ผ์˜ </body> ํƒœ๊ทธ ๋ฐ”๋กœ ์•ž์— ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

<script src="https://loopback.social/banner.js" defer></script>

๋ฐฐ๋„ˆ ์˜ต์…˜

data-color ์†์„ฑ์œผ๋กœ ๋ฐฐ๋„ˆ ๋ฐฐ๊ฒฝ์ƒ‰์„, data-textcolor ์†์„ฑ์œผ๋กœ ํ…์ŠคํŠธ ์ƒ‰์ƒ์„, data-lang ์†์„ฑ์œผ๋กœ ํ‘œ์‹œ ์–ธ์–ด๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์†์„ฑ ์„ค๋ช… ๊ธฐ๋ณธ๊ฐ’ ์˜ˆ์‹œ
data-color ๋ฐฐ๋„ˆ ๋ฐฐ๊ฒฝ์ƒ‰ (16์ง„์ˆ˜) #000000 #005a9c
data-textcolor ๋ฐฐ๋„ˆ ํ…์ŠคํŠธ/๋งํฌ ์ƒ‰์ƒ (16์ง„์ˆ˜) #ffffff #f0f0f0
data-lang ํ‘œ์‹œ ์–ธ์–ด (auto, ko, en) auto ko
<script src="https://loopback.social/banner.js" data-color="#005a9c" data-textcolor="#ffffff" data-lang="en" defer></script>

data-lang์ด auto์ด๋ฉด ํŽ˜์ด์ง€์˜ lang ์†์„ฑ์ด๋‚˜ URL์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž๋™ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค.

Step 2. ์ฐธ์—ฌํ•˜๊ธฐ

์„ ์ˆ˜ ์กฐ๊ฑด: Step 1์˜ ๋ฐฐ๋„ˆ ์„ค์น˜

์ด ๋‹จ๊ณ„์˜ ๋ชจ๋“  ์˜ต์…˜์€ Step 1. ์„ค์น˜ํ•˜๊ธฐ์— ๋”ฐ๋ผ ์šด์˜ํ•˜์‹œ๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ ์‚ฌ์ดํŠธ ์ƒ๋‹จ์— ๋ฐฐ๋„ˆ๋ฅผ ๋จผ์ € ์„ค์น˜ํ•œ ๋’ค ์ง„ํ–‰ํ•ด์ฃผ์„ธ์š”. ๋ฐฐ๋„ˆ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์†Œ์‹์ด ์šฐ๋ฆฌ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐฉ๋ฌธ์ž์—๊ฒŒ ๋…ธ์ถœ๋˜์ง€ ์•Š๊ณ , ๋„คํŠธ์›Œํฌ์˜ ์—ฐ๊ฒฐ๋„ ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์ด๋ค„์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ต์…˜ 1 (๊ถŒ์žฅ): ์ž๋™ ํ”ผ๋“œ ์šด์˜

์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์šด์˜ํ•˜์‹œ๋Š” ๋„๋ฉ”์ธ์— news.json ํ˜•์‹์˜ ํŒŒ์ผ์„ ํ˜ธ์ŠคํŒ…ํ•˜์‹œ๊ณ , ์ปค๋ฎค๋‹ˆํ‹ฐ ๋“ฑ์žฌ ์ด์Šˆ์— ํ•ด๋‹น URL์„ ํ•จ๊ป˜ ์ œ์ถœํ•ด์ฃผ์„ธ์š”. ๋“ฑ์žฌ๊ฐ€ ๋จธ์ง€๋˜๋ฉด Loopback Social ๋ด‡์ด 6์‹œ๊ฐ„๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์™€ ๋ฐฐ๋„ˆ์™€ ๊ณต์šฉ ํ”ผ๋“œ(RSS/Atom/JSON/iCal)์— ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„์—๋Š” ํ˜ธ์ŠคํŒ…ํ•˜์‹  ํŒŒ์ผ๋งŒ ๊ฐฑ์‹ ํ•˜์‹œ๋ฉด ๋‹ค์Œ ์‚ฌ์ดํด์— ๋ฐ˜์˜๋˜์–ด, ๋งค๋ฒˆ PR์„ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฐฐ๋„ˆ์—๋Š” [์ปค๋ฎค๋‹ˆํ‹ฐ ์ด๋ฆ„] ๋ฉ”์‹œ์ง€ ํ˜•ํƒœ๋กœ ์ถœ์ฒ˜๊ฐ€ ํ•ญ์ƒ ๋ช…์‹œ๋ฉ๋‹ˆ๋‹ค.

ํ˜ธ์ŠคํŒ… ์š”๊ตฌ์‚ฌํ•ญยท์„ ํƒ ๊ทœ์น™ยท๊ฐฑ์‹  ์ฃผ๊ธฐยท์žฅ์•  ๋Œ€์‘ ๋“ฑ ์šด์˜์ž๊ฐ€ ์•Œ์•„์•ผ ํ•  ์ƒ์„ธ ๋ช…์„ธ๋Š” ๋ณ„๋„ ํŽ˜์ด์ง€์— ์ •๋ฆฌํ•ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค โ€” ๋„คํŠธ์›Œํฌ ํ”ผ๋“œ ํ˜ธ์ŠคํŒ… ๋ช…์„ธ (๊ณต๊ฐœ URL)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์˜ต์…˜ 2: ์ˆ˜๋™ ํ”ผ๋“œ ์ถ”๊ฐ€

์ž๋™ ๊ฒŒ์‹œ ํ™˜๊ฒฝ์„ ์šด์˜ํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋ฉด, ์ข…์ „ ๋ฐฉ์‹๋Œ€๋กœ ํ•ญ๋ชฉ ๋‹จ์œ„ ์ œ๋ณด๋กœ๋„ ๊ณ„์† ์ฐธ์—ฌ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  1. ์ปค๋ฎค๋‹ˆํ‹ฐ ๋“ฑ์žฌ ์ด์Šˆ์— ์ปค๋ฎค๋‹ˆํ‹ฐ ์ •๋ณด๋ฅผ ์ œ์ถœ (๋„คํŠธ์›Œํฌ URL ์นธ์€ ๋น„์›Œ๋‘์„ธ์š”).
  2. ์†Œ์‹์ด ์ƒ๊ธธ ๋•Œ๋งˆ๋‹ค ๋‰ด์Šค ์ œ๋ณด ๋“ฑ์žฌ ์ด์Šˆ๋ฅผ ์ œ์ถœํ•˜๊ฑฐ๋‚˜ docs/news.json์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” PR์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.
  3. ์šด์˜์ž๊ฐ€ ๊ฒ€ํ† ยท๋จธ์ง€ํ•˜๋ฉด ๋‹ค์Œ ์‚ฌ์ดํด์— ๋ฐฐ๋„ˆ์™€ ๊ณต์šฉ ํ”ผ๋“œ์— ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.

Loopback Social ์šด์˜์ง„์ด ํ๋ ˆ์ด์…˜ํ•ด ๊ฐ•์กฐํ•˜๊ณ  ์‹ถ์€ ์†Œ์‹๋„ ์ด ๊ฒฝ๋กœ๋กœ ์ง์ ‘ ๋“ฑ์žฌ๋ฉ๋‹ˆ๋‹ค.

๋‰ด์Šค ๋“ฑ๋ก ๊ฐ€์ด๋“œ (news.json)

๋ฐฐ๋„ˆ ํ•˜๋‹จ ๋‰ด์Šค ํ‹ฐ์ปค์— ํ‘œ์‹œํ•  ํ•ญ๋ชฉ์€ docs/news.json ํŒŒ์ผ์— ์•„๋ž˜ ํ˜•์‹์œผ๋กœ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

ํ•ญ๋ชฉ ํ˜•์‹

{
 "start": "YYYY-MM-DD HH:mm:ss",
 "end": "YYYY-MM-DD HH:mm:ss",
 "timezone": "+09:00",
 "message": {
 "ko": "ํ•œ๊ตญ์–ด ๋ฉ”์‹œ์ง€",
 "en": "English message"
 },
 "link": "https://example.com",
 "display": true
}

ํ•„๋“œ ์„ค๋ช…

ํ•„๋“œ ํ•„์ˆ˜ ์„ค๋ช…
start โœ… ๋ฐฐ๋„ˆ ํ‘œ์‹œ ์‹œ์ž‘ ์ผ์‹œ (YYYY-MM-DD HH:mm:ss)
end โœ… ๋ฐฐ๋„ˆ ํ‘œ์‹œ ์ข…๋ฃŒ ์ผ์‹œ (YYYY-MM-DD HH:mm:ss)
timezone โŒ ์‹œ๊ฐ„๋Œ€. ์ƒ๋žต ์‹œ UTC. ์˜คํ”„์…‹("+09:00") ๋˜๋Š” IANA ์ด๋ฆ„("Asia/Seoul") ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅ (๋Œ€์†Œ๋ฌธ์ž ๋ฌด๊ด€)
event_start โŒ ์‹ค์ œ ์ด๋ฒคํŠธ ์‹œ์ž‘ ์ผ์‹œ. ์บ˜๋ฆฐ๋”(news.ics)์™€ Schema.org Event ๋ฐ์ดํ„ฐ์— ์‚ฌ์šฉ. ์ƒ๋žต ์‹œ start ์‚ฌ์šฉ
event_end โŒ ์‹ค์ œ ์ด๋ฒคํŠธ ์ข…๋ฃŒ ์ผ์‹œ. ์ƒ๋žต ์‹œ end ์‚ฌ์šฉ
category โŒ event / campaign / release / recruit / announcement ์ค‘ ํ•˜๋‚˜. event๋กœ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ event_start๋ฅผ ํ•จ๊ป˜ ๋„ฃ์œผ๋ฉด ์บ˜๋ฆฐ๋”์— ์ •ํ™•ํžˆ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค
location โŒ ์‚ฌ๋žŒ์ด ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์žฅ์†Œ ์ด๋ฆ„. ์บ˜๋ฆฐ๋” LOCATION๊ณผ Schema.org Event.location.name์— ์‚ฌ์šฉ
message โœ… ํ‘œ์‹œํ•  ๋ฉ”์‹œ์ง€. ๋ฌธ์ž์—ด ๋˜๋Š” {"ko": "...", "en": "..."} ํ˜•ํƒœ์˜ ๋‹ค๊ตญ์–ด ๊ฐ์ฒด
link โŒ ํด๋ฆญ ์‹œ ์ด๋™ํ•  URL. ๋ฌธ์ž์—ด ๋˜๋Š” {"ko": "...", "en": "..."} ํ˜•ํƒœ์˜ ๋‹ค๊ตญ์–ด ๊ฐ์ฒด
display โœ… ํ‘œ์‹œ ์—ฌ๋ถ€. true, "true", "yes", "1" ๋ชจ๋‘ ํ™œ์„ฑ์œผ๋กœ ์ธ์‹
id โŒ RSS GUID/iCalendar UID๋กœ ์“ฐ์ผ ๊ณ ์œ  ์‹๋ณ„์ž. ์ƒ๋žต ์‹œ ๋ฉ”์‹œ์ง€+์‹œ์ž‘ ์‹œ๊ฐ์œผ๋กœ ์ž๋™ ์ƒ์„ฑ

์˜ˆ์‹œ 1 โ€” ๋‹จ์ˆœ ๊ณต์ง€ (๋ฐฐ๋„ˆ๋งŒ)

{
 "start": "2026ๅนด03ๆœˆ01ๆ—ฅ 00:00:00",
 "end": "2026ๅนด03ๆœˆ31ๆ—ฅ 23:59:59",
 "timezone": "Asia/Seoul",
 "message": {
 "ko": "3์›” ๋ฐ‹์—…์— ์ฐธ์—ฌํ•˜์„ธ์š”!",
 "en": "Join our March meetup!"
 },
 "link": {
 "ko": "https://example.com/ko",
 "en": "https://example.com/en"
 },
 "display": true
}

์˜ˆ์‹œ 2 โ€” ์ด๋ฒคํŠธ (์บ˜๋ฆฐ๋”์— ์ •ํ™•ํžˆ ๋ฐ˜์˜)

3์›” 1์ผ๋ถ€ํ„ฐ 14์ผ๊นŒ์ง€ ๋ฐฐ๋„ˆ์— ๋…ธ์ถœ๋˜์ง€๋งŒ, ์‹ค์ œ ํ–‰์‚ฌ๋Š” 3์›” 14์ผ 14:00โ€“17:00์— ์—ด๋ฆฌ๋Š” ๊ฒฝ์šฐ. categoryยทevent_startยทevent_endยทlocation์„ ํ•จ๊ป˜ ์ง€์ •ํ•˜๋ฉด news.ics์™€ events.jsonld์— ์ •ํ™•ํ•œ ์‹œ๊ฐ๊ณผ ์žฅ์†Œ๋กœ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.

{
 "start": "2026ๅนด03ๆœˆ01ๆ—ฅ 00:00:00",
 "end": "2026ๅนด03ๆœˆ14ๆ—ฅ 17:00:00",
 "timezone": "Asia/Seoul",
 "event_start": "2026ๅนด03ๆœˆ14ๆ—ฅ 14:00:00",
 "event_end": "2026ๅนด03ๆœˆ14ๆ—ฅ 17:00:00",
 "category": "event",
 "location": "์„œ์šธ ๊ฐ•๋‚จ",
 "message": {
 "ko": "3์›” ์ •๊ธฐ ๋ฐ‹์—…",
 "en": "March Regular Meetup"
 },
 "link": "https://example.com/march-meetup",
 "display": true
}

์ฐธ๊ณ : linkยทmessageยทlocation์€ ๋‹จ์ผ ๋ฌธ์ž์—ด๋กœ๋„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๊ฒฝ์šฐ ๋ชจ๋“  ์–ธ์–ด์— ๋™์ผํ•œ ๊ฐ’์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

ํ”ผ๋“œ ๋ฐ AI ์นœํ™”์  ์—”๋“œํฌ์ธํŠธ

docs/news.json๊ณผ docs/communities.json์ด ๋ฐ”๋€” ๋•Œ๋งˆ๋‹ค GitHub Actions๊ฐ€ ๋‹ค์Œ ํŒŒ์ผ์„ ์ž๋™์œผ๋กœ ๋‹ค์‹œ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋‘ https://loopback.social/ ์•„๋ž˜์— ์ •์ ์œผ๋กœ ์„œ๋น™๋ฉ๋‹ˆ๋‹ค.

๋‹ค๊ตญ์–ด ๋ณ€ํ˜•

ํ”ผ๋“œ ํ˜•์‹๋ณ„๋กœ ์„ธ ๊ฐ€์ง€ ๋ณ€ํ˜•์„ ๋ฐœํ–‰ํ•ฉ๋‹ˆ๋‹ค:

  • ์ด์ค‘ ์–ธ์–ด (feed.xml, news.ics, ...): ํ•ญ๋ชฉ ์ œ๋ชฉยท์„ค๋ช…์— ํ•œ๊ตญ์–ด์™€ ์˜์–ด๋ฅผ ๋ชจ๋‘ ํ‘œ๊ธฐ. ์–‘์ชฝ ์–ธ์–ด๋ฅผ ๋‹ค ๋ณด๊ณ  ์‹ถ์„ ๋•Œ.
  • ํ•œ๊ตญ์–ด ์ „์šฉ (feed.ko.xml, news.ko.ics, ...): ํ•œ๊ตญ์–ด ํ…์ŠคํŠธ๋งŒ ํ‘œ๊ธฐ (ํ•ด๋‹น ํ•ญ๋ชฉ์— ํ•œ๊ตญ์–ด๊ฐ€ ์—†์œผ๋ฉด ์˜์–ด๋กœ ์ž๋™ ํด๋ฐฑ).
  • ์˜์–ด ์ „์šฉ (feed.en.xml, news.en.ics, ...): ์˜์–ด ํ…์ŠคํŠธ๋งŒ ํ‘œ๊ธฐ (ํ•ด๋‹น ํ•ญ๋ชฉ์— ์˜์–ด๊ฐ€ ์—†์œผ๋ฉด ํ•œ๊ตญ์–ด๋กœ ์ž๋™ ํด๋ฐฑ).

๋ฐฐ๋„ˆ์˜ "ํ”ผ๋“œ"/"์บ˜๋ฆฐ๋”" ๋ฒ„ํŠผ์€ data-lang(๋˜๋Š” ์ž๋™ ๊ฐ์ง€)์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ž ์–ธ์–ด์— ๋งž๋Š” ๋ณ€ํ˜• URL์„ ์ž๋™์œผ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

ํ˜•์‹

์ž๋™ ์ƒ์„ฑ๋˜๋Š” ๋ชจ๋“  ํ”ผ๋“œ(events.jsonld ํฌํ•จ)๋Š” https://loopback.social/feeds/ ์•„๋ž˜์— ๋ณด๊ด€๋ฉ๋‹ˆ๋‹ค. sitemap.xml๋งŒ ๊ฒ€์ƒ‰์—”์ง„ ์ปจ๋ฒค์…˜(/sitemap.xml ๊ธฐ๋ณธ ๊ฒฝ๋กœ)์— ๋”ฐ๋ผ ์‚ฌ์ดํŠธ ๋ฃจํŠธ์— ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

๊ฒฝ๋กœ ํ˜•์‹ ์šฉ๋„
/feeds/news.ics ยท /feeds/news.ko.ics ยท /feeds/news.en.ics iCalendar (RFC 5545) Google/Apple/Outlook ์บ˜๋ฆฐ๋” ๊ตฌ๋…. category: event์ด๊ฑฐ๋‚˜ event_start๊ฐ€ ์žˆ๋Š” ํ•ญ๋ชฉ, ๋˜๋Š” 7์ผ ์ด๋‚ด ๊ธฐ๊ฐ„์˜ ํ•ญ๋ชฉ๋งŒ ํฌํ•จ
/feeds/feed.xml ยท /feeds/feed.ko.xml ยท /feeds/feed.en.xml RSS 2.0 RSS ๋ฆฌ๋”๋กœ ๋ชจ๋“  ํ™œ์„ฑ ๋‰ด์Šค ํ•ญ๋ชฉ์„ ์ˆ˜์‹ 
/feeds/feed.atom ยท /feeds/feed.ko.atom ยท /feeds/feed.en.atom Atom 1.0 feed.xml๊ณผ ๋™์ผ ๋‚ด์šฉ์˜ Atom ํ˜•์‹
/feeds/feed.json ยท /feeds/feed.ko.json ยท /feeds/feed.en.json JSON Feed 1.1 JSON ํ˜•์‹. ํ•ญ๋ชฉ๋งˆ๋‹ค _loopback_social ํ™•์žฅ ํ•„๋“œ๋กœ KO/EN ์›๋ฌธยท์ด๋ฒคํŠธ ์‹œ๊ฐยท์žฅ์†Œ๋ฅผ ํ•จ๊ป˜ ๋…ธ์ถœ
/feeds/feeds.opml ยท /feeds/feeds.ko.opml ยท /feeds/feeds.en.opml OPML 2.0 ํ”ผ๋“œ + ์ฐธ์—ฌ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฌถ์Œ. RSS ๋ฆฌ๋”์—์„œ OPML ๊ฐ€์ ธ์˜ค๊ธฐ(Import)๋กœ ๋„คํŠธ์›Œํฌ ์ „์ฒด๋ฅผ ํ•œ ๋ฒˆ์— ๊ตฌ๋…
/feeds/events.jsonld Schema.org JSON-LD ๊ฒ€์ƒ‰ ์—”์ง„ยทAI ์—์ด์ „ํŠธ์šฉ Organization + Event ๊ทธ๋ž˜ํ”„ (์ด์ค‘ ์–ธ์–ด ๊ณ ์ •)
/llms.txt Markdown AI ์—์ด์ „ํŠธ์šฉ ์‚ฌ์ดํŠธ ์•ˆ๋‚ด. ์—”๋“œํฌ์ธํŠธ ๋ชฉ๋ก๊ณผ ๋ฐ์ดํ„ฐ ํ•ด์„ ๋ฐฉ๋ฒ• ๋ช…์‹œ
/sitemap.xml XML ์‚ฌ์ดํŠธ๋งต ๊ณต๊ฐœ ์ž์‚ฐ ์ธ๋ฑ์Šค
/robots.txt robots.txt ์‚ฌ์ดํŠธ๋งต ์œ„์น˜ ๋ช…์‹œ, ์ „์ฒด ํฌ๋กค๋ง ํ—ˆ์šฉ

๋นŒ๋“œ ํŠธ๋ฆฌ๊ฑฐ:

  • ์ด์Šˆ โ†’ PR ์ž๋™ํ™”์—์„œ news.json/communities.json์„ ์ˆ˜์ •ํ•œ PR์„ ๋งŒ๋“ค ๋•Œ ํ•จ๊ป˜ ๋นŒ๋“œ๋˜์–ด PR์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
  • main ๋ธŒ๋žœ์น˜์— news.json/communities.json์ด ํ‘ธ์‹œ๋˜๋ฉด build-feeds.yml์ด ๊ฒฐ๊ณผ๋ฌผ์„ ์ž๋™ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.
  • ๋งค์ผ 00:00 UTC (09:00 KST)์—๋„ ํ•œ ๋ฒˆ ์‹คํ–‰๋˜์–ด, ๋งŒ๋ฃŒ๋œ ํ•ญ๋ชฉ์ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋น ์ง€๊ณ  lastBuildDate๊ฐ€ ๊ฐฑ์‹ ๋ฉ๋‹ˆ๋‹ค.
  • ์ˆ˜๋™์œผ๋กœ ๋Œ๋ฆฌ๋ ค๋ฉด: node .github/scripts/build-feeds.mjs

์ž‘๋™ ๋ฐฉ์‹

ํŒŒ์ผ ๊ตฌ์กฐ

  • docs/banner.js: ๊ฐ€๋ฒผ์šด ๋กœ๋” ์Šคํฌ๋ฆฝํŠธ (์บ์‹œ๋˜์–ด๋„ ๋ฌด๋ฐฉ)
  • docs/banner.impl.js: ์‹ค์ œ ๋ฐฐ๋„ˆ ๊ตฌํ˜„์ฒด (ํƒ€์ž„์Šคํƒฌํ”„๋กœ ์บ์‹œ ๋ฌดํšจํ™”)
  • docs/communities.json: ์ฐธ์—ฌ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ชฉ๋ก
  • docs/news.json: ๋‰ด์Šค ํ‹ฐ์ปค ์ฝ˜ํ…์ธ 
  • docs/news.ics, docs/feed.xml, docs/events.jsonld, docs/sitemap.xml: ์ž๋™ ์ƒ์„ฑ ํ”ผ๋“œ (์ง์ ‘ ํŽธ์ง‘ํ•˜์ง€ ๋ง ๊ฒƒ)
  • docs/llms.txt, docs/robots.txt: ๊ฒ€์ƒ‰/AI ์นœํ™” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
  • docs/schemas/: communities.json/news.json JSON Schema (CI์—์„œ ๊ฒ€์ฆ์— ์‚ฌ์šฉ)
  • .github/ISSUE_TEMPLATE/: ๊ตฌ์กฐํ™”๋œ ์ œ์ถœ ์–‘์‹ (์ž๋™ํ™” ๋ด‡์ด ํŒŒ์‹ฑ)
  • .github/scripts/: ์–‘์‹ โ†’ JSON ๋ณ€ํ™˜, ํ”ผ๋“œ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ
  • .github/workflows/issue-to-pr.yml: ์ด์Šˆ โ†’ PR ์ž๋™ํ™” ์›Œํฌํ”Œ๋กœ
  • .github/workflows/build-feeds.yml: ํ”ผ๋“œ ์žฌ๋นŒ๋“œ ์›Œํฌํ”Œ๋กœ

๋™์ž‘ ์›๋ฆฌ

  1. banner.js๊ฐ€ ๋กœ๋“œ๋˜๋ฉด ํ˜„์žฌ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ํฌํ•จํ•œ URL๋กœ banner.impl.js๋ฅผ ๋™์  ๋กœ๋“œ
  2. banner.impl.js๋Š” ํŽ˜์ด์ง€ ์ƒ๋‹จ์— ๊ฒ€์€์ƒ‰ ๋  ๋ฐฐ๋„ˆ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‚ฝ์ž…
  3. ๋ฐฐ๋„ˆ์—๋Š” loopback.social ์ œ๋ชฉ๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๊ฐ€ ํฌํ•จ
  4. ๋‰ด์Šค ํ‹ฐ์ปค๋Š” ํ˜„์žฌ ์‹œ๊ฐ์— ํ•ด๋‹นํ•˜๋Š” news.json ํ•ญ๋ชฉ๋“ค์„ ์ˆœํ™˜ ํ‘œ์‹œ

์บ์‹œ ๋ฌธ์ œ ํ•ด๊ฒฐ

GitHub Pages์˜ ์บ์‹œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด 2๋‹จ๊ณ„ ๋กœ๋”ฉ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

  • banner.js: ํ•ญ์ƒ ๋™์ผํ•œ ๋กœ๋” ์ฝ”๋“œ (๋ธŒ๋ผ์šฐ์ € ์บ์‹œ ๊ฐ€๋Šฅ)
  • banner.impl.js: ํƒ€์ž„์Šคํƒฌํ”„ ํŒŒ๋ผ๋ฏธํ„ฐ(?ts=)๋กœ ๊ฐ•์ œ ์ƒˆ๋กœ๊ณ ์นจ

์ด๋ฅผ ํ†ตํ•ด ๋ฐฐ๋„ˆ ์—…๋ฐ์ดํŠธ ์‹œ ์ฆ‰์‹œ ๋ฐ˜์˜์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ LICENSE ํŒŒ์ผ์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.

Attributions

Site Icon (Loop) by https://icons8.com

About

Banner Repository for Community Federation

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle ใซใ‚ˆใฃใฆๅค‰ๆ›ใ•ใ‚ŒใŸใƒšใƒผใ‚ธ (->ใ‚ชใƒชใ‚ธใƒŠใƒซ) /