가보자고
가보자고
🚀 SNS 챌린지 달성자

Templater를 사용한 ideation

소개

지난 주 peanut님의 사례가 흥미로워서, 나도 옵시디언에 저장해 둔 정보와 아이디어들을 서로 연결해서 새로운 아이디어를 만들고 싶었다. 정보나 아이디어가 충분히 활용되지 못하고 쌓이는 거 같아서.

원래는 관심 분야에 대한 외부 정보(뉴스, 유튜브, 뉴스레터, 특정 사이트 등)를 가져와서, 아이디어를 전개하는 데 사용하고 싶었지만, 이건 복잡해 보여서 일단 패스.

진행 방법

도구 : templater 플러그인, 커서, 클로드, perplexity

일단, 나는 옵시디언 관리를 거의 안 했기 땜에 아주 심플하게 쓰고 있다. 빨간색이 '지식&정보'이고 파란색이 '생각'. 노란색이 '실행'인데 이건 아직 없다. 연결도 안 해 놓았다.

원에있는 사람들의 그룹의 다이어그램

프롬프트

옵시디언의 templater 플러그인을 사용해서 다음의 작업을 하려고 해.

콜아웃을 두개 만들고, 한 콜아웃에는 '100 지식&정보' 폴더에 있는 노트를 1개 랜덤으로 링크해 주고, 다른 콜아웃에는 '200 생각' 폴더에 있는 노트를 랜덤으로 1개 링크해.

각 콜아웃의 랜덤 링크가 마음에 들지 않으면 다른 랜덤 링크를 생성할 수 있는 버튼도 추가해

이런 기능을 담은 템플릿을 만들고, 매일 이 템플릿을 따르는 노트를 만들어서 두 개의 콜아웃에 있는 내용에서 새로운 아이디어를 기록할 거야. 이렇게 하는 방법 알려줘

시행착오

[1차 시도] : templater error template parsing error aborting. check console for more information

뭔 소린지 몰라서 ai 들에게 물어보았다. 여러 가지를 알려 주는데, 이 중 개발자 콘솔을 보면 자세한 내용이 나온다고 해서, 이걸 해 보았다

[2차 시도] : 개발자 콘솔의 메시지. 이걸 ai들에게 입력하고 수 차례 수정된 코드를 돌려봤는데 결과는 마찬가지

템플릿 오류 템플릿 팝핑 오류

[3차 시도] : 'plugin:templater-obsidian:6'을 구글링해봐도, ai들에게 다시 물어봐도 뾰족한 해결이 안됨. 개발자 콘솔을 다시 찬찬히 뜯어보니 6행에 해당하는 부분이 꽤 길게 되어 있었다.

var Yi = Object.create; var or = Object.defineProperty; var Hi = Object.getOwnPropertyDescriptor; var Gi = Object.getOwnPropertyNames; var Vi = Object.getPrototypeOf , Wi = Object.prototype.hasOwnProperty; var Fn = r=>or(r, "esModule", { value: !0 }); var Ki = (r,e)=>{ Fn(r); for (var t in e) or(r, t, { get: e[t], enumerable: !0 }) } , Ui = (r,e,t)=>{ if (e && typeof e == "object" || typeof e == "function") for (let n of Gi(e)) !Wi.call(r, n) && n !== "default" && or(r, n, { get: ()=>e[n], enumerable: !(t = Hi(e, n)) || t.enumerable }); return r } , V = r=>Ui(Fn(or(r != null ? Yi(Vi(r)) : {}, "default", r && r.esModule && "default"in r ? { get: ()=>r.default, enumerable: !0 } : { value: r, enumerable: !0 })), r); var Mn = (()=>{ for (var r = new Uint8Array(128), e = 0; e < 64; e++) r[e < 26 ? e + 65 : e < 52 ? e + 71 : e < 62 ? e - 4 : e  4 - 205] = e; return t=>{ for (var n = t.length, o = new Uint8Array((n - (t[n - 1] == "=") - (t[n - 2] == "="))  3 / 4 | 0), s = 0, a = 0; s < n; ) { var A = r[t.charCodeAt(s++)] , c = r[t.charCodeAt(s++)] , d = r[t.charCodeAt(s++)] , f = r[t.charCodeAt(s++)]; o[a++] = A << 2 | c >> 4, o[a++] = c << 4 | d >> 2, o[a++] = d << 6 | f } return o } } )(); Ki(exports, { default: ()=>hn }); var vr = V(require("obsidian")); var M = V(require("obsidian")); var Pn = V(require("obsidian")); function K(r) { let e = new Pn.Notice("",8e3); r instanceof w && r.console_msg ? (e.noticeEl.innerHTML = <b>Templater Error</b>:<br/>${r.message}<br/>Check console for more information, console.error("Templater Error:", r.message, `개발자 도구에서 에러가 난 부분이야. 왜 그런지 해석하고 수정방법 알려줘

뭔가 나름 이유도 알려주고, 수정도 해 주지만 여전히 증상은 동일.

[4차 시도] 문법 얘기가 계속 나오고, <%*~ %>의 뒷 부분 위치를 변경하면서 보니, 에러가 안 나올 때도 있어서 다음과 같이 지시. 하지만 맞다고 우김!

검은 색 화면에서 한국어의 스크린 샷

좀 더 구체적인 상황을 지적하니 그제야 알아 먹음! 얘가 몰라도 아는 척 하는 거였구나!

한국어 텍스트가있는 검은 색 화면

[5차 시도] 완성된 코드. 그런데 콜아웃에 링크들이 담기지 않는 문제 발생.

<%*
const knowledgeFolder = "100 지식&정보";
const thoughtFolder = "200 생각";


async function getRandomNote(folderPath) {
    const files = app.vault.getMarkdownFiles()
        .filter(file => file.path.startsWith(folderPath + "/"));
    
    if (files.length === 0) {
        new Notice(`${folderPath} 폴더에 파일이 없습니다.`);
        return null;
    }
    
    return files[Math.floor(Math.random() * files.length)].basename;
}

let knowledgeNote = await getRandomNote(knowledgeFolder);
let thoughtNote = await getRandomNote(thoughtFolder);
%>


> [!note] 오늘의 지식
> [[<% knowledgeNote || '노트를 찾을 수 없습니다' %>]]
> [[<% await getRandomNote(knowledgeFolder) %>|🔄 다른 지식 보기]]

> [!idea] 오늘의 생각
> [[<% thoughtNote || '노트를 찾을 수 없습니다' %>]]
> [[<% await getRandomNote(thoughtFolder) %>|🔄 다른 생각 보기]]

## 새로운 아이디어:
- 여기에 새로운 아이디어를 작성하세요.

---
한국어가있는 페이지의 스크린 샷

이건 코드에서와 달리 실행했을 때, 콜아웃과 링크 라인 사이에 빈 줄이 생기기 때문이다. 그런데 이 점은 ai들에게 아무리 알려주고 수정해도 안 됐다. 결국 실행 결과에 직접 라인을 삭제하는 방식으로 수동으로 수정함

[완성된 모습] 파일명을 자동으로 세팅해 주는 것도 시도해 봤는데, 오히려 이걸 추가했더니 에러가 떠서 포기함. 파일명은 수동으로 작성

한국 달력이 화면에 표시됩니다

결과와 배운 점

배운 점과 나만의 꿀팁 : 에러 수정할 때 ai들을 너무 믿지 말자. 내가 수동으로 체크해 줘야 함

도움이 필요한 부분 : 에러 없이 파일명 자동으로 생성하는 거

앞으로의 계획 :

1) 워크플로우 툴을 사용해서, 외부 컨텐츠를 자동으로 끌어 오고 요약하는 것

2) 이것들을 homepage 플러그인에 정리하는 것

도움 받은 글 (옵션)

https://www.gpters.org/research/post/brainstorming-obsidian-search-assistance-Jqrs0LUd2nRil1f

https://www.youtube.com/watch?v=17tThWhNNGw

https://www.youtube.com/watch?v=Q2-aHQKEOHs

1

👉 이 게시글도 읽어보세요