Skip to content
Back to skills

Prtsc

ASecurity

Podiva se na posledni screenshoty z OneDrive Screenshots slozky a precte jejich obsah pomoci token-free OCR (Windows OCR API nebo Tesseract). Trigger: 'prtsc', '/prtsc', 'podivej se na screenshoty', 'co je na poslednim screenshotu', 'precti posledni screenshot'. Pouzij kdykoli uzivatel chce precist nebo popsat obsah nedavnych screenshotu.

  • 4 stars
  • 0 votes
  • 0 copies
  • 9 views
  • Added September 12, 2026
developmentpythonshellapi

Works with

  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add aibot88/sec_skill_store --skill prtsc --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Prtsc?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Prtsc
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aibot88-prtsc/badge)](https://www.skillsdirectory.com/skills/aibot88-prtsc)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: prtsc
description: "Podiva se na posledni screenshoty z OneDrive Screenshots slozky a precte jejich obsah pomoci token-free OCR (Windows OCR API nebo Tesseract). Trigger: 'prtsc', '/prtsc', 'podivej se na screenshoty', 'co je na poslednim screenshotu', 'precti posledni screenshot'. Pouzij kdykoli uzivatel chce precist nebo popsat obsah nedavnych screenshotu."
---

# Prtsc — Screenshot reader (token-free OCR)

## PARAMETRY

| Parametr | Default | Popis |
|----------|---------|-------|
| `n` | smart | Bez --n: nejnovější + burst skupina (soubory do 2 min od sebe). S --n X: přesně X souborů. |
| `folder` | viz SCREENSHOT_DIR | Jina slozka (optional) |

## SCREENSHOT DIR

```
L:\OneDrive - Jihočeská univerzita v Českých Budějovicích\Pictures\Screenshots
```

## EXECUTION

### 1. Spust OCR skript (token-free)

```powershell
python L:/LG13/app/agent/skills/prtsc_ocr.py
```

Bez parametrů: smart mode — nejnovější screenshot + burst skupina (soubory do 2 min od sebe).
Explicitní počet: `--n 3` (přepíše smart logiku).

Skript najde soubory, spusti Windows OCR API, vytiskne text.

### 2. Interpretuj vystup

OCR text zobraz Tomovi + pridej kratky kontext (co pravdepodobne screenshot zachycuje).

## OUTPUT FORMAT

```
Screenshot 1 — 2026-05-13 14:32  [nazev souboru]
--- OCR text ---
<extracted text>
---
Kontext: <co je na obrazku>

Screenshot 2 — ...
```

## NOTES

- Pokud skript neexistuje → viz SCRIPT SETUP nize
- Pokud OCR vrati prazdny string → obrazek je graficky (bez textu), rict to Tomovi
- Pokud uzivatel rekne "posledni screenshot" (singular) → bez parametrů (smart vrátí 1 pokud není burst)
- Explicitní počet: `--n X` přepíše smart logiku
- Skript pouziva Windows.Media.Ocr (zero dependencies) s fallback na pytesseract

## BEZPEČNOST

Pokud OCR text obsahuje hesla, čísla karet, přihlašovací údaje — zobraz jen první 2 znaky + `***`, nezobrazuj celý řetězec. Citlivé věci nejdou do logu ani kontextu déle než nutné.

## SCRIPT SETUP

Pokud `L:/LG13/app/agent/skills/prtsc_ocr.py` neexistuje, vytvor ho:

```python
import sys
import argparse
import json
from pathlib import Path
from datetime import datetime

sys.stdout.reconfigure(encoding='utf-8')

SCREENSHOTS_DIR = Path(r"L:\OneDrive - Jihočeská univerzita v Českých Budějovicích\Pictures\Screenshots")


def ocr_windows(image_path: Path) -> str:
    """Windows OCR API — zero dependencies."""
    try:
        import asyncio
        import winsdk.windows.media.ocr as ocr
        import winsdk.windows.graphics.imaging as imaging
        import winsdk.windows.storage as storage

        async def _run():
            file = await storage.StorageFile.get_file_from_path_async(str(image_path))
            stream = await file.open_async(0)
            decoder = await imaging.BitmapDecoder.create_async(stream)
            bitmap = await decoder.get_software_bitmap_async()
            engine = ocr.OcrEngine.try_create_from_user_profile_languages()
            if engine is None:
                engine = ocr.OcrEngine.try_create_from_language(
                    winsdk.windows.globalization.Language("cs-CZ")
                )
            result = await engine.recognize_async(bitmap)
            return result.text if result else ""

        return asyncio.run(_run())
    except Exception:
        return ""


def ocr_tesseract(image_path: Path) -> str:
    """Fallback: Tesseract."""
    try:
        import pytesseract
        from PIL import Image
        return pytesseract.image_to_string(Image.open(image_path), lang='ces+eng')
    except Exception:
        return ""


def ocr_file(image_path: Path) -> str:
    text = ocr_windows(image_path)
    if not text.strip():
        text = ocr_tesseract(image_path)
    return text.strip()


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('--n', type=int, default=3)
    parser.add_argument('--folder', default=str(SCREENSHOTS_DIR))
    parser.add_argument('--json', action='store_true')
    args = parser.parse_args()

    folder = Path(args.folder)
    files = sorted(folder.glob('*.png'), key=lambda f: f.stat().st_mtime, reverse=True)[:args.n]

    results = []
    for f in files:
        mtime = datetime.fromtimestamp(f.stat().st_mtime).strftime('%Y-%m-%d %H:%M')
        text = ocr_file(f)
        results.append({'file': f.name, 'mtime': mtime, 'text': text})

    if args.json:
        print(json.dumps(results, ensure_ascii=False, indent=2))
    else:
        for i, r in enumerate(results, 1):
            print(f"Screenshot {i} — {r['mtime']}  [{r['file']}]")
            print("--- OCR text ---")
            print(r['text'] if r['text'] else "(zadny text / graficky obsah)")
            print("---\n")


if __name__ == '__main__':
    main()
```

Files in this skill

  • SKILL.md4.7 KB
  • source.json816 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.