---
slug: cards
title: "Cards: pulling a memory out as one shareable page"
description: "A one-page public page your AI writes from your memories. Public the moment it's made; managed from the console."
lang: en
---


# Cards: pulling a memory out as one shareable page

Memories in AiAkiv are **yours alone.** Showing one to someone meant copying and
pasting it every time. **Cards** bridge that. Tell your AI "make a card on this
topic" and it produces **one public page** organizing your memories, and hands
back **one address.** Paste that address into any messenger, Slack, or blog and
it unfolds as a card.

> **In one line.** A card is **a one-page public page your AI writes from your
> memories.** It goes on the web the moment it's created, and anyone with the
> address sees it without signing in. Management (copying the address, images,
> deleting, search visibility) is in **Console → Data → Cards.**

This page is read by both people and AIs. §1–§7 are for people, **§8 is for the
AI.** An AI may read §8 first, but must read §5 (things you must know) with it.

---

## 1. What a card is

One card holds these.

| Field | Content | Where it shows |
|------|------|--------------|
| **Title** | One line | Page, image, link preview |
| **Summary** | 3–5 key lines | Page, image |
| **Conclusion** | One sentence | Page, image, link preview description |
| **Tags** | Up to 3 | Page, bottom of the image, search |
| **Body** *(optional)* | A proper piece of writing (Markdown) | **Page only** |
| Source count | "From N memories" | Bottom of the image |

The recipient **does not need an AiAkiv account.** No sign-in. It's just a web
page. Alongside the card page, **two images** (landscape and square) are created,
with the card's address engraved in them.

The address is short:

```
https://card.aiakiv.com/kx7mabcd23
```

Ten characters, deliberately. In places like Instagram where links aren't
clickable, someone has to read it off the screen and type it. Easily confused
characters (`i` `l` `o` `0` `1`) are excluded entirely.

### The roles of the card and the body

With only a card, clicking through shows the same summary you already saw in the
preview. There's no reason to click. Add a **body** and the card becomes the
hook, the page the substance. So the reading order is **summary → body →
conclusion.** Without a body it behaves exactly like a card alone.

It is **not a blog.** No post list, no comments, no subscriptions, no author
profile. **Making one at a time and sharing one at a time** is the whole scope of
this feature.

---

## 2. Creating: you tell your AI

Cards are made **only through an AI.** There's no create button in the console.
Organizing content is the AI's job, and the console is where you manage what was
made.

Say this to an AI you've connected AiAkiv to (Claude, ChatGPT, Codex, Gemini…):

> "Find 〈topic〉 in my memory and make it a card. Write a body too."

The AI does three things.

1. **Searches** your memories and gathers content on that topic
2. **Writes** the title, summary, conclusion (and body) itself, the AI writes,
   and the server never touches the text
3. Hands it to the card service to be **baked** → an address comes back

**You decide what goes in.** The AI decides how it's organized. If you don't like
it, ask again (but read §5's "asking again makes a new card" first).

### Asking well

- **Keep the topic narrow.** "Why AiAkiv is a graph" makes a better card than "an
  overview of AiAkiv." The summary is only 3–5 lines, so a broad topic goes
  blurry.
- **Say whether you want a body.** "Write a body too" / "card only". A body is
  what gives someone a reason to click.
- **Set the search terms.** Tags are the search terms (§4). Saying "tag it
  memory-graph and team-sharing" means you can find it later by those words on
  `card.aiakiv.com`.
- **You can build one from public memory.** Even with no memories of your own, you
  can make a card from public memory you can read.
- **To see a draft first**, say "just show me the content first." The AI shows a
  draft and creates it after you confirm. Since it's public the moment it's made
  (§5), that one step earns its keep on sensitive topics.

### What comes back

- **A notice that it's public**: the AI says this first ("this card is already
  live on the web …"). It isn't boilerplate; it's the state right now
- **The address**: `https://card.aiakiv.com/……`, ten characters
- **Two image addresses**: landscape (`…/og.png`) and square (`…/square.png`)
- (If applicable) **a truncation notice**: if the summary was too long and got
  cut in the image, the AI tells you which lines. Then you decide whether to
  shorten and remake it, or leave it

---

## 3. Posting: where it goes and how it looks

| Where | What you do | How it looks |
|------|-----------|-------------|
| Messengers, Slack, Discord, Telegram | Paste the address | Unfolds automatically as a card |
| Blogs, forums, Notion | Paste the address | Same |
| Facebook, LinkedIn, X, Reddit | Paste the address | Same |
| WordPress, Notion embed | Paste the address | The card page lives inside |
| **Instagram** | Upload the **image**, put the address in the caption | Shows as an image |
| **Some community boards** | Paste the address, or upload the image if it doesn't unfold | Varies by board |

### Where to get the images

In **Console → Data → Cards**, each card has **Images › Square / Landscape**
links. They open in a new tab; save from there. Opening the image addresses the
AI gave you when creating is the same thing.

- **Square**: for Instagram. A line at the bottom carries the address and search
  terms legibly
- **Landscape**: for boards and blogs. The same picture used in link previews

The address is engraved in the image, so even where links don't work, a viewer
has a path back to the card. Modern phones let you tap and copy text inside a
photo, which makes that path wider than you'd think.

### Worth knowing: an unfolded card is one link, whole

The card a messenger or Slack unfolds is that service reading our information and
redrawing it their own way. You can't tap individual text inside it. **anywhere
you tap goes to the card page.** Links you put in the body become clickable after
entering the page. That isn't a defect, it's the intended flow: preview as hook,
click as conversion, body as destination.

Preview support differs per service and changes with their redesigns. **The first
time you post somewhere, check once.**

---

## 4. Managing: in the console

**Console ([app.aiakiv.com](https://app.aiakiv.com)) → Data → Cards.**

| What you can do | Description |
|-------------|------|
| **List** | Cards you made. Title, creation date, search visibility |
| **Copy address** | The card address to your clipboard |
| **Images** | Opens square / landscape in a new tab → save and upload |
| **Delete** | Deletes after one confirmation. **Not reversible** |
| **Search visibility** | On/off. Default is **off** |
| **Public nickname** | The name shown as author in search results. Assigned automatically if you set none |
| **Category tags** | Drawers you create. Attach and detach on cards |

The same notice always sits at the top of the list. "the cards here are already
public." There's also a collapsible **how to make a card** guide (a copyable
prompt, the format limits).

### Search visibility: the easily misread setting

**A card is public even with search turned off.** Off means "not findable", not
"not visible". Anyone with the address sees it any time.

Turning search **on** additionally makes it **findable by anyone** at
[card.aiakiv.com](https://card.aiakiv.com). Search matches on **title and tags.**
A card made to share in one Slack channel turning up in a stranger's search isn't
the "public" its maker expected, so the default is off and you must **turn it on
explicitly.** You can toggle it, so you can decide later.

Toggling happens only in the console. Asking an AI to "make it searchable" won't
work. It isn't something to decide at creation time but a setting you change your
mind about later, so it's kept there.

### Public nickname: the name behind "all cards by this person"

Search results show your nickname as the **author** of your cards. Clicking it
shows only your cards, and you can share that screen's address directly.

- **You get a name whether you set one or not.** Creating your first card
  assigns something like `anonymous-473812` automatically, because without a name
  cards don't group by author in search. Change it in the console if you don't
  like it
- **The number is random, not sequential.** A sequential one would tell anyone
  who saw `anonymous-7` that the service has seven users
- **You can't pick an `anonymous-…` name yourself.** Claiming an unused number
  early would block whoever is later assigned it
- **The name only goes into the search listing.** The card page carries no
  author, so the name only travels with cards that have **search visibility on**
- **Your email is never made public under any circumstance.** The search index
  file can be downloaded by anyone without signing in, so the only value in it
  that points at a person is **the nickname**
- **No language restriction.** Korean, Japanese, Arabic all work. 2–20
  characters; spaces are stripped
- **First come, first served.** A name already in use can't be taken
- Clear it and save and it comes down. But **the next card you create gets an
  automatic name again**
- ⚠ **Changing** the name breaks any "all cards" address you shared under the old
  one. **Card addresses are unaffected**

### Category tags: drawers you create

Two kinds of tag attach to a card, which is easy to confuse. They're different.

| | Who attaches it | Where it shows | Can you change it |
|---|---|---|---|
| **Card tags** | The AI, at creation | The card **image** and the bottom of the page | ✗ engraved into the image |
| **Category tags** | You, in the console | The card **page** and search | ✓ any time |

Two steps to use them.

1. **Make a drawer**: at the top of the console's card screen, create a tag like
   `design` or `retro` (up to 50)
2. **Attach it to a card**: press **Categorize** next to a card and pick from
   what you made (up to 5 per card)

An attached tag shows at the bottom of the card page, and clicking it **collects
cards with the same tag.** The card image **does not change**: a tag edit
shouldn't alter a picture you already spread around.

Deleting a drawer **doesn't remove it from cards it's already on.** Detach it
from that card's category editor directly. (Rebaking every card on each delete
would mean a long wait for anyone with many cards. Instead: "new attachments only
from what you made, existing ones detachable any time.")

### Three ways to find: and the screen is the address

[card.aiakiv.com](https://card.aiakiv.com) has three fields. **They combine.**

| Field | What it matches |
|---|---|
| **Search term** | Titles and card tags containing those characters |
| **Creator** | Cards by that nickname |
| **Category tag** | Cards in that drawer |

Each time you narrow, **the address bar follows.** There's no "pin" button to
press. Copy the address of the screen you're looking at, send it, and the other
person sees the same screen. The **copy this screen's address** button on the page
does the same in one click.

---

## 5. Things you must know

### It's public from the moment it's made

A card is on the web the instant it's created, and anyone with the address sees it
without signing in. **Posting the address makes it *findable*, not *public*.**

The address is hard to guess, so in practice only you know it, but that isn't
"private". This distinction matters enough that the AI **tells you it's public
right there** when it makes one, and the same line always sits at the top of the
console's card screen.

So it's worth reading it once after creation to check that **personal content,
information not yet ready to be public, or other people's names and emails**
didn't get in. The AI pulls from your memories, so unintended things can come
along. On sensitive topics, ask for a draft first (§2).

### Delete and the page comes down immediately: but caches may linger

- Delete a card and the page and images come down immediately. Not reversible
- However, **preview caches** held by messengers and Slack **can linger for a
  while.** Those belong to that service and we can't clear them
- What someone already saved is out of reach

"Publishing can't be undone" means exactly this.

### Asking again makes a new card

Say "fix the content" and the AI **makes a new card.** The previous one is still
public and still counts against your quota. After fixing, **delete the old one in
the console.** That's why the AI tells you to (the AI cannot delete).

There is no "edit card" feature right now. So the goal is **getting it right the
first time.**

### The summary can be truncated

The 3–5 summary lines **share a fixed vertical space in the image.** So writing
all five long lines will be cut in the image even within the per-line character
limit. When it's cut the AI tells you ("lines 3 and 5 were cut, shorten to N
characters"). Then you shorten and remake (= a new card), or leave it. The page
shows the full text; only the **image** truncates.

### Deleting your account doesn't remove your cards

Closing your account doesn't automatically remove cards you already shared. That's
to stop links other people posted from suddenly dying. Cards are also anonymous.
They contain none of the creator's name, email, or original memories. If you want
them gone, **clean up in the console before closing your account**; if you've
already closed it and a card needs to come down, ask the operator
(support@aiakiv.com).

### Limits

| Item | Limit |
|------|------|
| Held | 50 per account. Delete to make more |
| Creation rate | 10 per hour, 30 per day |
| Title | 80 characters |
| Summary | 3–5 lines, 120 characters each (the safe line for full visibility in the image is much shorter: §8) |
| Conclusion | 200 characters |
| Tags | 3, 20 characters each |
| Body | 30,000 characters, restricted Markdown |

The limits exist to prevent abuse, not for cost. They keep a public domain from
becoming a scratchpad. The values are provisional and will be adjusted based on
real use.

---

## 6. How it works overall

```
[Person]  "make a card on 〈topic〉"
   │
[AI]    ① searches my memories (with my permissions)
        ② writes the title, summary, conclusion, body  ← the AI writes
        ③ hands it to AiAkiv: "make this in the card app"
   │
[AiAkiv]④ verifies who's creating · issues a short address · records only "whose"
        ⑤ forwards it to the card service
   │
[Card service] ⑥ checks format only (lengths, counts), never judges content
              ⑦ bakes page HTML + 2 images from a fixed template
              ⑧ uploads to public storage
   │
[AI]    ⑨ delivers the "it's public" notice + the address to the person
   │
[Anyone] visits the address → storage returns the page as-is (no sign-in, no code)
```

Properties worth knowing about this flow:

- **The AI writes; the server doesn't.** The card service never calls an AI model.
  So the summary's quality is your AI's quality, and if you don't like it, asking
  your AI again is the right move. That's why there's no "AI summarize" button in
  the console.
- **The server bakes.** The AI only sends card **data** (title, summary…). HTML
  and images are always produced by the server from a fixed template. So arbitrary
  code can't ride into a card page, and if we change the design later, existing
  cards can be rebaked in the new shape.
- **It's cut off from the original memories.** A card holds no reference back to
  them. It's a self-contained snapshot. Delete the original and the card remains;
  cards are deleted separately. Conversely, deleting a card leaves memories
  untouched.
- **There's no code on the public path.** The card page is returned as-is by
  public storage. No sign-in, no database, no server code in between. So even if
  the public page were breached, what leaks is "cards that are already public."
- **Who made it isn't published.** Ownership is recorded only inside AiAkiv, and
  no account information exists in the card's address, page, or images. One thing
  is visible though: **cards sharing the first 4 characters of the address belong
  to the same person** (a structure that lets an operator clean up one person's
  cards at once).
- **Link previews use the standard mechanism.** The card page carries Open Graph
  meta (title, description, image) and oEmbed. Messengers, Slack, and Notion read
  those to unfold the card.
- **Search is a static index.** Only cards with search visibility on go into the
  index file, and the search page filters it in the browser. Toggling rebuilds the
  index.

---

## 7. Common questions

**Q. I turned search visibility off: why is it still visible?**
Search visibility is about *findability*, not *visibility*. To make it invisible,
delete it (§4).

**Q. I asked my AI to delete a card and it says it can't.**
Correct. An AI can only create; it can't delete or change search visibility. Do it
in the console. Taking down something public is a decision left to a person
confirming it on screen.

**Q. The summary got cut in the image.**
Several summary lines share one space in the image. The AI tells you which lines
were cut when it creates. Shorten and remake (§5), or leave it, the page has the
full text.

**Q. Someone else's name ended up in a card.**
Delete it now. The page comes down immediately. Caches can linger for a while, so
if you already shared it, know that.

**Q. Can I get back from a card to my memory?**
No. A card is a snapshot cut off from the original. The recipient isn't an AiAkiv
member and has no permission to read your memories.

**Q. Can I make a card from team memory?**
If you can read it, yes. But a card is personally owned by its creator and its
publication scope is the whole world. You're putting the team's memory outside, so
check it fits your team's rules first.

---

## 8. For the AI

This section is read by an AI connected to AiAkiv. It covers what to do, in what
order, when a person says "make me a card", and what you must always say.

### Tools

Cards are not a dedicated tool but one **shared app endpoint**.

```
run_aiakiv_app_action(app="card", action="describe")            # ask for the format
run_aiakiv_app_action(app="card", action="create", data={...})  # create
```

- `action` is **only `describe` and `create`.** Deleting, editing, and changing
  search visibility **cannot be done** with this tool. Direct the user to the
  console (Data → Cards).
- **The public nickname and category tags can't be done here either.** Both are
  set by a person in the console (§4). To "add a tag" or "put my name on it",
  **do not say you can**: give the console location. `data.tags` is a different
  thing: those are the card's own tags, engraved into the image and set once at
  creation.
- `data` is a JSON object or a **JSON string**. If the body is long and
  multi-line, the argument can get mangled. Send a string in that case.
- If you're unsure of the format, **call `describe` first.** Don't guess.

### Procedure

1. **Search the memories**: gather the topic with `search_memory`
   ([Searching](searching)). Don't invent what isn't in memory. Put the
   actual number of memories used in `source_count`.
2. **Filter out sensitive content**: personal names, emails, internal addresses,
   decisions not yet public. A card is public the moment it's made. When in doubt,
   show the user a draft first.
3. **Write to the format**: the fields and limits below. In particular, keep the
   summary within the **image safe line.**
4. **Call `create`.**
5. **Deliver the response's `notice` to the user before anything else.** Then the
   address, then the summary. Do not shorten it.
6. If there's a `fit`, report **exactly** what was truncated. Whether to remake is
   the user's call. Say alongside it that remaking **creates a new card and leaves
   the old one.**

### Fields and limits (same as the `describe` response)

| Field | Type | Required | Limit |
|------|-----|-----|------|
| `title` | string | ✓ | 80 chars |
| `bullets` | string array | ✓ | 3–5 items, 120 chars each. **The image safe line is much shorter (below)** |
| `conclusion` | string | ✓ | 200 chars |
| `source_count` | integer | | ≥ 0. The number of memories actually used |
| `tags` | string array | | 3 items, 20 chars each. These become search terms |
| `body` | string | | 30,000 chars, restricted Markdown |

Title, summary, conclusion, and tags are **single-line fields.** Newlines in them
collapse to spaces. Only the body treats newlines as syntax.

**Syntax allowed in the body:** paragraphs, `## heading`, `- list`, `1. list`,
`> quote`, `` `code` ``, ` ``` ` blocks, `**bold**`, `*italic*`,
`[text](https://…)`, `---`. Anything else comes out as literal text. Only
`http(s)` becomes a link. HTML put in is not executed as code.

### The summary safe line: staying within the limit still truncates

`describe`'s `bullets.renders` gives measured values. Currently:

- `safe_chars_per_line`: **30 characters** (worst case for Korean; English and
  spaces fit more)
- `max_lines_each`: **3 lines**

Several summary items **share one space.** Writing five items at 90 characters
each respects the 120-character limit and still truncates everything in the image.
Safe targets:

- 5 summary items → **about 30 characters each (1 line)**: or
- 3 summary items → **60–90 characters each (2–3 lines)**

These values were measured, so don't memorize them. Read them from `describe`.
The goal is **getting it right the first time.** Remaking isn't free.

### Reading the response

**Success:**

```json
{
  "notice": "TELL THE USER BEFORE ANYTHING ELSE: this card is already live … ",
  "ok": true, "app": "card", "key": "kx7mabcd23",
  "url": "https://card.aiakiv.com/kx7mabcd23",
  "og_url": "…/og.png", "square_url": "…/square.png",
  "title": "…", "tags": ["…"], "revision": 1,
  "fit": { "fits": false, "bullets_truncated": [3, 5], "hint": "…" }   // only when truncated
}
```

- `notice`: deliver it **first, verbatim.** It states that the card is now public
  and how to remove it (the console). Even though it's in the tool description and
  in this document, saying it again from that specific response is the rule.
- `url`: show it **literally**, as a clickable link. Don't shorten or alter it.
- `og_url` / `square_url`: images for Instagram and boards. When the user asks
  for images, point at these addresses or the console's "Images".
- `fit`: if present, something was truncated. It holds `bullets_truncated`
  (ellipsized item numbers), `bullets_dropped` (items omitted entirely),
  `title_truncated`, `conclusion_truncated`, and a `hint` with how far to shorten.
  Deliver it **as is**, don't summarize it.

**Failure:** shaped as `{"error": "...", "hint": "...", "field": "..."}`.

| `error` | Meaning | What to do |
|---------|-----|------|
| `invalid_card` | Format violation. `field` says which one | Fix that field and resend |
| `payload_too_large` | Request over 128KB | Shorten the body |
| `quota_exceeded` | 50 held / 10 per hour / 30 per day | Tell the user. If it's the holding limit, they must delete in the console before creating |
| `owner_mismatch` and others | A service-side problem | Report it as-is and do not retry |

When an error comes back, **the card was not created.** Do not tell the user it
was.

### Don't

- Don't fill a card with **content that isn't in memory.** A card is a summary of
  memories.
- Don't create a card the user didn't ask for. "Write this up" is not a card
  request.
- Don't omit or abbreviate the `notice`.
- Don't say "I deleted it" or "I turned search off". You can't. Point at the
  console.
- Don't post a created card's address anywhere on the user's behalf. Posting is
  the person's decision.
- Don't silently remake when something was truncated without telling the user.
  Remaking makes two cards.

### Worth telling the user alongside

- Paste the address into messengers, Slack, or Notion and it unfolds; for
  Instagram, upload the image
- To make it findable, turn on search visibility in the console (off by default)
- To remove it, Console → Data → Cards. Even after deleting, preview caches
  elsewhere can linger for a while

---

## Related

- Searching to gather content → [Searching](searching)
- What you may store and publish → [What to store](what-to-store)
- AI rules generally → [For AI agents](for-ai-agents)
- Console menus → [Console](console)
- The public search page → [card.aiakiv.com](https://card.aiakiv.com)
