Skip to content

Instantly share code, notes, and snippets.

View Londeren's full-sized avatar
💭
Building a rocket 🚀

Sergey Lebedev Londeren

💭
Building a rocket 🚀
View GitHub Profile
@Londeren
Londeren / README.md
Last active August 10, 2026 18:13
Claude.ai data export → readable Markdown: split conversations.json (1 GB, one line) into per-chat files, expand projects and memories

Claude.ai data export → readable Markdown

Four small scripts that turn an Anthropic Claude.ai data export into a folder tree you can actually read, grep and keep in git.

The export arrives as a handful of opaque JSON files: every non-ASCII character escaped as \uXXXX, and conversations.json delivered as a single line that can run to a gigabyte. These scripts unpack it into one Markdown file per chat, one folder per project, and drop each project's memory next to its system prompt.

No dependencies — Python 3.8+ and the standard library. Every script supports --dry-run, and none of them ever modify the source export.

The numbers that motivated this

@Londeren
Londeren / export-transcript.py
Last active September 8, 2026 18:43
Export Claude Code session .jsonl transcripts to readable markdown (Stop hook / CLI). Config via env vars: TRANSCRIPT_INBOX, TRANSCRIPT_USER_LABEL, TRANSCRIPT_ASSISTANT_LABEL
#!/usr/bin/env python3
"""Export a Claude Code session .jsonl transcript to readable markdown.
Synced with gist (canonical shared copy, keep identical):
https://gist.github.com/Londeren/beaf6bcc59b5bee51f8ac06df1991669
After editing this file, push the update:
gh gist edit beaf6bcc59b5bee51f8ac06df1991669 --filename export-transcript.py <path to this file>
Keeps only the user's messages and Claude's text replies. A slash command
the user typed (a skill invocation like `/glavred <text>`) is a user
@Londeren
Londeren / Resume to Linkedin profile prompt.txt
Last active August 4, 2026 17:32
Заполните Linkedin профиль за 5 минут. Промпт для AI для конвертации вашего резюме в Linkedin профиль. Скопируйте промпт ниже и после него вставьте свое резюме целиком. Подробнее в видео https://youtu.be/S0XkTWgiHQk
<role>
Ты ассистент, который превращает текст резюме в готовый контент для профиля LinkedIn, оптимизированный под поиск международными рекрутерами (США, Европа). На входе резюме на русском или английском. На выходе документ с блоками, которые пользователь копирует в LinkedIn как есть, без редактирования и вычитки.
</role>
<master_rules>
Применяются к каждому блоку результата, без исключений.
1. Весь копируемый контент только на английском, даже если резюме на русском. Ни одного русского слова в копируемых блоках: русский текст выпадает из поискового индекса рекрутеров и снижает релевантность профиля.
2. Копируемые блоки - только plain text. Внутри них никогда не используй markdown-разметку (**, ##, курсив) и никогда не используй псевдо-жирный шрифт из Unicode-символов (пример как нельзя: 𝗦𝗲𝗻𝗶𝗼𝗿 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿). LinkedIn не индексирует такие символы, ключевики в них теряются для поиска. Для структуры внутри блоков используй пустые строки, строки-заголовки (Key Achievements) и буллеты •.
@Londeren
Londeren / app.module.ts
Last active August 5, 2022 08:29
Angular 14 custom ViewportScroller for Router option scrollPositionRestoration
// …
@NgModule({
imports: [
AppRouterModule,
// …
],
bootstrap: [RootComponent],
providers: [
// …
@Londeren
Londeren / js-array-practice.js
Last active April 27, 2022 11:37
Javascript array map, reduce practice
// 1. Implement `reduce` via forEach. Expected api for the function:
reduce(arr, (acc, item) => acc + item, 0);
// example of implementation:
function reduce(arr, reducerCallback, initialValue) {
let result;
……forEach(…)
return result;
}
@Londeren
Londeren / ffmpeg commands
Last active April 17, 2022 14:50
ffmpeg useful commands
for filename in *.mp4; do ffmpeg -ss 12 -i "$filename" -c copy out-"$filename";done; # trim first 12 seconds
for filename in *.mp4; do printf "file '%s'\n" "$filename" >> ffmpeg_concat.txt;done;ffmpeg -f concat -i ffmpeg_concat.txt -c copy output-result.mp4; rm ffmpeg_concat.txt # concat ffmpeg
for filename in *.mp4; do ffmpeg -i "$filename" 2>&1 | grep Duration | awk '{print $2}' | tr -d , >> ffmpeg_concat.txt;done; # video duration time
ffmpeg -i video.mp4 -s 600x400 -pix_fmt rgb24 -r 10 -f gif - > out.gif # video to gif
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -preset medium -c:a copy video-out.mp4 #optimize reduce size
const times = {
'Video 0': '00:39:13',
'Video 1': '00:29:03',
'Video 2': '00:24:02',
'Video 3': '00:31:55',
'Video 4': '00:32:26',
'Video 5': '00:42:29',
'Video 6': '00:49:11',
};
#!/usr/bin/env node
// Raycast Script Command Template
//
// Dependency: This script requires Nodejs.
// Install Node: https://nodejs.org/en/download/
//
// Duplicate this file and remove ".template" from the filename to get started.
// See full documentation here: https://github.com/raycast/script-commands
//
@Londeren
Londeren / antonyms.txt
Last active December 8, 2021 17:31
Synonyms/antonyms for functions and variables
bind → unbind
on → off
link → unlink
attach → detach
add → remove delete
start → stop finish
begin → end
init → destroy
set → unset
delegate → undelegate