Skip to main content

Shareable URLs for notebook outputs — snap any chart, DataFrame, or figure into a live link

Project description

Skua

Shareable URLs for notebook outputs

One function call turns plots, DataFrames, and text into permanent links. Re-run the cell to update — same URL, fresh results.

Installation

pip install getskua

No setup required. No account, no API key.

Quick Start

import matplotlib.pyplot as plt
import skua

fig, ax = plt.subplots()
ax.plot([1, 2, 3], [1, 4, 9])
ax.set_title("Quadratic Growth")

result = skua.snap(fig, title="Quadratic Growth")
print(result.url)  # https://skua.dev/s/abc123

Share the URL with anyone. Call skua.snap() again with the same title to update in place.

CLI

Works with any tool that can run shell commands — AI coding assistants, CI pipelines, scripts.

skua snap chart.png --title "Q3 Revenue"
skua snap data.csv --title "Sales Data" --public --tags "finance,q3"
skua snap plot.json --title "Interactive Chart"
cat report.txt | skua snap - --type text --title "Analysis"

Use --json for machine-readable output:

skua snap chart.png --title "Chart" --json
# {"url": "https://skua.dev/s/abc123", "id": "abc123", "visibility": "public"}

Supported Types

Skua auto-detects the object type and picks the right serializer:

  • Matplotlib figures — high-DPI PNG
  • Plotly figures — fully interactive (zoom, pan, hover, export)
  • Pandas DataFrames — sortable, filterable tables
  • Polars DataFrames — same interactive tables (LazyFrames collected automatically)
  • NumPy arrays — rendered as tables
  • PIL Images — saved as PNG
  • Lists of dicts — rendered as tables (handy for HuggingFace pipelines, eval loops)
  • PyTorch / TensorFlow tensors — image tensors as PNG, others as tables
  • Anything else — falls back to string representation

API

skua.snap(obj, title, description=None, public=None, tags=None)

Capture and share a Python object. Returns a SnapResult with .url and .metadata. In Jupyter, the original object is displayed inline.

  • tags — optional list of strings for categorization (max 20 tags, 50 chars each). Displayed on the snapshot page and profile listing.

skua.configure(public=None, api_url=None, web_url=None, token=None)

Set session-wide defaults. Call once at the top of a notebook — per-call arguments override.

skua.login()

Open the browser to verify your email. Verified accounts get 90-day retention (vs 7 days), 50 snapshots (vs 10), and a public profile page at skua.dev/u/username.

skua.auth("sk_...")

Paste the token you receive by email after skua.login().

Limits

Anonymous sessions work out of the box:

  • 7-day retention, 10 snapshots, 20 uploads/hour, 10 MB per snapshot

Verify your email to unlock:

  • 90-day retention (resets on update, 1-year max), 50 snapshots, 10 MB per snapshot

Privacy

Every snapshot is accessible to anyone who has its URL. URLs contain random IDs that are not guessable or listed anywhere, but there is no login-gated access control. The public flag only controls whether a snapshot appears on your profile page — it does not restrict access to the URL itself. Do not snap sensitive data.

Documentation

Full docs, live examples, and the API reference at skua.dev/docs.

License

MIT

Support

Questions or feedback? Email hello@skua.dev or open an issue on GitHub.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

getskua-0.9.3.tar.gz (16.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

getskua-0.9.3-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

Details for the file getskua-0.9.3.tar.gz.

File metadata

  • Download URL: getskua-0.9.3.tar.gz
  • Upload date:
  • Size: 16.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for getskua-0.9.3.tar.gz
Algorithm Hash digest
SHA256 e3da74d1d5bb31718be87612f022713e6d4d474679c7c844ee508d2797da33e8
MD5 05c1af32c74b3d7ec5a654c6e09a2f32
BLAKE2b-256 bef3e5cb21654c4d370c0906c8ebf15d1b7d1b21c18b5569a5012d1da7b1ccab

See more details on using hashes here.

File details

Details for the file getskua-0.9.3-py3-none-any.whl.

File metadata

  • Download URL: getskua-0.9.3-py3-none-any.whl
  • Upload date:
  • Size: 20.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.9 {"installer":{"name":"uv","version":"0.9.9"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for getskua-0.9.3-py3-none-any.whl
Algorithm Hash digest
SHA256 7a546cbeebf750bf8b5a9e8bdc77558ac7ebef3f6d30e48212fc3bc16fcf99b6
MD5 8e3a50b159e8766a6717c35432aae2e2
BLAKE2b-256 b599421fda7f9a3aac8e2edfd1957909fec4c56b46ed4ba06710701789da2a9d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page