소개
웹으로 할 일 트래커를 만들었는데 DB를 붙이려고 했으나 어차피 통계를 다시 내야 한다면 이걸 옵시디언으로 해보면 어떨까? 라고 생각하게 되었습니다.
진행 방법
어떤 도구를 사용했고, 어떻게 활용하셨나요?
옵시디언 유저를 위한 오픈클로 + 클로드코드로 AI 에이전트 워크플로우 만들기
옵시디언을 설치하고 cluade code를 사용해 진행해 보았습니다.
하단에는 몇 개의 할 일을 수행했는지 통계가 나와.
Tip: 사용한 프롬프트 전문을 꼭 포함하고, 내용을 짧게 소개해 주세요.
옵시디언에서 사용할 할 일 트래커 페이지를 만들었으면 해. 스픽, 듀오링고, 더캠프, 블로그, 경영학, 수학공부, 프로그래밍공부, 논문스터디, 매일운동하기, 영어스터디, 정보처리기사 항목을 체크해서 기록할 수 있는 페이지야.
Tip: 활용 이미지나 캡처 화면을 꼭 남겨주세요.
한국어 애플리케이션 스크린샷
Tip: 코드 전문은 코드블록에 감싸서 작성해주세요. ( / 을 눌러 '코드 블록'을 선택)
const content = await dv.io.load(dv.current().file.path);
const lines = content.split('\n');
// 날짜 섹션별 통계 수집
const datePattern = /^## (\d{4}-\d{2}-\d{2})$/;
const sections = [];
let current = null;
for (const line of lines) {
const match = line.match(datePattern);
if (match) {
if (current) sections.push(current);
current = { date: match[1], total: 0, checked: 0 };
} else if (current) {
if (line.match(/^- \[.\]/)) {
current.total++;
if (line.match(/^- \[x\]/i)) current.checked++;
}
}
}
if (current) sections.push(current);
// 전체 합산
const grandTotal = sections.reduce((s, r) => s + r.total, 0);
const grandChecked = sections.reduce((s, r) => s + r.checked, 0);
const grandRate = grandTotal > 0 ? Math.round(grandChecked / grandTotal * 100) : 0;
// 전체 요약
dv.header(3, '전체 요약');
dv.table(
['총 할 일', '완료', '미완료', '전체 완료율'],
[[grandTotal, grandChecked, grandTotal - grandChecked, grandRate + '%']]
);
// 날짜별 상세
dv.header(3, '날짜별 통계');
if (sections.length === 0) {
dv.paragraph('아직 기록된 날짜가 없습니다.');
} else {
const rows = sections
.sort((a, b) => b.date.localeCompare(a.date))
.map(r => {
const rate = r.total > 0 ? Math.round(r.checked / r.total * 100) : 0;
const bar = '█'.repeat(Math.round(rate / 10)) + '░'.repeat(10 - Math.round(rate / 10));
return [r.date, r.total, r.checked, r.total - r.checked, rate + '%', bar];
});
dv.table(['날짜', '전체', '완료', '미완료', '완료율', '진행도'], rows);
}
```결과와 배운 점
한국사이트 스크린샷
마크다운을 사용해 글쓰는 법을 조금 적용해 보았습니다.
미니 세션을 들었던 경험으로 진행했는데 자꾸 해시태그가 되어서 불편했지만 익숙해 지겠죠?
도움 받은 글 (옵션)
21기 옵시디언 유저를 위한 오픈클로 + 클로드코드로 AI 에이전트 워크플로우 만들기 강의