CMS
WorkFlow
- Eagle API https://developer.eagle.cool/plugin-api
graph TB subgraph assets[App/book/assets] subgraph audios short long subgraph sync mp3 timecode[timecode txt] end end subgraph images page1 page2 page3 end subgraph videos end subgraph spreadsheets end end descriptors -.-> prompts-.-> AI -. files .-> Adobe creatorA((generative artist)) --> notebook creatorA -->descriptors subgraph Adobe[Media Files Library] Photoshop Illustrator Animate Premiere AfterEffects Audition end Photoshop -.-> UXP UXP[kwik extension] -. png jpg path .->images Animate -.-> spreadsheets Premiere -.-> videos AfterEffects-.->videos Audition -.- audios Illustrator -. svg, png, jpg .->images creatorC((content creator)) -.-> Adobe
generative AI
graph TB subgraph descriptors[media descriptors] fountain[fountain screenplay] description[image/video/audio descriptions] end subgraph notebook[jupyter notebook] python[python scripts/curl/wget ..] prompts OCR text[extracted text] OCR-.->text end subgraph AI[gen AI] SML eleventhLabs suno stableDiffusion[SD/Midjourney] end SML -. anew or refined .->descriptors subgraph assets[App/book/assets] subgraph audios short long subgraph sync mp3 timecode[timecode txt] end end subgraph images page1 page2 page3 end subgraph videos end subgraph spreadsheets end end descriptors -.-> prompts-.-> AI -. files .-> Adobe[(Media Files Library)] creatorA((generative artist)) --> notebook creatorA -->descriptors Adobe -. publish .-> assets
App/book/assets/model.lua
local M = { -- audios = {}, sprites = {}, -- videos = {} audios = { { name = "click.mp3", path = "audios/short", links = {{page = "page1"}, {page = "page2"}} } }, videos = { { name = "videoA.mp4", path = "videos", links = { {page= "page01", layers = {"layerA1", "layerA10"}}, {page= "page02", layers = {"layerA2", "layerA20"}} }, }, { name = "videoB.mp4", path = "videos", links = {{page= "page01", layers = {"layerB"}}} } }, } return M
links are updated when creating/deleting a compoenet(audio, video etc) in kwik editor
read with self.assetsSelector:onClick or selectBook.loadPage()
editor/assets/index.lua
local function readAsset(path, folder, map, parent) -- print(path.."/"..folder) local entries = {} local success = lfs.chdir( path.."/"..folder ) if success then for file in lfs.dir( path.."/"..folder ) do if util.isDir(file) and file~="." and file~=".." then -- print("", "@Found dir " .. file ) local children = readAsset(path.."/"..folder, file, map, folder) for i=1, #children do entries[#entries + 1] = children[i] end elseif file~="." and file~=".." and file:find(".lua") == nil and file:find("@") == nil and file:find(".json") == nil then local mapEntry = map[file] if mapEntry == nil then if parent==nil then entries[#entries + 1] = {name=file, path=folder, links={}} else local v = parent.."/"..folder entries[#entries + 1] = {name=file, path=v:gsub("audios/",""), links={}} end else mapEntry.isExist = true entries[#entries + 1] = {name=mapEntry.name, path=mapEntry.path, links=mapEntry.links} end end end lfs.chdir( path ) end return entries end
Image Tile View extension

Eagle
search “-” excludes a word
“-@” excludes @2x, @4x
shortcut for search is commnad + F
it shows text file too