CREMACREATOR STUDIO
YOUR FOOD. YOUR VOICE. YOUR WORKSPACE.

Make something
worth sharing.

CREMA Creator Studio is your workspace for publishing food stories, sharing photo galleries, building your audience and managing creator tools—all in one place.

Fresh colorful food arranged for a recipePublish your work

Create food stories, text posts and photo galleries in a focused editor.

Bright modern kitchen workspaceBuild your audience

Share recipes, cooking knowledge and culinary creativity with your community.

Fresh ingredients ready for cookingCreator tools

Explore planning tools and estimate possible advertising budgets or creator earnings.

QUICK ESTIMATORS

Plan your next step.

Estimate creator earnings, ad delivery and campaign performance. Enter your own assumptions; results are planning estimates, not guaranteed income.

Creator earnings calculator

Estimate potential gross earnings from pageviews and monetized ad impressions.

Estimated gross revenue$10.00
Impressions per pageview0.80
Estimated revenue per 1,000 impressions$1.25
Actual earnings depend on valid traffic, ad fill, geography, advertiser demand, network fees and payout rules.

Advertiser budget calculator

Estimate the number of impressions a campaign budget may buy at an assumed CPM.

Estimated impressions5,000
Estimated cost per 100,000 impressions$200.00
Budget after assumed delivery$10.00
Actual delivery depends on targeting, inventory, ad format, fill rate and campaign settings.

Cost and revenue quick reference

Change the values above to compare different scenarios.

Estimated revenue per day$10.00
Estimated revenue per 30 days$300.00
Estimated revenue in Nigerian nairaEnter an exchange rate
Exchange rate is editable and is not a live currency quote. Actual revenue may vary daily.
+creator.toFixed(2);$('studioPlatformResult').textContent='if($('campaignrefresh'))$('campaignrefresh').onclick=loadCampaigns;if($('networkrefresh'))$('networkrefresh').onclick=loadNetworks;if($('savenetwork'))$('savenetwork').onclick=saveNetwork;if($('saveprefs'))$('saveprefs').onclick=savePrefs;document.querySelectorAll('[data-removenetwork]').forEach(b=>b.onclick=()=>removeNetwork(b.dataset.removenetwork));document.querySelectorAll('[data-copy-link]').forEach(b=>b.onclick=async()=>{try{await navigator.clipboard.writeText(b.dataset.copyLink);b.textContent='Copied!'}catch(e){const t=document.createElement('textarea');t.value=b.dataset.copyLink;document.body.append(t);t.select();document.execCommand('copy');t.remove();b.textContent='Copied!'}});} async function loadCategories(){try{const r=await call('/api/categories');categories=(r.items||[]).filter(c=>!c.parent_id&&c.status==='ACTIVE');const sel=$('pcategory');if(sel){const current=sel.value;sel.innerHTML=''+categories.map(c=>'').join('');if(current)sel.value=current;}}catch(e){const sel=$('pcategory');if(sel)sel.innerHTML='';msg('Could not load categories: '+e.message)}} async function loadNetworks(){try{const r=await call('/api/creator/networks');networks=r.items||[];if(page==='connections')render()}catch(e){msg(e.message)}} async function saveNetwork(){const key=$('networkkey')?.value,name=$('networkname')?.value.trim(),ref=$('publisherref')?.value.trim()||'';const m=$('networkmsg');if(!name){m.innerHTML='';return}const b=$('savenetwork');b.disabled=true;try{const r=await call('/api/creator/networks',{method:'POST',body:{networkKey:key,displayName:name,publisherReference:ref}});m.innerHTML='';await loadNetworks()}catch(e){m.innerHTML=''}finally{b.disabled=false}} async function removeNetwork(id){if(!confirm('Remove this saved network reference?'))return;try{await call('/api/creator/networks/'+encodeURIComponent(id),{method:'DELETE'});await loadNetworks()}catch(e){msg(e.message)}} async function loadPrefs(){try{const r=await call('/api/creator/studio-preferences');studioPrefs=r.item||{};if(page==='settings')render()}catch(e){msg(e.message)}} async function savePrefs(){const b=$('saveprefs');b.disabled=true;try{const r=await call('/api/creator/studio-preferences',{method:'PUT',body:{theme:$('pref-theme').value,defaultContentType:$('pref-type').value,analyticsRangeDays:Number($('pref-days').value),emailAlerts:$('pref-email').checked,payoutAlerts:$('pref-payout').checked}});studioPrefs=r.item;$('prefmsg').innerHTML=''}catch(e){$('prefmsg').innerHTML=''}finally{b.disabled=false}} async function loadCampaigns(){try{const r=await call('/api/advertiser/campaigns');campaigns=r.items||r.campaigns||[];render()}catch(e){msg(e.message)}} function go(next){page=next;msg('');if(next==='advertise')loadCampaigns();if(next==='connections')loadNetworks();if(next==='settings')loadPrefs();render();$('side').classList.remove('open');$('overlay').classList.add('hidden');window.scrollTo(0,0)} async function savePost(publish){const title=$('ptitle')?.value.trim()||'',body=$('pbody')?.value||'',summary=$('psummary')?.value.trim()||'',visibility=$('visibility')?.value||'PUBLIC',categoryId=$('pcategory')?.value||'';const pm=$('postmsg');if(!title){pm.innerHTML='';return}if(postType!=='photo'&&!body.trim()){pm.innerHTML='';return}if(postType==='photo'&&!photos.length){pm.innerHTML='';return}if(publish&&!categoryId){pm.innerHTML='';return}const draft=$('savedraft'),pub=$('publish');draft.disabled=pub.disabled=true;pub.textContent='Saving…';pm.innerHTML='';try{const creator=session.user;const name=creator.user_metadata?.full_name||creator.email?.split('@')[0]||'CREMA Creator';const made=await call('/api/content',{method:'POST',body:{type:postType==='photo'?'photo':postType,title,creatorId:creator.id,creatorName:name,description:summary,articleBody:postType==='photo'?'':body,categoryId:categoryId||undefined,visibility:visibility,shareTo:'CREMA',status:'DRAFT'}});const id=made.item?.id;if(!id)throw Error('CREMA did not return a content ID.');const imageUrls=[];for(let i=0;i