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 wrapperrun_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
)
} # }
