Skip to contents

Use this as the primary entry point for processing new artwork uploads. The pipeline handles all steps from raw files to fully populated database records, including certificate generation. For partial processing or debugging, use individual extraction functions instead.

The pipeline executes these steps in order: 1. **Upload**: Land all artwork files to CDN (art-vault, art-public) 2. **Extract**: Parse canvas metadata, creation dates, timelapse videos 3. **Generate**: Create gallery images, color datasets, frame analytics 4. **AI Analysis**: Generate artwork descriptions, style classifications 5. **Database**: Populate all artwork tables (artwork_index, artwork_stats, etc.) 6. **Certificate**: Render and upload certificate of authenticity

Usage

launch_artwork_pipeline(
  artist,
  artwork,
  collection,
  artist_name,
  art_title,
  art_story,
  file_image,
  file_canvas,
  file_video,
  zip_frames,
  file_stats,
  file_variants,
  nft_url = NULL
)

run_pipeline(
  artist,
  artwork,
  collection,
  artist_name,
  art_title,
  art_story,
  file_image,
  file_canvas,
  file_video,
  zip_frames,
  file_stats,
  file_variants,
  nft_url = NULL
)

Arguments

artist

Character. Artist UUID (format: `746bxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`). The `746b` prefix identifies platform-registered artists. Obtain from `artutils::get_artist_by_slug()` or the artist registration workflow.

artwork

Character. Artwork UUID (format: `99xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`). The `99` prefix indicates platform-authenticated artworks. Generate with `artcore::gen_artwork_id()` before calling the pipeline.

collection

Character. Collection UUID (format: `77xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`). The `77` prefix identifies collections. Obtain from `artutils::get_artist_collections_summary()` (column `collection_uuid`) or pass the artist's default collection UUID.

artist_name

Character. Artist display name for AI-generated content and certificate rendering. Should match the name in the artist's profile.

art_title

Character. Artwork title for display, search indexing, and AI context. Will be normalized to create `art_name` (lowercase, underscored).

art_story

Character or NULL. Optional artist-provided backstory or description. When provided, AI incorporates this into generated profiles. Pass NULL if artist did not provide a story.

file_image

Character. Absolute path to main PNG artwork image. Must be a high-resolution PNG file that exists on the local filesystem. This becomes the canonical artwork image stored in art-vault.

file_canvas

Character. Absolute path to .procreate canvas file. Must be a valid Procreate archive containing timelapse segments. Use `assess_procreate_canvas()` to validate before pipeline execution.

file_video

Character. Absolute path to timelapse MP4 video. Typically exported from Procreate. Used for frame extraction and gallery GIF generation.

zip_frames

Character or NULL. Optional path to pre-extracted frames ZIP. If NULL (typical), frames are extracted from file_video during processing. Use for re-processing when frames already exist.

file_stats

Character. Absolute path to Procreate stats screenshot (PNG or JPEG). Must clearly show "Total Strokes Made" and "Tracked Time" values. OCR extracts these values for benchmarking.

file_variants

Character or NULL. Optional path to variants directory containing additional PNG versions of the artwork. Pass NULL if no variants.

nft_url

Character or NULL. Optional OpenSea NFT URL if artwork is minted. Format: `https://opensea.io/assets/{chain}/{contract}/{id}`. Pass NULL if artwork is not an NFT.

Value

List. The table_list from run_pipeline containing all generated data.tables.

List. Named list (table_list) containing all generated data.tables: artwork_index, artwork_stats, artwork_paths, artwork_hash, artwork_styles, global_styles, artwork_profiles, artwork_colors, and more.

Details

End-to-end artwork processing pipeline that orchestrates upload, extraction, AI analysis, and database population for new artwork submissions.

Functions

  • launch_artwork_pipeline(): Launch pipeline with error handling wrapper

  • run_pipeline(): Execute the full artwork processing pipeline

See also

[job_add()], [job_update()], [upload_artdata()], [create_frame_analytics()]

Other pipeline orchestration: pl-jobs

Examples

if (FALSE) { # \dontrun{
result <- run_pipeline(
  artist = "746b8207-72f5-4ab6-8d19-a91d03daec3d",
  artwork = "99a61148-1d3b-4340-8cf6-92ad26046b0f",
  collection = "collection-uuid",
  artist_name = "Artist Name",
  art_title = "Artwork Title",
  art_story = NULL,
  file_image = "/path/to/image.png",
  file_canvas = "/path/to/canvas.procreate",
  file_video = "/path/to/timelapse.mp4",
  zip_frames = NULL,
  file_stats = "/path/to/stats.png",
  file_variants = NULL
)
} # }