Integração Diamond OS
Outposted é a camada canônica de publicação do Diamond OS. Snapshot público token-gated dá uma URL estável pro fluxo do flywheel do fundador linkar conteúdo publicado.
Setup
- Workspace + API key — Diamond OS usa 1 workspace por fundador. A API key é gerada via signup do Outposted (welcome email tem o plaintext, hashea no banco).
- Brand — cada fundador-marca vira uma Brand no workspace. Use
POST /v1/workspaces/{wsId}/brands. - Connections — OAuth flow conecta IG/FB/YT/LI/Threads do fundador. Cada brand pode ter 1+ connection por plataforma.
- Webhook endpoint — Diamond OS configura endpoint pra receber
content.publishedecontent.partialcompublic_url.
Fluxo canônico
Diamond OS cria o content via SDK ou HTTP, dispatcha o publish, recebe o webhook quando termina, e (opcionalmente) consulta o snapshot completo pra registrar no flywheel do fundador.
Criar content
Status default é draft. Pra publicar direto, passe status: 'queued'. Pra agendar, passe schedule_at.
import { Outposted } from '@outposted/node';
const outposted = new Outposted({ apiKey: process.env.OUTPOSTED_API_KEY! });
const result = await outposted.contents.create('ws_123', {
brand_id: 'brand_founder_xyz',
content_type: 'post',
target_platforms: ['instagram'],
content: {
caption: 'Conteúdo do flywheel — segunda peça da semana.',
media: [{ type: 'image', url: 'https://cdn.example.com/post.jpg' }],
},
status: 'queued', // publish imediato
});
console.log(result.content_id); // ct_abc123Receber webhook content.published
Quando todos os jobs ficam OK, Outposted dispara content.published no endpoint do Diamond OS. Payload inclui public_url top-level.
{
"event": "content.published",
"content_id": "ct_abc123",
"workspace_id": "ws_123",
"public_url": "https://outposted.one/p/9k2m...",
"platforms_published": ["instagram"],
"platforms_failed": [],
"published_at": "2026-06-08T12:34:56Z"
}Se algum job falhar, vem content.partial (em vez de content.published) com platforms_published + platforms_failed + também public_url.
(Opcional) GET /snapshot — payload completo
Quando precisar de mais do que só a URL — caption, media com width/height, remote_post_id + remote_url por plataforma — consuma o endpoint canônico de integração.
const snapshot = await outposted.contents.snapshot.get(
'ws_123',
'ct_abc123',
);
console.log(snapshot.public_url);
console.log(snapshot.platforms_published);
// [{ platform: 'instagram', remote_post_id: '17890...',
// remote_url: 'https://instagram.com/p/...', published_at: '...' }]Sobre o snapshot público
- Token estável.
public_tokené gerado uma vez na criação do content e nunca muda. URLoutposted.one/p/{token}serve durante todo o ciclo de vida. - Auto-share no agendamento/publish. Quando o content transita pra
scheduledoupublished,public_statusauto-bumpa deprivate→shareable. - Não-indexável.
robots.txtdisallow +meta name="robots"noindex. Token aleatório alta entropia (~128 bits) — enumeration inviável. - Revoke imediato. POST
/snapshot/revokederruba a URL em até 60s (KV purga + TTL)./p/{token}passa a retornar 410 Gone permanentemente — não há undo. - Mídia estável. Snapshot serve mídia do R2 do próprio Outposted via signed URLs com TTL longo (24h), geradas em tempo de render — não da CDN do Instagram/YouTube (que expira em horas). Revoga = derruba o snapshot e a mídia para de ser acessível via link público.
O snapshot é freeze no momento da publicação. Pra editar caption depois, use POST /clone pra duplicar o content como novo rascunho — edita o clone e publica. URLs ficam separadas (snapshot original continua válido se quiser preservar histórico).
Casos de uso no flywheel
Registro histórico do flywheel
Cada peça publicada do fundador vira um link outposted.one/p/ estável que pode ser inserido em narrativas internas do brain, prova social, ou retrospectivas.
Pré-aprovação interna
Criou um rascunho? Chama POST /snapshot/share pra liberar a URL. Manda o link pra outro membro da equipe revisar. Quando aprovado, agenda ou publica.
DMCA / retratação
Conteúdo veio à tona problemático? POST /snapshot/revoke tira do ar em segundos. /p/{token} passa a retornar 410 Gone — sinaliza ao crawler/visitante que conteúdo existiu mas foi removido propositalmente.