Um novo recurso para meu blog criado usando minha voz

Um novo recurso para meu blog criado usando minha voz
9 de outubro de 2026
Enviei hoje um novo recurso para meu blog: a página Newsletters, que oferece um índice de todos os boletins informativos que enviei, tanto meu Substack semanal gratuito quanto minhas atualizações mensais apenas para patrocinadores. Construí o recurso quase inteiramente usando minha voz, conversando em meu laptop enquanto preparava o jantar.
Modo de voz Codex
Usei o aplicativo de desktop ChatGPT para isso, na aba Codex, usando o modo de conversação por voz, rodando em um ambiente de desenvolvimento local. Aqui está o que parece:

Iniciei a sessão em meu checkout local do simonwillisonblog digitando:
Start dev server and open in browser
Isso me deu uma prévia do site em que ele estaria trabalhando e significou que mais tarde eu poderia pedir que ele me mostrasse as novas páginas para que eu pudesse acompanhar visualmente seu progresso.
Então cliquei no botão “Iniciar novo bate-papo por voz” – isso é não o botão do microfone, à direita dele – e coloquei meu laptop na cozinha para que eu pudesse conversar com ele enquanto cozinhava.
Falando com meu computador
Eu tinha uma boa ideia do que queria construir, e é um recurso do Django simples o suficiente para ter certeza de que o modelo (neste caso, GPT-6 Astra High) seria capaz de fazê-lo. Um novo modelo, uma migração, algum código de visualização, modelos e algumas funções de importação para preencher o banco de dados de fontes externas.
Aqui está um trecho da minha transcrição de voz que foi capturada pelo Codex:
Hum, eles não. Hum, este será um novo tipo de conteúdo. Hum, não vai aparecer… Ah, espere. Sim, não, eu não quero que isso apareça nas minhas, hum, páginas de tags e páginas de arquivo de datas e… Na verdade, não, eu acho… eu não quero isso nas páginas de tags. Não quero isso na página de índice do blog. Mas acho que quero que apareça nas páginas baseadas em datas. Sabe, se você navegar até 19 de setembro e eu enviar uma newsletter nessa página, acho que quero que isso apareça. Então… isso é… então acho que provavelmente precisamos de um novo modelo. A outra coisa é que eu quero que eles sejam pesquisáveis, uh, os do Substack não são pesquisáveis, porque na verdade são apenas cópias de outros conteúdos do meu blog. Esses mensais contêm conteúdo exclusivo e, uma vez publicados, como quando se tornam públicos um mês depois de serem lançados, quero que apareçam nos meus resultados de pesquisa.
Aparentemente isso ficou claro o suficiente para que o modelo soubesse o que eu queria construir! Você pode ler a transcrição completa, com disfluências e tudo, neste Gist.
Continuamos assim por cerca de meia hora (o tempo que levamos para preparar o jantar). O modelo respondia e ocasionalmente fazia perguntas esclarecedoras e depois começava a trabalhar na modificação do código.
O que construímos
Percorremos um caminho surpreendentemente longo inteiramente por voz:
- Um novo modelo e migração para representar newsletters importadas no Django, além da configuração do Django Admin para isso
- Quatro importações de trabalho:
- Os itens mais recentes do Substack via RSS
- Todos os outros itens do Substack por meio de sua API não documentada, que o GPT-6 Astra conhecia ou encontrou por meio de pesquisa
- Todos os meus boletins informativos mensais publicados em meu repositório GitHub simonw/monthly-newsletter-archive
- Meu boletim informativo mais recente exclusivo para patrocinadores privados de um repositório privado
- As páginas de arquivo público /newsletters/ e /newsletters/2026/
- Boletins informativos também aparecem nas páginas de arquivo do dia e do mês, mas não nas páginas de tags ou na minha página inicial
- Boletins informativos semanais do Substack têm link para o Substack; boletins informativos mensais arquivados têm suas próprias páginas
- Integração com o mecanismo de busca do meu site
Era quase pronto para enviar. O problema eram as importações: o Astra se ofereceu para exportar dados da minha cópia local para que eu pudesse importá-los para a produção, mas eu queria que funcionasse como meus outros scripts de importação. Como alguns dos dados estavam em um repositório privado do GitHub, isso envolveria a criação de uma nova chave de API e, para isso, eu sabia que teria que ficar sentado diante do teclado por um tempo.
Finalizando com uma revisão
Depois que terminei de cozinhar e julguei que estava quase completo em termos de recursos, fiz o Codex criar um branch e abrir uma solicitação pull.
Revisei o código na interface do GitHub PR. Era quase o que eu precisava, exceto que optei por usar o Git em um subprocesso para um dos scripts de importação. Eu precisava que uma das importações fosse extraída de um repositório Git privado, então imaginei que a API seria uma aposta melhor. Mudei para a digitação e fiz com que o Codex trocasse isso por uma importação baseada em API.
Você pode ver as alterações que fiz durante a revisão nos commits extras do PR. Corrigi o mecanismo de importação e fiz alguns ajustes na exibição dessas páginas públicas. Demorou mais meia hora de solicitações baseadas em digitação para chegar ao ponto em que fiquei feliz em implantá-lo em produção ao conseguir o PR.
O resultado final
Você pode ver o resultado final na página de índice dos novos boletins informativos ou visualizar a página de um boletim informativo mensal anterior.

A página de índice mostra meus boletins informativos semanais Substack mais recentes e boletins informativos mensais dos patrocinadores do GitHub misturados em ordem cronológica inversa. Mais abaixo na página estão links para minhas páginas de arquivo anuais.
GPT-6 Astra projetou a página e, em seguida, ajustou o design com base no meu feedback vocal ao olhar para a visualização local do outro lado da cozinha.
Melhor para multitarefa do que como motorista diário
OpenAI amor usando demonstrações baseadas em voz como esta para coisas como o DevDay – e elas funcionam muito bem nesse ambiente. Eu não acho que isso será uma tarefa diária para mim.
Já escrevi antes sobre quanto “trabalho” eu faço usando o modo de voz ChatGPT no meu telefone enquanto passeo com o cachorro – principalmente pesquisa e brainstorming, mas ocasionalmente trabalho de desenvolvimento real fazendo com que o ChatGPT escreva e teste trechos de código.
Isso parece diferente. A adição da visualização visual, além de poder digitar ou colar coisas através do teclado quando preciso comunicar algo que não funciona vocalmente, torna esta uma forma muito mais poderosa de interagir com um agente de codificação.
Ainda volto a digitar quando chego aos detalhes das coisas. Ser capaz de colar exemplos e mensagens de erro ou destacar diretamente o código ou recurso que precisa ser alterado continua sendo mais eficiente do que tentar descrevê-lo em palavras.
Eu trabalho principalmente em casa, o que é bom porque de jeito nenhum eu gostaria de falar com meu computador assim em um espaço de trabalho compartilhado!
O recurso matador para mim é a capacidade de realizar várias tarefas. Normalmente cozinho com um podcast ou TikTok rodando; agora posso realmente construir coisas.





