> ## Documentation Index
> Fetch the complete documentation index at: https://docs.newly.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Marketing Studio

> Generate marketing videos, images, and run influencer outreach from inside any Newly project

# Marketing Studio

Marketing Studio is the in-project panel for everything you need to launch
your app: short marketing videos, hero images, and an outreach agent that
finds and contacts Instagram influencers.

It lives in the right-hand tool strip of every project, next to the Visual
Editor. A top-level toggle switches between the three modes:

* **Video** — [ByteDance Seedance 2.0](#videos-seedance-2-0), with auto-selected
  text / image / reference-to-video modes and an optional Fast path.
* **Image** — [Google Nano Banana 2](#images-nano-banana-2) (Gemini 3 Flash
  Image) for high-fidelity text-to-image with SynthID watermarking, up to 4K.
* **Outreach** — [an agent](#outreach) that searches Instagram hashtags,
  extracts public emails from creator bios, and sends personalized
  CPM-based partnership offers.

<Note>
  Everything you generate is saved to your project's local history so you
  can download or reuse it any time.
</Note>

## Videos (Seedance 2.0)

Seedance 2.0 is a high-quality video generator from ByteDance. Newly
automatically picks the best sub-model based on what you give it:

| Input                                   | Endpoint                                    |
| --------------------------------------- | ------------------------------------------- |
| Text only                               | `bytedance/seedance-2.0/text-to-video`      |
| Exactly 1 image                         | `bytedance/seedance-2.0/image-to-video`     |
| Multiple images / any video / any audio | `bytedance/seedance-2.0/reference-to-video` |

There is nothing to toggle — just upload media and write a prompt. The
panel shows which sub-model will run.

### Reference media

<Tabs>
  <Tab title="Images">
    Up to 9 JPEG / PNG / WebP files, 30 MB each. Reference them in the
    prompt with `@Image1`, `@Image2`, etc. Use the same image across scenes
    to keep a character consistent.
  </Tab>

  <Tab title="Videos">
    Up to 3 MP4 / MOV clips, 50 MB total. Combined duration 2–15 seconds.
    Reference as `@Video1`, `@Video2`. Great for transferring camera moves
    or energy between videos.
  </Tab>

  <Tab title="Audio">
    Up to 3 MP3 / WAV files, 15 MB each, 15 seconds combined. Reference as
    `@Audio1`. Audio alone isn't enough — you always need at least one
    image or video reference alongside it.
  </Tab>
</Tabs>

Total references across all modalities cap at **12 files**.

### Fast mode

The amber **Fast** pill switches to Seedance's fast variants
(`.../fast/image-to-video`, etc). Fast is quicker and cheaper but caps at
**720p**. The panel automatically downgrades resolution if you had 1080p
selected.

### Options

| Option         | Values                                               |
| -------------- | ---------------------------------------------------- |
| Resolution     | `480p`, `720p`, `1080p` (Standard only)              |
| Duration       | `auto`, or 4–15 seconds                              |
| Aspect ratio   | `auto`, `21:9`, `16:9`, `4:3`, `1:1`, `3:4`, `9:16`  |
| Generate audio | On by default. Audio costs the same as silent video. |

<Tip>
  Leave duration and aspect ratio on `auto` for your first few generations.
  Seedance usually picks a sensible length and framing from the prompt.
</Tip>

### Prompt patterns

* Start with the action: **"Woman jogging along a beach at sunrise, camera
  tracking beside her"**
* Name references explicitly: **"@Image1 walks into the shot, picks up the
  product, smiles at camera"**
* For camera moves, borrow language from film: *dolly in, crane up, whip
  pan, handheld, macro, drone, 35mm*.

### Generate a reference image first

Inside the **Media** section there is a `Generate image` button. It opens
a Nano Banana 2 dialog, lets you prompt an image, and drops the generated
image directly into your video's reference list. Useful when you need
a consistent character or product shot but don't have one on hand.

## Images (Nano Banana 2)

Nano Banana 2 is Google's Gemini 3 Flash Image model. High-fidelity
text-to-image with an invisible SynthID watermark on every output, up to
4K resolution.

### Options

| Option           | Values                                                                          |
| ---------------- | ------------------------------------------------------------------------------- |
| Number of images | 1–4                                                                             |
| Aspect ratio     | `auto`, `21:9`, `16:9`, `3:2`, `4:3`, `5:4`, `1:1`, `4:5`, `3:4`, `2:3`, `9:16` |
| Resolution       | `0.5K`, `1K`, `2K`, `4K`                                                        |
| Output format    | `jpeg`, `png`, `webp`                                                           |

### Advanced

* **Enable web search** — lets the model ground its output on recent
  web information (e.g. current brand logos, product shots).
* **Thinking level** — `minimal` for speed, `high` for tougher prompts
  with complex composition or text rendering.
* **Safety tolerance** — 1–6; higher = looser filter.

<Note>
  All outputs carry a SynthID watermark. It is invisible to the eye but
  detectable by Google's verifier tools.
</Note>

## Outreach

The Outreach agent turns a few Instagram hashtags into a personalized
email campaign. Pipeline:

<Steps>
  <Step title="Discovery">
    The agent scrapes recent posts under each hashtag and collects the
    unique creators who posted them.
  </Step>

  <Step title="Profile enrichment">
    For each creator it fetches the profile — bio, follower count, and
    `businessEmail` / `publicEmail` fields.
  </Step>

  <Step title="Email extraction">
    If there's no business email field, it parses the bio for an
    explicit address and handles common obfuscations like
    `name (at) domain (dot) com`.
  </Step>

  <Step title="Filter">
    Creators are filtered by your follower range and de-duped across
    hashtags. Creators with no discoverable email are dropped.
  </Step>

  <Step title="Send">
    You review the list, hit **Send all**, and the agent mails a
    personalized offer to each creator — throttled to \~400 ms per email
    to be polite to rate limits.
  </Step>
</Steps>

### CPM-based offers

You enter a single **CPM** (cost per thousand people reached). The agent
computes a rough per-post offer based on follower count assuming \~30%
reach. That value is inserted into the email via the `{{offer}}` variable
so every message carries a concrete number for that creator.

### Template variables

All substituted client-side before the email is sent:

| Variable           | Example                                                  |
| ------------------ | -------------------------------------------------------- |
| `{{name}}`         | `Alex` — first name or username                          |
| `{{full_name}}`    | `Alex Morgan`                                            |
| `{{handle}}`       | `@alex.fitness`                                          |
| `{{followers}}`    | `52.9K`                                                  |
| `{{cpm}}`          | `$15.00`                                                 |
| `{{offer}}`        | `$238.05` — per-post estimate                            |
| `{{hashtag}}`      | `fitness`                                                |
| `{{product_name}}` | `Acme Pro` — your product, set per campaign              |
| `{{sender_tag}}`   | `Alex · Partnerships` — your signature, set per campaign |

### Providers

<AccordionGroup>
  <Accordion title="Discovery — Apify">
    `APIFY_TOKEN` enables real Instagram scraping via Apify's
    `apify/instagram-hashtag-scraper` and `apify/instagram-profile-scraper`
    actors. Without it, campaigns use realistic demo data so you can
    exercise the flow end-to-end.
  </Accordion>

  <Accordion title="Delivery — Resend">
    `RESEND_API_KEY` and `OUTREACH_FROM_EMAIL` enable real email sending
    through [Resend](https://resend.com). Without them, sends run in
    **preview** mode — the full request is logged and marked as sent,
    but no email leaves the server. Set `OUTREACH_FROM_NAME` to override
    the default sender label (`Partnerships`).
  </Accordion>
</AccordionGroup>

### Compliance

<Warning>
  Only emails **publicly listed** in a creator's bio are collected.
  Depending on where your recipients live, you may be bound by
  [CAN-SPAM](https://www.ftc.gov/business-guidance/resources/can-spam-act-compliance-guide-business)
  and GDPR — keep your subject honest, identify yourself, include a
  physical address, and honor opt-outs in production templates.
</Warning>

Outreach is rate-limited to **10 searches/hour** and **100 sends/hour**
per signed-in user.

## Limits & troubleshooting

* Generations: **30 videos + images per signed-in user per hour**.
* Reference images 30 MB each, videos 50 MB each, audio 15 MB each.
* If a job stays *queued* for more than \~3 minutes, it may have failed
  silently — delete it and try again.
* Generated URLs are hosted on `fal.media` and may expire. Download
  anything you want to keep.

## FAQ

<AccordionGroup>
  <Accordion title="Why did it pick Reference-to-Video when I only added one image?">
    Reference-to-Video kicks in as soon as you mix modalities or use
    multiple references. A single image alone uses the Image-to-Video
    path.
  </Accordion>

  <Accordion title="Can I use my own characters across scenes?">
    Yes — upload a reference image of the character and prompt with
    `@Image1` to keep them consistent. For multiple shots of the same
    subject, reuse the same image reference.
  </Accordion>

  <Accordion title="How long does generation take?">
    Images usually finish in 10–30 seconds. Videos take 1–3 minutes
    (30 seconds–1 minute in Fast mode).
  </Accordion>

  <Accordion title="Why did my Outreach search return no creators?">
    Two common causes: (1) the hashtag is too niche and none of the
    discovered profiles expose an email in the bio, or (2) your follower
    range is too restrictive. Try broader hashtags and a wider follower
    window.
  </Accordion>

  <Accordion title="Are Outreach emails really sent?">
    Only if `RESEND_API_KEY` and `OUTREACH_FROM_EMAIL` are configured.
    Otherwise sends run in **preview** mode and are marked as sent in the
    UI without actual delivery — intentional for safer development.
  </Accordion>
</AccordionGroup>

## Next steps

<CardGroup cols={2}>
  <Card title="AI Chat" icon="message-bot" href="/features/ai-chat">
    Prompt the core AI to build your app
  </Card>

  <Card title="Live Preview" icon="eye" href="/features/preview">
    Test your app in a real Expo runtime
  </Card>
</CardGroup>
