# Clips & creators

Short videos, Clips Live, verified badges, gifts, brand deals and the creator fund.

## The Clips app

**Clips** is a short vertical video app. Players download it from Nova Store on Wolfden Phone and Wolfden Phone Pro; it is not available on Wolfden Phone Secure.

- Clips has its own accounts with a username and password, separate from the phone number and the Nova Account. The username is the player's @handle. One phone can keep up to five accounts and switch between them on the profile.
- The app needs service and uses mobile data. Each clip that starts playing uses data, so players on Wi-Fi watch for free.
- Posted videos are hosted like any other phone video, so Clips needs a [media host](#/docs/wd_phone/media).

## Posting and watching

A clip is one **video** from the phone's Gallery, recorded with the Camera. Photos cannot be posted. **Record** opens the Camera in video mode and picks the new recording when the player comes back.

- The Camera records up to 60 seconds by default, so that is the longest clip. Each account can post 30 clips in 24 hours.
- Captions turn `#hashtags` and `@mentions` into links.
- **For You** shows recent clips ranked by likes, comments, shares and views, favouring accounts the player follows and pushing down clips they have already watched. **Following** shows the newest clips from followed accounts.
- Tap pauses, double-tap likes, and the mute button is remembered.
- Players can like, comment, follow, and share a clip to a conversation in Messages. **Discover** finds accounts, hashtags and trending tags.
- Accounts can be private, with follow requests. Blocks apply both ways, everywhere in the app.
- The **Inbox** collects likes, comments, mentions, follows and requests, and notifications reach every phone the account is signed in on.

A posted clip keeps playing even after the player deletes the video from their Gallery.

## Moderation

Players can report clips, comments and accounts. Grant your staff the Clips moderation permission in `server.cfg`:

```cfg
add_ace group.admin wd_phone.clips.moderate allow
```

Moderators get a **Moderation** queue in the app (Profile → accounts sheet), can remove any clip or comment, and can end any live stream from its screen. A player can always delete comments on their own clips.

A player locked out of a Clips account can have its password reset by an admin with `phoneadmin accountpw clips <username> <newPassword>`. See [Admin tools](#/docs/wd_phone/admin) for the admin and moderation permissions.

Developers can remove a clip with the `RemoveClip` export and read open reports with `GetClipsReports`.

## Clips Live

**Go Live** on the Create tab streams the phone's selfie camera, or the rear one, to viewers, with an optional title.

- Clips Live uses the same relay as video calls. Until [video calls](#/docs/wd_phone/video-calls) are turned on and a relay is set up, Go Live is refused. The picture only ever goes through the relay, so nobody learns another player's IP address.
- Viewers hear the broadcaster's voice through pma-voice, like the other side of a call. Set `live.voice = false` for picture only.
- Followers are notified when an account goes live, at most once every 30 minutes. Viewers join from the **Live** row above the feeds, the LIVE ring on a profile, or the notification. Private accounts and blocks apply as in the rest of Clips.
- Live chat and hearts reach everyone in the stream, with the viewer count. The broadcaster can mute their mic and remove a viewer for the rest of the stream.
- Putting the phone away or leaving Clips pauses the picture, and the live ends after two minutes paused. It also ends when the phone is put on a call, turned off, put in lost mode or airplane mode, runs out of data, or leaves the player's inventory.
- Going live is refused during a call, in Low Power Mode and on Wolfden Phone Secure.
- Streaming uses mobile data every minute, for the broadcaster and for each viewer, and drains the broadcaster's battery like a video call.
- **Nothing is recorded.** There is no replay, and restarting the resource ends every live.

**Upload cost.** Each viewer is a separate connection uploaded by the broadcaster's own game client and carried by your relay. At good signal that is about 0.6 Mbps per viewer, so 8 viewers is about 4.8 Mbps up from that player and through your relay. On a small relay, lower `maxViewers` or the `quality` rows.

## Co-hosting a live

The broadcaster can invite one viewer to **co-host** from the viewers sheet. The viewer has 30 seconds to accept.

- Viewers then see a split screen, with the broadcaster on top and the co-host below, and hear both. The two co-hosts see and hear each other.
- The co-host's phone is checked like the broadcaster's and pays the same data. A problem on their side, the broadcaster removing them, or **Stop co-hosting** ends only the co-hosting, not the live.
- The co-host uploads their camera to every viewer as well, so a collab live roughly doubles the upload and relay traffic.
- Gifts still go to the broadcaster only.

## Clips settings

Edit `Config.Clips` in `config/clips.lua`:

| Setting | Default | What it does |
| --- | --- | --- |
| `enabled` | `true` | Turns Clips on or off |
| `maxDurationSeconds` | `90` | Longest clip that can be posted. Camera recordings stop at `Config.Camera.video.maxSeconds` (`60`) in `config/media.lua`, so raise that too for longer clips |
| `maxClipsPerDay` | `30` | Clips one account may post in 24 hours |
| `maxCaptionLength` / `maxCommentLength` | `300` / `300` | Text limits |
| `reportReasons` | Spam, harassment, violence, nudity, misinformation, other | Report reasons offered in the app |
| `moderatorAce` | `wd_phone.clips.moderate` | Permission for the Moderation queue |
| `live.enabled` | `true` | Turns Clips Live on or off |
| `live.maxViewers` | `8` | Viewers at once, per stream |
| `live.maxStreams` | `10` | Live streams at once, on the whole server |
| `live.pauseTimeoutSeconds` | `120` | How long a paused live waits before it ends |
| `live.notifyFollowers` | `true` | Notify followers when an account goes live |
| `live.notifyCooldownMinutes` | `30` | Least time between two "is live" notifications for one account |
| `live.voice` | `true` | Viewers hear the broadcaster through pma-voice |
| `live.collab.enabled` | `true` | Allow co-hosts |
| `live.quality` | 0.6 Mbps at 4 to 5 bars | Picture sent to each viewer, by the broadcaster's signal |

Mobile data per action is at the bottom of `config/clips.lua`, under `Config.MobileData.usage` (`clipsWatch`, `clipsLiveBroadcast`, `clipsLiveWatch` and others). Account limits and password rules are in `config/accounts.lua`.

## Verified badges

Clips, Snapgram and Echo profiles can carry a **verified badge**, shown next to the name on profiles, posts, comments, search results and direct messages. Verified accounts come first in search.

- **Moderators** verify or unverify a profile from Clips or Echo moderation.
- **Admins** use the console or an authorised in-game admin account:

```text
phoneadmin verify <clips|snapgram|echo> <handle>
phoneadmin unverify <clips|snapgram|echo> <handle>
```

- **Automatically** by followers: set a number of accepted followers per app in `Config.Creators.verification.autoFollowers` (`config/creators.lua`). It is `0` for every app by default, which turns it off.
- **Other resources** use the `SetProfileVerified` export.

A badge is never taken away automatically, and the follower check never gives back a badge someone took away. A verified account that changes its handle loses the badge (`clearOnRename = true`).

## Live gifts

Viewers can send **gifts** during a live. The viewer's Nova Wallet pays the price, and the broadcaster's character receives it minus a 20% platform fee, which leaves the economy.

| Gift | Price |
| --- | --- |
| Rose | 1 |
| Heart | 5 |
| Star | 25 |
| Crown | 100 |
| Rocket | 500 |
| Diamond | 2500 |

- Every gift shows in the stream for everyone. The card switch, daily card limit and Activity in [Nova Wallet](#/docs/wd_phone/wallet) apply.
- A character cannot gift their own live and can give at most 10,000 a day across all streams.
- If the broadcaster cannot be paid, the viewer is refunded automatically.
- **Creator tools** on the profile show gift earnings for today, the last 7 days and all time.

Change prices, the fee and the daily limit in `Config.Creators.gifts`. Each gift needs an `id`, a whole-number `price` and an `icon`.

## Brand deals

Businesses can pay Clips creators for a sponsored clip.

1. **Offer.** An employee of a business opens the Business app's **Campaigns** tab and offers a creator's @handle an amount, with a brief and a time to post (1, 3 or 7 days after accepting). The money leaves a Wallet account the employee can spend from when the offer is sent, and is held.
2. **Accept.** The creator accepts or declines in Clips, under Profile → **Creator tools**. The character who accepts is the one paid.
3. **Post and submit.** The creator posts a new clip and submits it to the deal.
4. **Review.** The business approves and pays, or requests changes, up to two times. A clip not reviewed within 48 hours is approved and paid automatically.

- Offers nobody answers within 48 hours expire. Declined, cancelled and expired deals are refunded to the account that paid. Once a clip is submitted, the business can no longer cancel.
- Sponsored clips show a **Paid partnership** label with the business's name.
- Offers are between 50 and 100,000, and never more than the Wallet's maximum transfer. By default the platform takes no fee on deals.

Change the limits in `Config.Creators.deals`. Businesses and their jobs are set in `Config.PhoneBusinesses` in `config/commerce.lua`; see [Marketplace and Business](#/docs/wd_phone/productivity?section=marketplace-and-business).

## Creator fund

Each week, creators are paid for their clips' views through Nova Wallet, as "Creator fund" in Activity. The money comes from outside the economy.

- A view counts once per character per clip and never the poster's own, so alternate accounts and replays add nothing. Only clips posted after the fund was installed count.
- Weeks start on Monday at 00:00 server time. After a week ends, each creator is paid 10 per 1,000 counted views, up to 5,000 a week. Under 1,000 counted views pays nothing.
- **Creator tools** show this week's counted views, the estimated payout and when the week ends, plus the last eight payouts.

| Setting | Default | What it does |
| --- | --- | --- |
| `fund.enabled` | `true` | Turns the creator fund on or off |
| `fund.ratePer1000` | `10` | Paid per 1,000 counted views |
| `fund.minViews` | `1000` | Counted views a week needs to be paid |
| `fund.weeklyCap` | `5000` | Most one character is paid per week |
| `fund.historyWeeks` | `8` | Past payouts shown in Creator tools |

Set `fund.enabled = false` if you do not want money entering the economy this way.

## Analytics and charts

**Analytics**, in Creator tools or **View analytics** on one of the player's own clips, shows only the signed-in account's numbers: followers and their change, daily views, likes, comments, shares and clips posted, and the top clips for the last 7 or 28 days. A clip's own sheet shows its totals, its like, comment and share rates, and its daily views over up to 14 days. Follower history starts when Clips is installed.

**Charts** on the Discover tab show the city's weekly leaderboards, for this week and last week:

- **Top creators**: the most views gained that week.
- **Rising**: the most new followers.
- **Top clips**: the most viewed clips that week.

Private accounts only appear to their followers, and blocked accounts never appear.

Every Monday, a **Top creators** article about the week that ended is published in the News app, in the Los Santos Ledger's Entertainment section. Only public accounts are named. The outlet's editors can edit or unpublish it. Choose the outlet and section in `Config.Creators.charts.newsArticle`, or set `enabled = false` there to stop the article.
