Communitygithub.com

Armazenamento JSONL

Persiste registros entre execuções agendadas como JSON Lines (um objeto por linha) com leitura em streaming e deduplicação opcional por chave, usando apenas a biblioteca padrão. Use quando o usuário quiser registrar resultados de execução em JSONL, anexar eventos a um arquivo, deduplicar registros por ID entre execuções ou manter um histórico durável simples sem banco de dados.

O que é Armazenamento JSONL?

O skill Armazenamento JSONL oferece uma solução leve e eficiente para persistir estado entre execuções de tarefas agendadas, sem a complexidade de um banco de dados completo. Ele utiliza o formato JSON Lines, onde cada linha contém um único objeto JSON, permitindo que novos registros sejam anexados ao arquivo sem sobrescrever dados existentes. A leitura é feita em streaming, linha por linha, evitando carregar todo o histórico na memória, e linhas corrompidas são ignoradas para garantir robustez. O recurso `append_unique(record, key)` garante que o mesmo ID nunca seja gravado duas vezes, mesmo em execuções diferentes, tornando o processo idempotente. Este skill é ideal para logs de resultados, captura de eventos e manutenção de um histórico simples e durável, e é compatível com qualquer ambiente Python que utilize a biblioteca padrão, sem dependências externas.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/baronguyen001/ai-automation-skills/tree/HEAD/skills/jsonl-store

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Armazenamento JSONL faz?

Use este skill quando uma tarefa agendada precisar lembrar o que já fez — alertas emitidos, IDs processados, eventos capturados — mas um banco de dados for exagero. JSON Lines (um objeto JSON por linha) é amigável para anexação, legível por humanos, pesquisável com grep e permite streaming sem carregar o arquivo inteiro. Esse auxiliar adiciona anexações atômicas, leituras em streaming que sobrevivem a uma linha corrompida e append_unique(record, key) para que o mesmo ID nunca seja escrito duas vezes entre execuções.

Quando invocar

  • O usuário diz: "registrar resultados em um arquivo JSONL", "anexar eventos ao disco", "deduplicar por ID entre execuções", "manter um histórico simples sem banco de dados".
  • Um script cron ou agendado precisa de estado durável entre execuções em um arquivo simples.

Quando NÃO invocar

  • Você precisa de consultas, índices ou escritores concorrentes — use SQLite (sqlite-state) ou um banco de dados real.
  • Os registros são grandes ou binários — JSONL é para linhas estruturadas pequenas.

Exemplo concreto

Entrada do usuário:

Após cada execução, anexe novos alertas a alerts.jsonl, mas nunca o mesmo ID de alerta duas vezes.

Saída:

# Copie assets/store.py para seu projeto, depois:
from store import JsonlStore

store = JsonlStore("data/alerts.jsonl")
for alert in new_alerts:
    if store.append_unique(alert, key="id"):
        send(alert)        # só dispara para IDs não vistos em execuções anteriores

print("tamanho do histórico:", store.count())

A leitura é feita linha por linha, de modo que um ano de histórico nunca carrega totalmente na memória, e uma linha final incompleta de uma falha é ignorada, sem quebrar a próxima execução.

Padrão a aplicar

  1. Um objeto JSON por linha; anexe com ensure_ascii=False para que o texto permaneça legível.
  2. Leitura em streaming com um gerador; ignore linhas em branco/corrompidas em vez de lançar exceção.
  3. Deduplicação com seen_keys(key) / append_unique(record, key) para tornar as execuções idempotentes.
  4. Combine com um agendador para que o arquivo seja a memória durável entre invocações.

Referência: assets/store.py.

Fonte

Destilado do tratamento de estado de bots agendados pelo autor. v1.0.0. Veja também: [[sqlite-state]], [[cron-dispatch]], [[pipeline-orchestrator]].

→ Construa o bot executável completo com Trawlkit.

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

baronguyen001/ai-automation-skills

Schedule any script to run on a recurring schedule on Windows (Task Scheduler) or Linux (cron) - register, list, and remove jobs from one command, with logging to a file and a guard against overlapping runs. Use for schedule a script, run nightly, set up a cron job, windows task scheduler, or run on a timer.

baronguyen001/ai-automation-skills

Turn a run's list of result dicts into a schema'd CSV and a Markdown table from one column spec - declare columns once, emit both, with stable ordering and safe escaping, stdlib only, no pandas. Use when the user asks to write results to CSV, export a report, make a markdown summary table, or save a run's output as a spreadsheet.

baronguyen001/ai-automation-skills

Strip HTML to clean plain text with the standard library only (no BeautifulSoup/lxml): drops script/style, turns block tags into line breaks, and collapses whitespace. Use when the user wants readable text from an HTML page/email, to clean scraped HTML before sending it to an LLM, or to build a text index from web content.

baronguyen001/ai-automation-skills

Extract text and simple table-like rows from a PDF for downstream AI without OCR binaries. Use when the user asks to read a PDF, turn a PDF into text, pull simple tables from statements/reports, or feed PDF content into an LLM pipeline.

baronguyen001/ai-automation-skills

Rotate a pool of HTTP/SOCKS proxies with round-robin selection, failure tracking, and a cooldown that benches dead proxies before retrying. BYO proxy list via env - none are shipped. Use for rotate proxies, spread requests across proxies, avoid IP bans, retry through a different proxy, or proxy health check.

baronguyen001/ai-automation-skills

Parse an RSS 2.0 or Atom feed into normalized item dicts (title, link, id, published, summary) with the standard library only - no feedparser. Use when the user asks to read an RSS/Atom feed, poll a blog/news feed, extract feed entries, or watch a site that publishes a feed.

baronguyen001/ai-automation-skills

Upload and download run artifacts from S3-compatible storage with BYO bucket and credentials from env. Use when the user asks to store scraper output, archive reports, publish artifacts to object storage, fetch a prior run file, or use MinIO/R2/Spaces/S3 without hardcoding credentials.

baronguyen001/ai-automation-skills

Draft a short-form TikTok/Reels/Shorts or long-form video script from a topic and creator persona file - hook variants, beat-structured body, CTA, b-roll cues, caption overlays, and [STORY]/[NUMBER] slots so the model never fabricates personal facts. Use for write a video script, tiktok script, youtube script, or /shortform-script.

baronguyen001/ai-automation-skills

Give scheduled scripts memory between runs with one SQLite file - a seen-set for dedup, a key/value cursor to resume where you left off, and order-preserving new-item filtering. Use for dedup across runs, don't re-alert the same item, remember the last id, resume a scraper, or persist state between cron runs.

Habilidades Relacionadas