Skill: xueyetianya/slideshow-generator (version 2.0.0)

--- version: "2.0.0" name: slideshow-generator description: "Create HTML slideshows from Markdown with live preview. Use when drafting slides, editing decks, optimizing layouts, scheduling talks, repurposing content." --- # Slideshow Generator Content creation and slide deck toolkit. Draft slides, edit content, optimize layouts, manage schedules, and generate headlines — all from the command line. ## Commands Run `slideshow-generator <command> [args]` to use. | Command | Description | |---------|-------------| | `draft <input>` | Draft slide content or presentation ideas | | `edit <input>` | Edit and refine existing slide text | | `optimize <input>` | Optimize slide content for clarity and impact | | `schedule <input>` | Schedule presentations or talk dates | | `hashtags <input>` | Generate hashtags for slide content or social sharing | | `hooks <input>` | Create attention-grabbing hooks for opening slides | | `cta <input>` | Write calls-to-action for closing slides | | `rewrite <input>` | Rewrite slide content in a different style | | `translate <input>` | Translate slide text to another language | | `tone <input>` | Adjust the tone of slide content (formal, casual, etc.) | | `headline <input>` | Generate headlines or slide titles | | `outline <input>` | Create presentation outlines and structure | | `stats` | Show summary statistics across all log files | | `export <fmt>` | Export all data (json, csv, or txt) | | `search <term>` | Search all entries for a keyword | | `recent` | Show the 20 most recent history entries | | `status` | Health check — version, data size, entry count | | `help` | Show help message | | `version` | Show version (v2.0.0) | Each data command (draft, edit, optimize, schedule, hashtags, hooks, cta, rewrite, translate, tone, headline, outline) works in two modes: - **Without arguments** — displays the 20 most recent entries from its log - **With arguments** — saves the input with a timestamp to its dedicated log file ## Data Storage All data is stored in `~/.local/share/slideshow-generator/`: - `draft.log`, `edit.log`, `optimize.log`, `schedule.log`, `hashtags.log`, `hooks.log` — per-command log files - `cta.log`, `rewrite.log`, `translate.log`, `tone.log`, `headline.log`, `outline.log` — additional command logs - `history.log` — unified activity history across all commands - `export.json`, `export.csv`, `export.txt` — generated export files Set `SLIDESHOW_GENERATOR_DIR` environment variable to override the default data directory. ## Requirements - Bash 4+ with standard coreutils (`date`, `wc`, `du`, `tail`, `grep`, `sed`) - No external dependencies — pure shell implementation ## When to Use 1. **Drafting slide decks** — quickly draft and iterate on presentation content from the terminal 2. **Refining presentation text** — edit, rewrite, or adjust tone of existing slide content 3. **Scheduling talks** — keep track of upcoming presentation dates and deadlines 4. **Creating social hooks** — generate hashtags, headlines, and CTAs for promoting talks online 5. **Outlining presentations** — structure a talk from scratch with hierarchical outlines ## Examples ```bash # Draft slide content slideshow-generator draft "Intro slide: Why AI agents matter in 2026" # Create an outline slideshow-generator outline "1. Problem Statement 2. Our Solution 3. Demo 4. Results 5. Q&A" # Generate a headline slideshow-generator headline "The Future of Autonomous Coding: 5 Trends to Watch" # Write a hook slideshow-generator hooks "What if your code could write itself? (pause) It already can." # Create a CTA slideshow-generator cta "Star our repo on GitHub — join 10k+ developers building the future" # Optimize content slideshow-generator optimize "Slide 3: reduced from 85 words to 32, added visual cue" # Generate hashtags slideshow-generator hashtags "#AIAgents #DevTools #Presentation #TechTalk #Automation" # Schedule a talk slideshow-generator schedule "PyCon 2026: Apr 15 14:00, Room B, 30min slot" # Export all data as JSON slideshow-generator export json # Search entries slideshow-generator search "AI" # View recent activity slideshow-generator recent # Show statistics slideshow-generator stats ``` ## Output All commands output results to stdout. Log entries are stored with timestamps in pipe-delimited format (`YYYY-MM-DD HH:MM|value`). Use `export` to convert all data to JSON, CSV, or plain text. --- Powered by BytesAgain | bytesagain.com | [REDACTED_SECRET]

path: scripts/remark.sh.html
content: <!DOCTYPE html>
<html><head><title>Slides</title>
<style>
body{font-family:sans-serif;margin:0}
.slide{min-height:100vh;padding:60px;display:flex;flex-direction:column;justify-content:center;border-bottom:1px solid #eee}
h1{font-size:2.5em;color:#333}h2{font-size:2em;color:#555}
li{font-size:1.3em;margin:8px 0}
pre{background:#f5f5f5;padding:15px;border-radius:5px}
.footer{text-align:center;color:#999;padding:20px}
</style></head><body>
<div class="slide"><p>#!/usr/bin/env bash</p><h1>Remark — Markdown slideshow generator (inspired by gnab/remark 12K+ stars)</h1><p>set -euo pipefail</p><p>CMD="${1:-help}"; shift 2>/dev/null || true</p><p>case "$CMD" in</p><p>help) echo "Remark — HTML slideshow from Markdown</p><p>Commands:</p><p>generate <file>    Convert MD to HTML slideshow</p><p>preview <file>     Generate and show file path</p><p>theme <name>       Apply theme (dark/light/solarized)</p><p>speaker <file>     Add speaker notes format</p><p>info               Version info</p><p>Powered by BytesAgain | bytesagain.com";;</p><p>generate)</p><p>f="${1:-}"; [ -z "$f" ] && { echo "Usage: generate <file.md>"; exit 1; }</p><p>out="${f%.md}.html"</p><p>python3 << PYEOF</p><p>with open("$f") as fh: md = fh.read()</p><p>html = """<!DOCTYPE html></p><p><html><head><title>Slides</title></p><p><style></p><p>body{font-family:sans-serif;margin:0}</p><p>.slide{min-height:100vh;padding:60px;display:flex;flex-direction:column;justify-content:center;border-bottom:1px solid #eee}</p><p>h1{font-size:2.5em;color:#333}h2{font-size:2em;color:#555}</p><p>li{font-size:1.3em;margin:8px 0}</p><p>pre{background:#f5f5f5;padding:15px;border-radius:5px}</p><p>.footer{text-align:center;color:#999;padding:20px}</p><p></style></head><body></p><p>"""</p><p>slides = md.split("</p></div>
<div class="slide"><p>")</p><p>for i, slide in enumerate(slides):</p><p>content = slide.strip()</p><p>if not content: continue</p><p>html += '<div class="slide">'</p><p>for line in content.split("\\n"):</p><p>line = line.strip()</p><p>if line.startswith("# "): html += "<h1>{}</h1>".format(line[2:])</p><p>elif line.startswith("## "): html += "<h2>{}</h2>".format(line[3:])</p><p>elif line.startswith("### "): html += "<h3>{}</h3>".format(line[4:])</p><p>elif line.startswith("- "): html += "<li>{}</li>".format(line[2:])</p><p>elif line: html += "<p>{}</p>".format(line)</p><p>html += "</div>\\n"</p><p>html += '<div class="footer">Powered by BytesAgain</div></body></html>'</p><p>with open("$out", "w") as fh: fh.write(html)</p><p>print("Generated: $out ({} slides)".format(len(slides)))</p><p>PYEOF</p><p>;;</p><p>preview)</p><p>f="${1:-}"; [ -z "$f" ] && { echo "Usage: preview <file>"; exit 1; }</p><p>bash "$0" generate "$f"</p><p>out="${f%.md}.html"</p><p>echo "Open in browser: file://$(readlink -f "$out" 2>/dev/null || echo "$out")";;</p><p>theme)</p><p>name="${1:-dark}"</p><p>case "$name" in</p><p>dark) echo "background:#1a1a2e;color:#eee;h1{color:#e94560}";;</p><p>light) echo "background:#fff;color:#333;h1{color:#0f3460}";;</p><p>solarized) echo "background:#002b36;color:#839496;h1{color:#b58900}";;</p><p>*) echo "Themes: dark, light, solarized";;</p><p>esac;;</p><p>speaker)</p><p>f="${1:-}"; [ -z "$f" ] && { echo "Usage: speaker <file>"; exit 1; }</p><p>echo "Add speaker notes with ???:"</p><p>echo "  ## Slide Title"</p><p>echo "  Content here"</p><p>echo "  ???"</p><p>echo "  Speaker notes go here";;</p><p>info) echo "Remark v1.0.0"; echo "Inspired by: gnab/remark (12,000+ stars)"; echo "Powered by BytesAgain | bytesagain.com";;</p><p>*) echo "Unknown: $CMD"; exit 1;;</p><p>esac</p></div>
<div class="footer">Powered by BytesAgain</div></body></html>

path: scripts/script.sh
content: #!/usr/bin/env bash
# Slideshow Generator — content tool
# Powered by BytesAgain | bytesagain.com | [REDACTED_SECRET]
set -euo pipefail

DATA_DIR="${HOME}/.local/share/slideshow-generator"
mkdir -p "$DATA_DIR"

_log() { echo "$(date '+%m-%d %H:%M') $1: $2" >> "$DATA_DIR/history.log"; }
_version() { echo "slideshow-generator v2.0.0"; }

_help() {
    echo "Slideshow Generator v2.0.0 — content toolkit"
    echo ""
    echo "Usage: slideshow-generator <command> [args]"
    echo ""
    echo "Commands:"
    echo "  draft              Draft"
    echo "  edit               Edit"
    echo "  optimize           Optimize"
    echo "  schedule           Schedule"
    echo "  hashtags           Hashtags"
    echo "  hooks              Hooks"
    echo "  cta                Cta"
    echo "  rewrite            Rewrite"
    echo "  translate          Translate"
    echo "  tone               Tone"
    echo "  headline           Headline"
    echo "  outline            Outline"
    echo "  stats              Summary statistics"
    echo "  export <fmt>       Export (json|csv|txt)"
    echo "  search <term>      Search entries"
    echo "  recent             Recent activity"
    echo "  status             Health check"
    echo "  help               Show this help"
    echo "  version            Show version"
    echo ""
    echo "Data: $DATA_DIR"
}

_stats() {
    echo "=== Slideshow Generator Stats ==="
    local total=0
    for f in "$DATA_DIR"/*.log; do
        [ -f "$f" ] || continue
        local name=$(basename "$f" .log)
        local c=$(wc -l < "$f")
        total=$((total + c))
        echo "  $name: $c entries"
    done
    echo "  ---"
    echo "  Total: $total entries"
    echo "  Data size: $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1)"
}

_export() {
    local fmt="${1:-json}"
    local out="$DATA_DIR/export.$fmt"
    case "$fmt" in
        json)
            echo "[" > "$out"
            local first=1
            for f in "$DATA_DIR"/*.log; do
                [ -f "$f" ] || continue
                local name=$(basename "$f" .log)
                while IFS='|' read -r ts val; do
                    [ $first -eq 1 ] && first=0 || echo "," >> "$out"
                    printf '  {"type":"%s","time":"%s","value":"%s"}' "$name" "$ts" "$val" >> "$out"
                done < "$f"
            done
            echo "\n]" >> "$out"
            ;;
        csv)
            echo "type,time,value" > "$out"
            for f in "$DATA_DIR"/*.log; do
                [ -f "$f" ] || continue
                local name=$(basename "$f" .log)
                while IFS='|' read -r ts val; do echo "$name,$ts,$val" >> "$out"; done < "$f"
            done
            ;;
        txt)
            echo "=== Slideshow Generator Export ===" > "$out"
            for f in "$DATA_DIR"/*.log; do
                [ -f "$f" ] || continue
                echo "--- $(basename "$f" .log) ---" >> "$out"
                cat "$f" >> "$out"
            done
            ;;
        *) echo "Formats: json, csv, txt"; return 1 ;;
    esac
    echo "Exported to $out ($(wc -c < "$out") bytes)"
}

_status() {
    echo "=== Slideshow Generator Status ==="
    echo "  Version: v2.0.0"
    echo "  Data dir: $DATA_DIR"
    echo "  Entries: $(cat "$DATA_DIR"/*.log 2>/dev/null | wc -l) total"
    echo "  Disk: $(du -sh "$DATA_DIR" 2>/dev/null | cut -f1)"
    echo "  Last: $(tail -1 "$DATA_DIR/history.log" 2>/dev/null || echo never)"
    echo "  Status: OK"
}

_search() {
    local term="${1:?Usage: slideshow-generator search <term>}"
    echo "Searching for: $term"
    for f in "$DATA_DIR"/*.log; do
        [ -f "$f" ] || continue
        local m=$(grep -i "$term" "$f" 2>/dev/null || true)
        if [ -n "$m" ]; then
            echo "  --- $(basename "$f" .log) ---"
            echo "$m" | sed 's/^/    /'
        fi
    done
}

_recent() {
    echo "=== Recent Activity ==="
    tail -20 "$DATA_DIR/history.log" 2>/dev/null | sed 's/^/  /' || echo "  No activity yet."
}

case "${1:-help}" in
    draft)
        shift
        if [ $# -eq 0 ]; then
            echo "Recent draft entries:"
            tail -20 "$DATA_DIR/draft.log" 2>/dev/null || echo "  No entries yet. Use: slideshow-generator draft <input>"
        else
            local input="$*"
            local ts=$(date '+%Y-%m-%d %H:%M')
            echo "$ts|$input" >> "$DATA_DIR/draft.log"
            local total=$(wc -l < "$DATA_DIR/draft.log")
            echo "  [Slideshow Generator] draft: $input"
            echo "  Saved. Total draft entries: $total"
            _log "draft" "$input"
        fi
        ;;
    edit)
        shift
        if [ $# -eq 0 ]; then
            echo "Recent edit entries:"
            tail -20 "$DATA_DIR/edit.log" 2>/dev/null || echo "  No entries yet. Use: slideshow-generator edit <input>"
        else
            local input="$*"
            local ts=$(date '+%Y-%m-%d %H:%M')
            echo "$ts|$input" >> "$DATA_DIR/edit.log"
            local total=$(wc -l < "$DATA_DIR/edit.log")
            echo "  [Slideshow Generator] edit: $input"
            echo "  Saved. Total edit entries: $total"
            _log "edit" "$input"
        fi
        ;;
    optimize)
        shift
        if [ $# -eq 0 ]; then
            echo "Recent optimize entries:"
            tail -20 "$DATA_DIR/optimize.log" 2>/dev/null || echo "  No entries yet. Use: slideshow-generator optimize <input>"
        else
            local input="$*"
            local ts=$(date '+%Y-%m-%d %H:%M')
            echo "$ts|$input" >> "$DATA_DIR/optimize.log"
            local total=$(wc -l < "$DATA_DIR/optimize.log")
            echo "  [Slideshow Generator] optimize: $input"
            echo "  Saved. Total optimize entries: $total"
            _log "optimize" "$input"
        fi
        ;;
    schedule)
        shift
        if [ $# -eq 0 ]; then
            echo "Recent schedule entries:"
            tail -20 "$DATA_DIR/schedule.log" 2>/dev/null || echo "  No entries yet. Use: slideshow-generator schedule <input>"
        else
            local input="$*"
            local ts=$(date '+%Y-%m-%d %H:%M')
            echo "$ts|$input" >> "$DATA_DIR/schedule.log"
            local total=$(wc -l < "$DATA_DIR/schedule.log")
            echo "  [Slideshow Generator] schedule: $input"
            echo "  Saved. Total schedule entries: $total"
            _log "schedule" "$input"
        fi
        ;;
    hashtags)
        shift
        if [ $# -eq 0 ]; then
            echo "Recent hashtags entries:"
            tail -20 "$DATA_DIR/hashtags.log" 2>/dev/null || echo "  No entries yet. Use: slideshow-generator hashtags <input>"
        else
            local input="$*"
            local ts=$(date '+%Y-%m-%d %H:%M')
            echo "$ts|$input" >> "$DATA_DIR/hashtags.log"
            local total=$(wc -l < "$DATA_DIR/hashtags.log")
            echo "  [Slideshow Generator] hashtags: $input"
            echo "  Saved. Total hashtags entries: $total"
            _log "hashtags" "$input"
        fi
        ;;
    hooks)
        shift
        if [ $# -eq 0 ]; then
            echo "Recent hooks entries:"
            tail -20 "$DATA_DIR/hooks.log" 2>/dev/null || echo "  No entries yet. Use: slideshow-generator hooks <input>"
        else
            local input="$*"
            local ts=$(date '+%Y-%m-%d %H:%M')
            echo "$ts|$input" >> "$DATA_DIR/hooks.log"
            local total=$(wc -l < "$DATA_DIR/hooks.log")
            echo "  [Slideshow Generator] hooks: $input"
            echo "  Saved. Total hooks entries: $total"
            _log "hooks" "$input"
        fi
        ;;
    cta)
        shift
        if [ $# -eq 0 ]; then
            echo "Recent cta entries:"
            tail -20 "$DATA_DIR/cta.log" 2>/dev/null || echo "  No entries yet. Use: slideshow-generator cta <input>"
        else
            local input="$*"
            local ts=$(date '+%Y-%m-%d %H:%M')
            echo "$ts|$input" >> "$DATA_DIR/cta.log"
            local total=$(wc -l < "$DATA_DIR/cta.log")
            echo "  [Slideshow Generator] cta: $input"
            echo "  Saved. Total cta entries: $total"
            _log "cta" "$input"
        fi
        ;;
    rewrite)
        shift
        if [ $# -eq 0 ]; then
            echo "Recent rewrite entries:"
            tail -20 "$DATA_DIR/rewrite.log" 2>/dev/null || echo "  No entries yet. Use: slideshow-generator rewrite <input>"
        else
            local input="$*"
            local ts=$(date '+%Y-%m-%d %H:%M')
            echo "$ts|$input" >> "$DATA_DIR/rewrite.log"
            local total=$(wc -l < "$DATA_DIR/rewrite.log")
            echo "  [Slideshow Generator] rewrite: $input"
            echo "  Saved. Total rewrite entries: $total"
            _log "rewrite" "$input"
        fi
        ;;
    translate)
        shift
        if [ $# -eq 0 ]; then
            echo "Recent translate entries:"
            tail -20 "$DATA_DIR/translate.log" 2>/dev/null || echo "  No entries yet. Use: slideshow-generator translate <input>"
        else
            local input="$*"
            local ts=$(date '+%Y-%m-%d %H:%M')
            echo "$ts|$input" >> "$DATA_DIR/translate.log"
            local total=$(wc -l < "$DATA_DIR/translate.log")
            echo "  [Slideshow Generator] translate: $input"
            echo "  Saved. Total translate entries: $total"
            _log "translate" "$input"
        fi
        ;;
    tone)
        shift
        if [ $# -eq 0 ]; then
            echo "Recent tone entries:"
            tail -20 "$DATA_DIR/tone.log" 2>/dev/null || echo "  No entries yet. Use: slideshow-generator tone <input>"
        else
            local input="$*"
            local ts=$(date '+%Y-%m-%d %H:%M')
            echo "$ts|$input" >> "$DATA_DIR/tone.log"
            local total=$(wc -l < "$DATA_DIR/tone.log")
            echo "  [Slideshow Generator] tone: $input"
            echo "  Saved. Total tone entries: $total"
            _log "tone" "$input"
        fi
        ;;
    headline)
        shift
        if [ $# -eq 0 ]; then
            echo "Recent headline entries:"
            tail -20 "$DATA_DIR/headline.log" 2>/dev/null || echo "  No entries yet. Use: slideshow-generator headline <input>"
        else
            local input="$*"
            local ts=$(date '+%Y-%m-%d %H:%M')
            echo "$ts|$input" >> "$DATA_DIR/headline.log"
            local total=$(wc -l < "$DATA_DIR/headline.log")
            echo "  [Slideshow Generator] headline: $input"
            echo "  Saved. Total headline entries: $total"
            _log "headline" "$input"
        fi
        ;;
    outline)
        shift
        if [ $# -eq 0 ]; then
            echo "Recent outline entries:"
            tail -20 "$DATA_DIR/outline.log" 2>/dev/null || echo "  No entries yet. Use: slideshow-generator outline <input>"
        else
            local input="$*"
            local ts=$(date '+%Y-%m-%d %H:%M')
            echo "$ts|$input" >> "$DATA_DIR/outline.log"
            local total=$(wc -l < "$DATA_DIR/outline.log")
            echo "  [Slideshow Generator] outline: $input"
            echo "  Saved. Total outline entries: $total"
            _log "outline" "$input"
        fi
        ;;
    stats) _stats ;;
    export) shift; _export "$@" ;;
    search) shift; _search "$@" ;;
    recent) _recent ;;
    status) _status ;;
    help|--help|-h) _help ;;
    version|--version|-v) _version ;;
    *)
        echo "Unknown: $1 — run 'slideshow-generator help'"
        exit 1
        ;;
esac

Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)