Wenlan
Wenlan은 소스 기반 AI 지식베이스·LLM 위키로, 문서·결정을 페이지화해 검색·검토·리뷰 가능
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
대신 교단 사역자를 위한 청빙·구직 및 설교 준비 플랫폼. 소스는 공개되어 있습니다. 교단과 상관없이 가져다 쓰셔도 되고, 고칠 곳이 보이면 알려 주시거나 직접 고쳐 보내 주셔도 됩니다. 원어 데이터(src/data/)는 저장소에 포함되어 있습니다. 다시 받으려면: 세 곳의 공개 게시판에서 공고 정보를 모읍니다. 매일 07:00(KST)에 GitHub Actions가 자동으로 돌립니다 (.github/workflows/scrape.yml). 저장소 Actions 탭에서 수동 실행도 됩니다. 손으로 돌릴 때는: robots.txt 를 먼저 봅니다. 장로회신학대학교 초빙게시판은 좋은 자료지만 User-Agent: * / Disallow: / 로 사이트 전체가 막혀 있어 넣지 않았습니다. 막아 둔 곳을 긁으면 언젠가 차단당하고, 그때는 이미 모은 것까지 끊깁니다. 넣으려면 학교(경건교육실)에 먼저 물어야 합니다. 청빙넷은 Allow: / 이고 sitemap 도 내어 주는 곳이README 전문 보기 ↗
대신 교단 사역자를 위한 청빙·구직 및 설교 준비 플랫폼.
배포 주소: https://daeshin-ministry.vercel.app
소스는 공개되어 있습니다. 교단과 상관없이 가져다 쓰셔도 되고, 고칠 곳이 보이면 알려 주시거나 직접 고쳐 보내 주셔도 됩니다.
npm install
npm run dev
원어 데이터(src/data/)는 저장소에 포함되어 있습니다. 다시 받으려면:
npm run import:bible # 전체
npm run import:bible greek # 헬라어만
| 경로 | 내용 |
|---|---|
/ | 랜딩 — 소개와 최근 공고 |
/jobs | 청빙공고 목록 — 외부 게시판 수집분, 지역·직분·출처·부서 필터 |
/tools/original | 원어 파싱 뷰어 — 구약 39권 + 신약 27권 전체 |
/tools/original/lemma | 사전형 용례 검색 (성경 전체) |
/tools/sermon | 설교 노트 — 원어 클리핑 + 개요 + 마크다운 내보내기 |
/tools/setlist | 찬양 콘티 — 곡 순서·조·송폼, 달력, 콘티+악보 PDF 한 개 |
/tools/songs | 곡 라이브러리 — 곡별 키·박자·송폼·악보. 콘티가 여기서 곡을 가져간다 |
/tools/poster | 행사 포스터 — 칸을 채우면 PNG. A4·정사각형·가로 |
/tools/roster | 명단·출석·생일 — 엑셀 입출력, 주일 인원 체크, 생일 D-day |
/tools/bulletin | 주보·순서지 — 예배별 기본 순서, 광고·일정, A4 인쇄 |
/alerts | 새 공고 알림 — 조건을 정해 두면 맞는 공고가 올 때 메일 |
/qna | 사역 Q&A — 승인 회원끼리 익명으로 나누는 이야기 |
세 곳의 공개 게시판에서 공고 정보를 모읍니다.
매일 07:00(KST)에 GitHub Actions가 자동으로 돌립니다
(.github/workflows/scrape.yml). 저장소 Actions 탭에서 수동 실행도 됩니다.
손으로 돌릴 때는:
npm run scrape # 새 글이 없으면 멈춤 (정기 수집용)
npm run scrape -- godpeople # 한 곳만
npm run scrape -- --full --pages 25
npm run scrape -- --prune 12 # 12개월 지난 공고는 버림
npm run scrape -- --delay 2000 # 요청 간격 조절
| 출처 | 게시판 | 특징 |
|---|---|---|
godpeople | 갓피플취업 | 지역·직분·부서 꼬리표가 붙어 분류가 가장 정확 |
baekseok | 백석대 신대원 정보나눔터 | 제목이 [지역] 교회명 꼴 |
aats | 총신대 신대원 총동창회 | 제목 문장에서 직분을 추출 |
minitries | 청빙넷 부교역자 청빙 | 꼬리표가 없어 제목 한 줄에서 교회·지역·직분을 읽음 |
robots.txt 를 먼저 봅니다. 장로회신학대학교 초빙게시판은 좋은 자료지만
User-Agent: * / Disallow: / 로 사이트 전체가 막혀 있어 넣지 않았습니다.
막아 둔 곳을 긁으면 언젠가 차단당하고, 그때는 이미 모은 것까지 끊깁니다.
넣으려면 학교(경건교육실)에 먼저 물어야 합니다.
청빙넷은 Allow: / 이고 sitemap 도 내어 주는 곳이라 넣었습니다.
청빙넷은 제목에 지역이 없는 글이 많습니다. 178건 중 지역을 읽어 낸 것은 26%뿐입니다. "부성교회에서 부목사님을 모십니다" 같은 제목에는 어디인지가 아예 없고, 그 정보는 본문에 있습니다. 본문은 가져오지 않으므로(작성자의 저작물입니다) 이런 글은 지역으로 걸러낼 때 빠집니다. 교회명은 83%, 날짜는 100% 읽습니다.
17개 시·도 + 시·군·구 두 칸으로 고릅니다(src/lib/region.ts).
예전에는 "충남·대전·세종"처럼 묶어 12개로 두었는데, 대전에서 사역할 사람에게
천안 공고를 섞어 보여 주는 셈이었습니다.
여러 곳을 한꺼번에 담습니다 — 실제로 자리를 찾는 사람은 "분당 아니면 용인"처럼 두세 곳을 함께 봅니다. 고르는 칸에 건수를 함께 적어, 그곳에 공고가 있는지부터 알 수 있게 했습니다. 지역을 하나 고른 뒤에도 다른 지역 건수는 그대로 보입니다.
원문 표기는 제각각입니다 — 경기도 안양시, 서울시 송파구, 성남시 분당구(시·도 없음),
인천.서구(구분자가 점), 강남구 대치동(구부터), 호주 퍼스. 수집본 131종을
모두 대본 결과 592건 분류 / 못 읽음 2건입니다(못 읽은 둘은 교회 이름이
지역 칸에 들어간 원문 오류입니다).
"전국"과 "○○ 외"는 지역이 아닙니다. 갓피플의 "서울 외"은 서울이 아니라 서울 밖이라는 뜻이라, 그대로 두면 수도권 밖 교회가 전부 서울로 잡힙니다.
지역은 저장된 값이 아니라 볼 때마다 원문 표기에서 다시 읽습니다. 그래야 규칙을 고칠 때 다시 수집하지 않아도 이미 모인 공고까지 함께 바뀝니다.
세 곳 중 한 곳이 안 되는 날이 있습니다. 상대 게시판이 잠깐 내려가거나, GitHub의 실행 서버(미국)에서 국내 주소로 가는 길이 막히는 경우입니다.
한두 곳이 실패해도 수집은 성공으로 칩니다. 나머지 곳의 공고는 그대로
들어오기 때문입니다. 흔들릴 때마다 실패 메일이 오면 정작 다 끊긴 날을
놓치게 됩니다. npm run scrape 가 1로 끝나는 것은 세 곳이 모두 실패한
날뿐입니다.
대신 어디가 왜 안 됐는지는 실행 페이지 맨 위 요약에 표로 남습니다
(GITHUB_STEP_SUMMARY). 이유에는 ENOTFOUND, ECONNREFUSED,
20초 안에 응답이 없음처럼 원인까지 적힙니다 — fetch failed 한 줄만으로는
손을 쓸 수 없기 때문입니다. 요약은 로그와 달리 로그인 없이 보입니다.
모으는 항목은 교회명·지역·직분·부서·게시일·마감일과 원문 링크입니다. 게시물 본문과 담당자 연락처는 가져오지 않습니다. 본문은 작성자의 저작물이고 연락처는 개인정보라, 사용자가 원문 게시판으로 가서 보도록 링크만 겁니다. 요청은 1.2초 간격으로 보내고, 출처와 연락처를 밝힌 User-Agent를 씁니다.
갓피플의 rc_idxx는 고정 글번호가 아니라 요청마다 새로 발급되는 토큰입니다.
같은 공고를 두 번 받으면 토큰이 서로 다릅니다. 이걸 식별자로 쓰면 수집할 때마다
424건이 통째로 새 글로 쌓입니다. 그래서 갓피플만은 교회명 + 제목을 해시한 값을
식별자로 씁니다(stableId). 먼저 받은 토큰으로도 원문은 계속 열리므로, 링크는
처음 본 값을 그대로 둡니다 — 매일 커밋하는데 링크가 날마다 바뀌면 바뀐 것이 없는
날에도 수백 건이 다시 쓰이기 때문입니다.
교회들은 목록 위로 올리려고 같은 공고를 여러 번 다시 올립니다(한 목록 안에서 17번까지 올라온 경우가 있습니다). 화면에서는 하나로 묶고 재게시 횟수를 함께 보여 줍니다 — 재게시가 잦다는 것은 아직 사람을 못 구했다는 신호이기 때문입니다.
갓피플 목록은 "현재 모집 중인 공고 전체"를 뜻하므로, 끝까지 훑은 뒤 목록에서
사라진 공고는 마감(closedAt)으로 표시하고 /jobs에서 감춥니다.
백석대·총신대는 지난 글도 계속 남아 있는 게시판이라 사라짐을 마감으로 보지
않습니다(activeListing 플래그로 구분).
수집 결과는 src/data/scraped/posts.json에 쌓입니다. Supabase로 옮길 때는
supabase/scraped_posts.sql을 실행하세요.
| 자료 | 출처 | 라이선스 |
|---|---|---|
| 헬라어 본문·형태소 | MorphGNT / SBLGNT | CC BY-SA 4.0 |
| 히브리어 본문·형태소 | OpenScriptures OSHB | CC BY 4.0 |
| Strong's 사전 | OpenScriptures | 1890년 원본, 퍼블릭 도메인 |
SBLGNT는 CC BY-SA이므로 출처 표시가 필수입니다(푸터에 기재됨).
한글 성경 본문은 넣지 않았습니다. 개역개정·새번역 등은 대한성서공회가 저작권을 갖고 있어, 사이트에 본문을 싣거나 API로 제공하려면 별도 사용 허락이 필요합니다. 원어와 영어 사전만 두고, 한글 본문은 사용자가 각자 보던 성경을 쓰도록 하는 것이 현재 구조입니다.
/tools/setlist. 곡 순서와 조, 연결을 정리하고 단톡방에 그대로 붙일 글로
내보냅니다. 콘티는 대부분 그렇게 공유되기 때문입니다.
입력칸을 나열하는 것보다, 팀이 실제로 부딪히는 두 가지를 짚는 데 무게를 뒀습니다.
둘 다 "틀렸다"고 말하지 않습니다. 일부러 그렇게 짠 콘티도 많습니다. 현장에서 당황하기 쉬운 자리만 알려 둡니다.
원키와 부를 키를 함께 적으면 +2반음처럼 전조를 계산해 줍니다.
c#처럼 적어도 Db로 알아서 읽습니다.
곡마다 "인트로 - 1절 - 후렴 - 브릿지 x2 - 후렴 - 엔딩" 처럼 한 줄로 적습니다. 자주 쓰는 마디는 단추로 넣습니다. 칸을 나눠 받지 않은 이유는 현장에서 "후렴 x2", "반절 내려서" 처럼 말로 적는 일이 많기 때문입니다. 적은 송폼은 미리보기·단톡방 복사본·PDF 에 모두 따라갑니다.
/tools/songs)콘티는 매주 새로 짜지만 곡은 쌓입니다. 악보는 콘티가 아니라 곡에 붙습니다
(supabase/song_library.sql). 한 번 등록해 두면 키·박자·송폼·악보가 따라오므로,
다음 달에 같은 곡을 부를 때 제목만 고르면 됩니다.
처음에는 악보를 콘티에 직접 붙였는데, 그러면 같은 곡을 다음 달에 또 부를 때 다시 올려야 합니다. 개발하고 나서 잘못된 자리를 알았고, 곡 중심으로 옮겼습니다.
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗