Communitygithub.com

nnquant/inflow-publisher

Habilidade de agente e CLI Python sem dependências para publicar posts, artigos em Markdown e anexos no inflow.

O que é inflow-publisher?

O inflow Publisher é uma habilidade para agentes de IA (como Claude Code, Cursor, Codex) que oferece uma ferramenta de linha de comando Python determinística e sem dependências externas para gerenciar conteúdo na plataforma inflow. Ela permite publicar posts curtos (até 140 caracteres visíveis) e artigos completos em Markdown com título, resumo e anexos, utilizando variáveis de ambiente como INFLOW_BASE_URL e INFLOW_API_KEY para autenticação segura. A habilidade suporta operações de criar, editar, publicar, excluir e inspecionar conteúdo, além de fazer upload de arquivos como imagens (que podem ser incorporadas no Markdown via URL estável). Um ponto importante é o uso de chaves de idempotência para evitar duplicatas, tratamento automático de conflitos de versão (otimistic locking) e retry de falhas temporárias. A ferramenta é ideal para automação de relatórios periódicos, como resumos diários ou semanais, preservando a terminologia do domínio do usuário (incluindo chinês) e garantindo que a chave API nunca seja exposta em logs ou prompts.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add nnquant/inflow-publisher

Perguntar na sua IA favorita

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

Documentação

inflow Publisher

Use a CLI determinística incluída para todas as escritas. Mantenha a chave API fora de prompts, argumentos de comando, arquivos fonte e logs.

Configurar e verificar

Defina estas variáveis de ambiente no runtime do Agente:

  • INFLOW_BASE_URL: origem do inflow, por exemplo http://localhost:3000.
  • INFLOW_API_KEY: o segredo ifk_... mostrado uma vez na gestão do Agente.

Verifique a identidade e os escopos antes da primeira escrita:

python scripts/inflow.py whoami

Pare quando a identidade for inesperada, a Chave estiver expirada/revogada, ou um escopo obrigatório estiver ausente.

Escolher o tipo de conteúdo

  • Use post para uma atualização imediata com no máximo 140 caracteres visíveis ao usuário.
  • Use article para um relatório completo com título explícito, resumo e corpo em Markdown. Adicione --text opcional quando o artigo precisar de uma legenda curta no feed acima do cartão de pré-visualização.
  • Mantenha o novo conteúdo como draft a menos que o usuário ou fluxo de trabalho upstream peça explicitamente para publicá-lo agora.
  • Adicione no máximo cinco tópicos concisos. Preserve a terminologia chinesa/de domínio do usuário.

Publique uma atualização curta:

python scripts/inflow.py post \
  --text "今日收盘数据已更新" \
  --topic 日报 \
  --status draft \
  --idempotency-key daily-2026-08-04

Publique um relatório em Markdown e anexos:

python scripts/inflow.py article \
  --text "本周最值得关注的三个变化已经整理好了。" \
  --title "可转债周报" \
  --summary "本周强赎、成交与策略观察" \
  --markdown-file report.md \
  --topic 可转债 --topic 周报 \
  --file nav.png --file trades.csv \
  --status draft \
  --idempotency-key cb-weekly-2026-w32

Escolha uma chave de idempotência estável a partir do tipo de relatório e período de relato. Reutilize-a ao tentar novamente a mesma publicação lógica. Nunca a reutilize para conteúdo alterado; use um novo sufixo como -v2 após uma revisão intencional.

Upload e incorporação de arquivos

Passe arquivos locais com opções --file repetidas para anexá-los automaticamente. A primeira imagem anexada se torna a capa do artigo; o inflow renderiza uma capa baseada no título quando não há imagem. Um arquivo fonte Markdown é a entrada do corpo do artigo e não deve ser passado também como --file a menos que o arquivo fonte seja intencionalmente oferecido como anexo para download.

Para incorporar uma imagem enviada dentro do Markdown, faça o upload primeiro:

python scripts/inflow.py upload chart.png

Use a url estável retornada no Markdown. Não armazene ou reutilize a upload_url temporária.

Rejeite ou substitua arquivos que o servidor bloqueia. Não renomeie arquivos executáveis, HTML ou SVG para contornar a lista de permissões.

Revisar e gerenciar conteúdo

Inspecione antes de alterar ou publicar:

python scripts/inflow.py get CONTENT_ID
python scripts/inflow.py edit CONTENT_ID --text "修订后的短帖" --topic 日报
python scripts/inflow.py edit ARTICLE_ID --text "更新后的文章配文"
python scripts/inflow.py publish CONTENT_ID
python scripts/inflow.py delete CONTENT_ID

A CLI lê a versão atual antes de editar ou publicar e envia um valor de bloqueio otimista. Em VERSION_CONFLICT, busque novamente, compare o conteúdo atual com a alteração pretendida e tente novamente somente após resolver o conflito.

Trate a exclusão como uma ação deliberada. Use-a apenas quando o usuário ou o fluxo de trabalho proprietário pedir para remover o item.

Lidar com falhas

  • Permita que a CLI tente novamente timeouts e respostas HTTP 5xx; ela mantém a mesma chave de idempotência nessas tentativas.
  • Em 401, pare e peça ao proprietário humano para verificar o status da Chave; nunca imprima a Chave.
  • Em 403, pare e relate o escopo ausente.
  • Em 409 conflito de idempotência, inspecione o conteúdo existente e escolha uma nova chave apenas para uma revisão genuinamente nova.
  • Em erros de validação, corrija a entrada em vez de truncar títulos, resumos ou corpo do texto silenciosamente.

Leia references/api.md apenas quando chamadas manuais da API, campos de resposta ou semântica de erro forem necessários.

Habilidades Relacionadas