Ketryon Doc
⌘K

Composer

The note/link/screenshot input, with post-vs-reply mode.

The composer is where a draft starts — a note, a pasted link, a dragged-in screenshot, or any combination, plus a post/reply mode toggle that changes both the AI prompt and the tweet's structural rules.

Attachment sources

SourceHow it's grounded
NoteExpanded directly, no external fetch
Linkgpt-5-search-api searches the web to confirm what it's about
ScreenshotVision model reads the image directly — no fetch at all

Screenshots exist specifically for sources a URL fetch can't reach — X/Twitter blocks crawlers at the server level.

function generateTweetFromComposer(input: {
  note?: string;
  url?: string;
  screenshotDataUrl?: string;
  mode?: DraftMode;
}) {
  if (input.screenshotDataUrl) return generateTweetFromScreenshot(/* ... */);
  if (input.url) return generateTweetFromUrl(/* ... */);
  return generateTweetFromNote(/* ... */);
}