Skip to content

Instantly share code, notes, and snippets.

View joonan30's full-sized avatar

Joon An joonan30

View GitHub Profile
@joonan30
joonan30 / notebooklm-wiki-validation-operating-rules.md
Created August 18, 2026 11:37
NotebookLM을 로컬 논문 위키의 2차 검증자로 쓰는 운영 규칙

NotebookLM을 로컬 논문 위키의 2차 검증자로 쓰는 운영 규칙

로컬 markdown 논문 지식베이스(위키)를 NotebookLM으로 교차검증하는 운영 규칙이다. An Lab의 llm-wiki 운영에서 추출했으며, 검증 세션 64회, PDF 업로드 2,277건, 주장 판정 512건의 실측 결과에 근거한다. 같은 구조의 지식베이스를 운영하는 사람이 그대로 따라 구축할 수 있도록 쓴다.

0. 전제

  • 로컬 지식베이스가 먼저 있어야 한다. 우리 구조는 papers/(정본 PDF), sources/(논문별 요약), wiki/(여러 논문을 합성한 페이지), logs/(실행 기록)다. 폴더 이름은 자유지만, 각 위키 페이지가 어떤 논문 PDF에 근거하는지 링크로 추적할 수 있어야 한다. 이 추적이 안 되면 아래의 manifest 동결이 불가능하다.
  • CLI는 오픈소스 notebooklm-py를 쓴다. 버전을 고정하고(uv tool install --force "notebooklm-py[browser,mcp]==0.8.1"), 여러 대의 컴퓨터를 쓰면 같은 버전을 맞춘다.
  • 계정 한도는 실측으로 notebook 200개, notebook당 source 약 50개다. 캠페인 설계 전에 이 한도를 먼저 계산한다.
@joonan30
joonan30 / CLAUDE.md
Created April 9, 2026 08:57
LLM Wiki — AI for Biology: Claude Code instructions for managing a personal research knowledge base (Karpathy LLM Wiki pattern)

LLM Wiki — AI for Biology

중요: Git 워크트리 사용 금지

모든 파일은 메인 브랜치에 직접 저장한다. Git worktree를 생성하지 않는다.

A personal knowledge base for AI/deep learning papers in biology research. Follows Karpathy's LLM Wiki pattern: Original PDF → LLM markdown summary (sources) → Structured wiki page (wiki).

Language policy: All wiki content is in English. Conversation with Claude can be in Korean or English.

@joonan30
joonan30 / AGENTS.md.template
Last active August 31, 2026 08:31
LLM Wiki: building a compounding knowledge base of academic papers with AI agents (revised 2026-08)
# LLM Wiki — [YOUR FIELD]
A personal knowledge base of [YOUR FIELD] papers, following [Karpathy's LLM Wiki pattern](https://gist.github.com/karpathy/1dd0294ef9567971c1e4348a90d69285):
```
Original PDF → sources/*.md → wiki/{category}/*.md → wiki/overviews/ + wiki/concepts/
```
Language policy: all wiki content is in English. Conversation can be in any language.
library(rtracklayer)
library(tidyverse)
d <- rtracklayer::import('gencode.v19.annotation.gtf.gz') %>%
as.data.frame() %>%
filter(type == 'transcript')
@joonan30
joonan30 / mp.py
Last active August 30, 2019 05:33
mp.py
# python 3
import multiprocessing as mp
from multiprocessing import Pool, cpu_count
number_threads = 8
## Creating a pool for parallel processing
pool = mp.Pool(number_threads)
pool.imap_unordered(os.system, cmds )
pool.close()
# terminal color scheme
export PS1="\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\$ "
export CLICOLOR=1
export LSCOLORS=ExFxBxDxCxegedabagacad
alias ls='ls -GFh'
@joonan30
joonan30 / quickmeal.r
Last active April 13, 2018 23:42
Quick meal prep in R
# Get date
date = sapply(strsplit(as.character(Sys.Date()), '-', fixed = T), paste, collapse = "")
## biomart and AnnotationDbi
# Map a gene id to get an ENTREZ id.
require(AnnotationDbi)
require(org.Mm.eg.db) # mice
entrez = mapIds(org.Mm.eg.db,
keys=ens_gene, # has to be a vector
@joonan30
joonan30 / ansible.install.yaml
Created November 15, 2016 04:03
Ansible installation EC2 instance
---
- hosts: <hostname>
remote_user: ec2-user
vars:
s3_spiegel_path: user_s3bucket/path/
remote_spiegel_dir: data
tasks:
- name: Installing R
yum: name=R state=latest
@joonan30
joonan30 / test.py
Created November 6, 2016 01:24
# remove redundant lines and sort lines
import sys
match = []
with open(sys.argv[1]) as fh:
for line in fh:
if line in match:
pass
else:
match.append(pass)
@joonan30
joonan30 / 0_reuse_code.js
Created November 2, 2016 04:24
Here are some things you can do with Gists in GistBox.
// Use Gists to store code you would like to remember later on
console.log(window); // log the "window" object to the console