← nitronium.dev

Claude Code transcript JSONL formatı ve Stop hook'ta okuma

2026-06-09
Claude Code her session'ı bir JSONL dosyasına kaydeder. Stop hook transcript_path ile bu dosyanın yolunu alır.

Dosya Konumu



`
~/.claude/projects/<proje-hash>/<session-uuid>.jsonl
`

Her satır bağımsız bir JSON nesnesi. İlk birkaç satır meta (type: "last-prompt", type: "mode" vs.) — bunları atla.

Kullanıcı Mesajlarını Parse Etme



`js
const lines = fs.readFileSync(transcriptPath, 'utf8').split('\n').filter(Boolean);

for (const line of lines) {
const entry = JSON.parse(line);
if (entry.type === 'user' && entry.message?.role === 'user') {
// message.content string VEYA content-block array olabilir
const text = extractText(entry.message.content);
}
}

function extractText(content) {
if (typeof content === 'string') return content.trim();
if (Array.isArray(content)) {
return content.filter(c => c.type === 'text').map(c => c.text).join(' ').trim();
}
return '';
}
`

Diğer Alanlar



- entry.timestamp — ISO 8601
- entry.sessionId — transcript dosya adıyla aynı UUID
- entry.cwd — çalışma dizini

Hook'ta session ID almak için: path.basename(transcriptPath, '.jsonl').