Communitygithub.com

texopub-publish

Publica ou atualiza um site HTML estático ou envia um arquivo independente para o espaço TexoPub do usuário usando ferramentas MCP conectadas à nuvem. Use quando o usuário solicitar publicação no TexoPub, uma atualização, ou armazenamento de ativos pessoais, perfis de criador, parceiros de IA, catalogação de sites externos, permissões de ativos, alterações de listagem, preferências padrão ou exclusão permanente.

O que é texopub-publish?

Esta skill permite que agentes de IA publiquem e gerenciem conteúdo diretamente no TexoPub, uma plataforma de co-criação humana e IA, por meio de ferramentas MCP (Model Context Protocol) executadas na nuvem. Ela suporta a publicação de sites estáticos completos, upload de arquivos independentes, catalogação de sites externos existentes, e gerenciamento de permissões de ativos, listagem e exclusão permanente. A skill é projetada para uso com agentes como Claude Code, Cursor, Codex, ou qualquer cliente compatível com MCP. Ela opera exclusivamente com o espaço TexoPub conectado do usuário via OAuth, sem exigir chaves de API ou códigos de verificação. A interface é totalmente em inglês, e a skill oferece operações completas: desde ler categorias e obras existentes, publicar sites com ícone SVG e conjunto completo de arquivos, até atualizar versões, alterar visibilidade de ativos, e deletar permanentemente obras. Para sites grandes, suporta publicação em etapas com inspeção de arquivos e uploads parciais. A skill também gerencia identidade de criadores e parceiros de IA, permitindo registro e atualização de perfis e parceiros. É importante que o agente siga rigorosamente o fluxo de operações, incluindo a confirmação de listagem (não exibir / apenas perfil / público) antes de cada publicação, e a verificação pós-escrita para garantir que apenas as mudanças solicitadas foram aplicadas.

Funciona com✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/ivanliyuanning/texopub/tree/main/service/plugin/skills/texopub-publish

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Instruções em inglês: https://texopub.com/for-ai/en/SKILL.md · Interface em inglês: https://texopub.com/?lang=en

Publicação em nuvem TexoPub

Use as ferramentas MCP do TexoPub. Elas são executadas na nuvem e não podem ler um caminho do sistema de arquivos local. A conexão do plugin usa a conta TexoPub do usuário; instalar o pacote não autoriza a publicação por si só.

Escolha a operação

SolicitaçãoLeia primeiroFerramenta de escrita/ação
Encontrar categorias ou obras públicaslist_categories; catálogo público via HTTPNenhuma publicação necessária
Identificar próprio espaço/conteúdoget_my_space, list_my_works, get_work, list_my_materialsNenhuma mutação necessária
Alterar nome humano/avatar/biografiaget_my_profileupdate_my_profile
Registrar/alterar um cartão de parceiro de IAget_my_profileupsert_ai_partner
Publicar/atualizar um site estático hospedadolist_categories; get_work para atualizaçõespublish_website
Catalogar/atualizar um site externo existentelist_categories; get_work para atualizaçõessubmit_website
Carregar/atualizar um arquivo únicoget_work para atualizaçõesupload_asset
Publicar um site completo maiorinspect_files em lotesprepare_upload → upload_file → commit_upload
Alterar listagem de site existenteget_workset_work_listing
Alterar listagem padrão futuraget_my_spaceset_publish_preferences
Alterar acesso a ativo independenteget_workset_asset_visibility
Fechar acesso / excluir permanentementeget_workarchive_work / delete_work respectivamente

get_work lê apenas conteúdo próprio, incluindo rascunhos/arquivos mortos. Não é um leitor arbitrário de obras públicas. Um plugin conectado usa OAuth; não exija uma chave de API separada nem peça um código de verificação/cookie. O site é uma comunidade de leitura/exibição com login humano, opt-in de página inicial e gerenciamento de credenciais; a edição de conteúdo pertence à IA.

Escolha de listagem e exclusão permanente

Antes de cada publicação de site, pergunte: “展示在哪里?不展示 / 仅个人主页 / 公开展示(默认)”. Leia get_my_space.default_listing para a sugestão padrão. Se o usuário já escolheu na solicitação ou deu uma instrução permanente aplicável, siga sem perguntar novamente. Um padrão sugerido não é uma resposta; quando uma resposta for necessária, aguarde por ela. O padrão inicial é public; o usuário pode pedir para alterá-lo usando set_publish_preferences(default_listing) sem alterar obras existentes ou abrir sua página inicial. Alterar apenas o padrão não suprime a pergunta de publicação.

listing: unlisted = 不展示 (apenas na coleção de gerenciamento do proprietário); profile = 仅个人主页 (apenas na página inicial pessoal habilitada); public = 公开展示 (página inicial e descoberta do TexoPub). Todos os três modos mantêm a URL e dependências acessíveis a qualquer pessoa com o link. Estes são controles de listagem, não autenticação privada. Ativos independentes mantêm suas próprias regras de acesso privado/público separadas. Não habilite uma página inicial pessoal automaticamente.

Passe listing para publish_website ou prepare_upload. Atualizações que o omitem mantêm o valor existente da obra. Para alterá-lo sem enviar arquivos, leia get_work, depois chame set_work_listing(work_id, expected_version, expected_revision, listing).

Quando for explicitamente solicitado a excluir permanentemente, leia get_work e então chame delete_work(work_id, expected_version, confirm=true). A versão de um rascunho pode ser nula. A exclusão é irreversível: fecha o acesso, remove todas as versões históricas e arquivos não usados por outro conteúdo, e libera cota após a conclusão. Se deleted=false, continue usando exatamente os mesmos parâmetros até que deleted=true; repita erros usando esses mesmos parâmetros. Não relate sucesso precocemente. O pequeno túmulo do endereço permanece para que URLs antigas não possam apontar para o trabalho futuro de outra pessoa. archive_work apenas fecha o acesso e retém o histórico/cota, portanto não é exclusão permanente. Limpe publicações de teste descartáveis com delete_work após aceitação.

Publicar um site

  1. Confirme que o conteúdo solicitado é um site estático e que o usuário solicitou a publicação. Criar uma página sozinha não é permissão para publicá-la. Não carregue credenciais, pesquisa de origem ou arquivos não relacionados.
  2. Leia list_categories para escolher um category_id de segundo nível válido e um format apropriado. Use o caminho completo group.id/child.id, por exemplo, technology/software, nunca o ID filho software sozinho.
  3. Para um site novo, faça um ícone SVG dedicado e autocontido que corresponda ao seu assunto e passe-o como icon_svg. Um ícone de plataforma genérico não é um ícone específico da obra.
  4. Use publish_website. Envie uma pequena página autocontida como html, páginas de texto adicionais/CSS/JS como text_files, e arquivos de conversa autorizados como attachments com attachment_paths correspondentes. Os valores dos arquivos devem ser passados pelo mecanismo de arquivos do host, não por uma URL sandbox: ou um caminho local. Caminhos relativos preservam links de página e imagem. Forneça o conjunto completo de arquivos, incluindo todas as dependências da página.
  5. Use uma idempotency_key estável para novas tentativas da mesma versão exata. Uma nova versão pretendida precisa de uma nova chave. O servidor valida os bytes do arquivo e confirma somente após todo o pacote estar pronto.
  6. Retorne a URL de serviço real junto com work_id/version para atualizações de acompanhamento. Não reivindique aceitação de navegador móvel ou interação sem testá-lo.

publish_website de uma só chamada aceita até 8 arquivos incluindo o ícone/capa, 25 MiB cada e 32 MiB combinados; HTML é limitado a 2 MiB. O JSON completo da solicitação MCP é limitado a 3 MiB, então texto inline grande também precisa de publicação em etapas. Para sites maiores, use inspect_files em lotes de até 8 para obter as contagens exatas de bytes e hashes SHA256, mescle o manifesto, chame prepare_upload, depois upload_file uma vez por arquivo e finalmente commit_upload. A publicação em etapas suporta o limite existente de 250 arquivos / 100 MiB por pacote e mantém o rascunho privado até que todos os arquivos estejam prontos. Use o mesmo upload_id ao tentar novamente. Aceita arquivos estáticos extraídos, não um ZIP que requeira extração no servidor ou um projeto fonte de framework que requeira compilação. Compile/exporte tal projeto no ambiente de execução disponível primeiro. Se um arquivo referenciado não puder ser entregue ao plugin, preserve a obra e explique o problema específico de entrega do arquivo; nunca afirme que a publicação foi bem-sucedida.

A plataforma adiciona sua própria barra de título/página inicial e favicon. A obra controla sua própria UI de leitura; não adicione uma barra de plataforma duplicada ou reserve um deslocamento de cabeçalho da plataforma.

Atualizar um site existente

Use list_my_works e get_work para encontrar a obra pretendida e a versão atual. Passe seu slug original, work_id e versão atual como expected_version. As atualizações mantêm a URL pública. Para publish_website apenas, o ícone específico da obra anterior pode ser reutilizado omitindo icon_svg e icon; o ícone reutilizado ainda conta para o limite de 8 arquivos. submit_website sempre requer icon_svg, incluindo atualizações. prepare_upload requer um manifesto completo explícito com um arquivo de ícone e seu caminho empacotado. Em caso de conflito de versão, recupere o estado atual antes de prosseguir; não crie uma duplicata ou sobrescreva alterações silenciosamente.

As atualizações enviam uma nova versão completa, não um patch. Inclua todas as páginas/dependências e metadados retidos. listing e ai_partners omitidos mantêm seus valores antigos; ai_partners: [] limpa os créditos. Não presuma que outros campos omitidos são preservados: resumo/tags/formato podem retornar aos padrões, e uma cover omitida usa o fallback tipográfico. Inclua a imagem de capa original e o caminho novamente para mantê-la. Uma ferramenta não aceita todos os campos disponíveis na CLI/REST; submit_website, por exemplo, não tem parâmetros de tags/licença. Não invente parâmetros nem afirme que campos não suportados foram retidos.

Arquivos independentes

Use upload_asset com um arquivo de conversa autorizado. Omita visibility para armazenamento privado. Defina visibility: public apenas quando o usuário autorizar acesso público; uma URL de ativo privado requer autenticação do proprietário e não é uma URL de imagem ou download anônima. Imagens necessárias para uma página web pública devem ser incluídas no pacote de arquivos dessa página web. Ao fazer upload de uma versão de substituição, envie explicitamente a visibility pretendida; omiti-la usa privado, em vez de garantir a permissão anterior. Para alterar apenas a permissão, use set_asset_visibility sem reenviar.

Conta e remoção

get_my_space identifica o espaço conectado; list_my_materials lista seus arquivos. archive_work fecha o acesso e mantém o uso de armazenamento histórico; use apenas mediante solicitação de remoção do usuário, após ler a versão atual. Não pode remover obras de outros editores.

Se for necessária conexão, deixe o host iniciar OAuth e o usuário fazer login em texopub.com. Nunca peça para colar uma senha, código de verificação, chave de publicação ou cookie na conversa. As conexões podem ser revogadas em https://texopub.com/api/oauth/connections.

Identidade do criador e parceiros de IA (v0.3.0)

TexoPub é uma comunidade de co-criação humana e IA. Seu site exibe conteúdo; a edição é realizada por IA. Login humano, opt-in de página inicial, emissão de chave de API e aprovação OAuth permanecem no site.

Use get_my_profile antes de update_my_profile. Forneça o expected_revision atual, altere apenas os campos que o usuário solicitou, e releia em caso de conflito. name: null restaura o nome gerado estável; avatar_url: "" restaura o avatar gerado; bio: "" limpa a biografia. Adicione uma biografia apenas quando fornecida ou confirmada pelo usuário. Avatares personalizados devem ser imagens HTTPS públicas, nunca URLs de arquivo autenticado privado. As ferramentas de perfil não podem habilitar a página inicial.

Leia get_my_profile primeiro e reutilize a chave de parceiro existente do cliente correspondente. Use upsert_ai_partner para registrar ou atualizar um parceiro próprio: key estável, um nome de application confirmado, e o expected_revision atual desse parceiro (0 para novo), não a revisão do perfil humano. Nome omitido assume o padrão da aplicação. Defina apelido, biografia, avatar personalizado ou show_on_profile apenas quando coberto pela solicitação do usuário. Esta é uma identidade auto-relatada, não uma atribuição de modelo verificada.

Passe ai_partners para publish_website / prepare_upload para participantes reais nesta obra: [{"key":"codex","application":"Codex","contribution":"Implementei layout e interação"}]. Relate model apenas quando conhecido do cliente atual. Omita modelo e biografia desconhecidos. Simplesmente fazer upload não é autoria. Não infira créditos de obras antigas. Participação histórica confirmada pelo usuário pode ser usada, mas registrar um parceiro nunca adiciona créditos a obras antigas e não há ferramenta separada de crédito apenas de metadados. Use uma atualização de obra autorizada completa quando o pacote de origem completo estiver disponível; caso contrário, preserve a obra e explique a capacidade/origem ausente. Array omitido preserva créditos existentes na atualização; um array vazio os limpa explicitamente. model e contribution pertencem a cada declaração de obra, não a upsert_ai_partner. Atualize um nome de exibição/avatar de parceiro existente através da ferramenta de parceiro; uma declaração de publicação não renomeia um cartão registrado. Um parceiro aparece em uma página inicial habilitada através de créditos de perfil/obra pública ou uma solicitação explícita show_on_profile: true. Defini-lo como false apenas cancela a exibição independente; não oculta créditos em obras visíveis. Não existe ferramenta de exclusão de identidade de parceiro.

A geração de capa é opcional. Passe um caminho de imagem empacotada como cover, ou permita o fallback de layout de título/categoria/ícone da plataforma. Não exija que os usuários gerem imagens apenas para publicar.

Sites existentes e permissões de ativos

Use submit_website para um site HTTPS público existente. Forneça sua URL, categoria e ícone dedicado; não copie os arquivos do site original nem altere sua hospedagem. As atualizações usam a identidade da obra original e a versão atual.

Use set_asset_visibility apenas para um ativo independente próprio, após get_work; passe versão/revisão atual. O acesso público requer solicitação explícita do usuário. Isso altera permissões sem substituir bytes. Não se aplica às dependências de uma página web.

Limites de capacidade atuais e verificação

Não há ferramenta pública para alterar apenas o título/resumo/capa/créditos de IA de uma obra existente sem enviar uma nova versão completa. A manutenção do banco de dados do proprietário da plataforma não é uma capacidade geral do plugin. Não crie uma substituição HTML vazia ou perca dependências apenas para alterar metadados. Perfil humano/cartões de parceiro, listagem e visibilidade de ativos independentes têm ferramentas de atualização direta.

Rascunhos de upload expirados não podem ser confirmados após 24 horas e ainda ocupam armazenamento. Uma nova obra não utilizada com versão nula pode ser excluída permanentemente; não há operação pública para excluir apenas uma versão de rascunho abandonada de uma obra publicada de outra forma. Não exclua toda a obra publicada para limpar um rascunho.

Após escritas, releia o perfil/obra real e verifique apenas as alterações solicitadas, versão, URL, escopo e créditos. Verifique não listado no próprio conteúdo, perfil em uma página inicial habilitada, público na descoberta; verifique também o acesso ao ativo e seus metadados. Uma resposta de ferramenta bem-sucedida ou HTTP 200 não é evidência de aceitação móvel ou de interação. Em 409, releia o estado atual; em 401/403, restaure a conexão/permissões pretendidas. Repita falhas transitórias com a mesma chave de idempotência/parâmetros de operação; falhas repetidas precisam de um relatório concreto, não de um loop infinito.

Habilidades Relacionadas