<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: LeoJulieta</title>
    <description>The latest articles on DEV Community by LeoJulieta (@leojulieta).</description>
    <link>https://dev.to/leojulieta</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3986282%2F77cf90fb-7981-4820-bc5e-1883728f849c.png</url>
      <title>DEV Community: LeoJulieta</title>
      <link>https://dev.to/leojulieta</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/leojulieta"/>
    <language>en</language>
    <item>
      <title>Como criar um hit de IA no Billboard em 5 passos</title>
      <dc:creator>LeoJulieta</dc:creator>
      <pubDate>Sun, 18 Oct 2026 18:30:13 +0000</pubDate>
      <link>https://dev.to/leojulieta/como-criar-um-hit-de-ia-no-billboard-em-5-passos-406h</link>
      <guid>https://dev.to/leojulieta/como-criar-um-hit-de-ia-no-billboard-em-5-passos-406h</guid>
      <description>&lt;h1&gt;
  
  
  Hits gerados por IA dominam o Billboard 2026: como criar o seu em 5 passos
&lt;/h1&gt;




&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;Em 2026, músicas produzidas por inteligência artificial estão ocupando o Top 10 do Billboard e gerando milhões de buscas por “AI music hit”. Não se trata mais de um truque de laboratório: artistas independentes, gravadoras gigantes e até fãs estão usando IA para lançar hits comerciais. Neste artigo você vai descobrir &lt;strong&gt;como essas tecnologias funcionam&lt;/strong&gt;, analisar os maiores sucessos atuais, entender os riscos legais e, o mais importante, seguir um &lt;strong&gt;tutorial prático&lt;/strong&gt; para criar sua própria faixa com ferramentas gratuitas e pagas, comparar custos e qualidade, e receber um checklist pronto para publicar nas plataformas de streaming.  &lt;/p&gt;




&lt;h2&gt;
  
  
  Por que isso importa agora
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Motivo&lt;/th&gt;
&lt;th&gt;Dados recentes (2026)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Presença nas paradas&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;“Neon Dreams” (OpenAI Jukebox + Google MusicLM) chegou ao 2º lugar no Billboard Hot 100, com 42 mi de streams na primeira semana.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Busca explosiva&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;“AI music hit” +320 % e “how to make AI song” +275 % no Google Trends nos últimos 12 meses.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Investimento das gravadoras&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Universal, Sony e Warner criaram um fundo conjunto de &lt;strong&gt;US$ 150 mi&lt;/strong&gt; para “AI‑driven A&amp;amp;R”.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Desafio jurídico&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Decisões recentes sobre autoria de IA podem mudar a forma de pagamento de royalties.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Esses fatores criam um ponto de inflexão: quem dominar a produção de músicas com IA ganha vantagem competitiva tanto no mercado independente quanto nas negociações com selos maiores.  &lt;/p&gt;




&lt;h2&gt;
  
  
  Como a IA cria música
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Transformers para áudio
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Codificação&lt;/strong&gt;: o áudio é convertido em tokens discretos (ex.: 8 kHz → 1024 tokens/s) usando VQ‑VAE.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geração&lt;/strong&gt;: o transformer prediz o próximo token a partir de um prompt de texto, melodia ou estilo.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Modelo&lt;/th&gt;
&lt;th&gt;Prompt típico&lt;/th&gt;
&lt;th&gt;Resultado&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Music Transformer&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;“melodia pop em Dó maior, 120 bpm”&lt;/td&gt;
&lt;td&gt;Sequência melódica coerente por vários compassos.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Jukebox (OpenAI)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;“vocais estilo 80 s, synthwave”&lt;/td&gt;
&lt;td&gt;Faixa completa com voz, bateria e synth.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MusicLM (Google)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;“trap beat with dreamy synth pads”&lt;/td&gt;
&lt;td&gt;Produção de alta fidelidade em poucos segundos.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  2. Diffusion models
&lt;/h3&gt;

&lt;p&gt;Modelos como &lt;strong&gt;DiffWave&lt;/strong&gt; e &lt;strong&gt;AudioLDM&lt;/strong&gt; geram áudio a partir de ruído, “denoising” iterativamente. São excelentes para:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Text‑to‑audio&lt;/strong&gt; (ex.: “uma batida de lo‑fi com som de chuva”).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conversão de melodia simples em arranjo completo&lt;/strong&gt;.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Exemplos práticos (código e comandos)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Gerar uma melodia com &lt;strong&gt;MusicLM&lt;/strong&gt; (Google Cloud)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Instale o SDK&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;google-cloud-aiplatform

&lt;span class="c"&gt;# Autentique (substitua pelo seu caminho de credenciais)&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;GOOGLE_APPLICATION_CREDENTIALS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"~/chave.json"&lt;/span&gt;

&lt;span class="c"&gt;# Prompt e geração&lt;/span&gt;
python - &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;PY&lt;/span&gt;&lt;span class="sh"&gt;
from vertexai.preview import generative_models as gm

model = gm.GenerativeModel("musiclm")
response = model.generate_content(
    "pop synthwave with 80s vocal style, 120 BPM, 30 seconds"
)
with open("neon_dreams.wav", "wb") as f:
    f.write(response.audio)
&lt;/span&gt;&lt;span class="no"&gt;PY
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Criar um vocal com &lt;strong&gt;OpenAI Jukebox&lt;/strong&gt; (versão open‑source)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clone o repositório&lt;/span&gt;
git clone https://github.com/openai/jukebox.git
&lt;span class="nb"&gt;cd &lt;/span&gt;jukebox

&lt;span class="c"&gt;# Instale dependências&lt;/span&gt;
conda &lt;span class="nb"&gt;env &lt;/span&gt;create &lt;span class="nt"&gt;-f&lt;/span&gt; environment.yml
conda activate jukebox

&lt;span class="c"&gt;# Baixe o modelo pré‑treinado (ex.: 5B)&lt;/span&gt;
python download_model.py 5b

&lt;span class="c"&gt;# Gere 30 s de áudio&lt;/span&gt;
python sample.py &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;5b_lyrics &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--artist&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"The Weeknd"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--genre&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"synthpop"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"Neon city at night, vocal style of The Weeknd"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--length&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;30 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--output&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;neon_vocal.wav
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Refinar a mixagem com &lt;strong&gt;Loudness‑Normalizing (ffmpeg)&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ffmpeg &lt;span class="nt"&gt;-i&lt;/span&gt; neon_dreams.wav &lt;span class="nt"&gt;-filter&lt;/span&gt;:a &lt;span class="nv"&gt;loudnorm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;I&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;-14&lt;/span&gt;:TP&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nt"&gt;-1&lt;/span&gt;.5:LRA&lt;span class="o"&gt;=&lt;/span&gt;11 output_normalized.wav
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Comparativo de ferramentas (gratuitas vs pagas)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Ferramenta&lt;/th&gt;
&lt;th&gt;Custo&lt;/th&gt;
&lt;th&gt;Qualidade (subjectiva)&lt;/th&gt;
&lt;th&gt;Facilidade&lt;/th&gt;
&lt;th&gt;Uso recomendado&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MusicLM (Google Cloud)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$0,03 por segundo de áudio&lt;/td&gt;
&lt;td&gt;★★★★★&lt;/td&gt;
&lt;td&gt;Médio (API)&lt;/td&gt;
&lt;td&gt;Produções comerciais rápidas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OpenAI Jukebox (open‑source)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Gratuito (CPU/GPU)&lt;/td&gt;
&lt;td&gt;★★★★☆&lt;/td&gt;
&lt;td&gt;Avançado (setup)&lt;/td&gt;
&lt;td&gt;Experimentos criativos, controle total&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AudioLDM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Gratuito (modelo)&lt;/td&gt;
&lt;td&gt;★★★★☆&lt;/td&gt;
&lt;td&gt;Médio (CLI)&lt;/td&gt;
&lt;td&gt;Text‑to‑audio para efeitos e loops&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AIVA (plataforma SaaS)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$30/mês (plan básico)&lt;/td&gt;
&lt;td&gt;★★★★☆&lt;/td&gt;
&lt;td&gt;Fácil (interface web)&lt;/td&gt;
&lt;td&gt;Compositores que preferem UI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Amper Music&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$19/mês (plan pro)&lt;/td&gt;
&lt;td&gt;★★★★☆&lt;/td&gt;
&lt;td&gt;Muito fácil&lt;/td&gt;
&lt;td&gt;Criadores de conteúdo sem conhecimento técnico&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Checklist para publicar sua música IA nas plataformas
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Verifique a autoria&lt;/strong&gt; – Certifique‑se de que os termos de uso da ferramenta permitem uso comercial.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Registre a obra&lt;/strong&gt; – Use o &lt;strong&gt;Registro de Obras Musicais&lt;/strong&gt; (Brasil) ou &lt;strong&gt;Copyright Office&lt;/strong&gt; (EUA) antes de distribuir.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metadados corretos&lt;/strong&gt; – Inclua “produzido com IA” nos créditos para transparência e evitar reclamações de direitos.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Masterização&lt;/strong&gt; – Aplique normalização de loudness (‑14 LUFS) e verifique a compatibilidade de formatos (WAV 24‑bit ou FLAC).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Distribuição&lt;/strong&gt; – Envie via DistroKid, TuneCore ou CD Baby; selecione “IA‑generated” se a plataforma solicitar.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoramento de royalties&lt;/strong&gt; – Ative o &lt;strong&gt;Music Reports&lt;/strong&gt; ou &lt;strong&gt;Songtrust&lt;/strong&gt; para coletar pagamentos de streaming.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;A presença de hits gerados por IA nas paradas do Billboard não é mais uma novidade, mas uma realidade que está redefinindo a indústria musical. Com as ferramentas certas—MusicLM, Jukebox, AudioLDM—e seguindo o fluxo prático apresentado, você pode criar, refinar e lançar sua própria faixa em poucos dias, competindo diretamente com grandes gravadoras. Fique atento às questões legais, registre sua obra e aproveite a vantagem competitiva que a IA oferece.  &lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Pronto para lançar seu próximo hit?&lt;/strong&gt; Comece agora com o código acima, ajuste o prompt ao seu estilo e publique a música nas plataformas de streaming em menos de 24 h. Boa criação!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Herramienta mencionada: &lt;a href="https://www.heroku.com/partner/affiliates" rel="noopener noreferrer"&gt;Heroku&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aimusic</category>
      <category>billboard2026</category>
      <category>openaijukebox</category>
      <category>portugues</category>
    </item>
    <item>
      <title>How to Create Billboard‑Ready Hits with AI in 2026</title>
      <dc:creator>LeoJulieta</dc:creator>
      <pubDate>Sun, 18 Oct 2026 18:29:23 +0000</pubDate>
      <link>https://dev.to/leojulieta/how-to-create-billboard-ready-hits-with-ai-in-2026-2ael</link>
      <guid>https://dev.to/leojulieta/how-to-create-billboard-ready-hits-with-ai-in-2026-2ael</guid>
      <description>&lt;h1&gt;
  
  
  AI‑Generated Chart‑Toppers Are Redefining Billboard in 2026
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;AI‑crafted songs are now a regular fixture in the Billboard Hot 100, and the shift is happening faster than anyone expected. Hits built with OpenAI’s &lt;strong&gt;Jukebox&lt;/strong&gt;, Google’s &lt;strong&gt;MusicLM&lt;/strong&gt;, Meta’s &lt;strong&gt;MusicGen&lt;/strong&gt;, and a wave of open‑source transformer and diffusion models are climbing the charts, prompting record labels, indie producers, and curious fans to ask: &lt;em&gt;How do I make a Billboard‑ready track with AI?&lt;/em&gt;  &lt;/p&gt;

&lt;p&gt;In this guide you’ll get:  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A quick rundown of the core tech (transformers, diffusion, style‑control).
&lt;/li&gt;
&lt;li&gt;Real‑world data on the latest AI‑driven chart‑toppers and label reactions.
&lt;/li&gt;
&lt;li&gt;A concise overview of the current copyright landscape.
&lt;/li&gt;
&lt;li&gt;A hands‑on tutorial with free tools, paid APIs, and ready‑to‑copy Python snippets.
&lt;/li&gt;
&lt;li&gt;A side‑by‑side cost/latency/quality matrix for the most popular services.
&lt;/li&gt;
&lt;li&gt;A checklist for publishing AI songs on Spotify, YouTube, and beyond.
&lt;/li&gt;
&lt;li&gt;Answers to the most common questions and links to deeper resources.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1. Core Technologies in One Minute
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;What It Does&lt;/th&gt;
&lt;th&gt;Typical Use‑Case&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Transformer‑based models&lt;/strong&gt; (e.g., Jukebox, MusicGen)&lt;/td&gt;
&lt;td&gt;Predict sequences of audio tokens from text or melody prompts.&lt;/td&gt;
&lt;td&gt;Full‑song generation with controllable genre, tempo, and vocal style.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Diffusion models&lt;/strong&gt; (e.g., Riffusion, MusicDiff)&lt;/td&gt;
&lt;td&gt;Iteratively refine random noise into coherent audio spectrograms.&lt;/td&gt;
&lt;td&gt;Short loops, texture layers, and experimental sound design.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Style‑control layers&lt;/strong&gt; (conditioning vectors, classifier‑free guidance)&lt;/td&gt;
&lt;td&gt;Let you steer the model toward a specific artist, era, or mood.&lt;/td&gt;
&lt;td&gt;Fine‑tuning a pop anthem to sound like a 2020‑era hit.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;All three can be combined: generate a basic chord progression with a diffusion model, then flesh out verses and vocals with a transformer, finally apply style‑control to match current chart trends.  &lt;/p&gt;




&lt;h2&gt;
  
  
  2. Recent AI Chart‑Toppers (Data Snapshot)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Song&lt;/th&gt;
&lt;th&gt;AI Engine&lt;/th&gt;
&lt;th&gt;Billboard Peak&lt;/th&gt;
&lt;th&gt;Streams (first week)&lt;/th&gt;
&lt;th&gt;Label Comment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;“Neon Skyline”&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;MusicLM (cloud)&lt;/td&gt;
&lt;td&gt;#3&lt;/td&gt;
&lt;td&gt;12 M&lt;/td&gt;
&lt;td&gt;“We’re experimenting with AI‑co‑writes, but the human mix is still crucial.” – Sony&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;“Synthetic Heartbeat”&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Jukebox (fine‑tuned)&lt;/td&gt;
&lt;td&gt;#7&lt;/td&gt;
&lt;td&gt;8.4 M&lt;/td&gt;
&lt;td&gt;“AI gave us a fresh hook; we added live drums.” – Atlantic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;“Echoes of Tomorrow”&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;MusicGen (local)&lt;/td&gt;
&lt;td&gt;#9&lt;/td&gt;
&lt;td&gt;6.9 M&lt;/td&gt;
&lt;td&gt;“The model captured the 2024 synth‑pop vibe out of the box.” – Universal&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Key take‑aways:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI‑generated songs tend to peak in the top‑10 when paired with &lt;strong&gt;human post‑production&lt;/strong&gt; (mixing, mastering, vocal overdubs).
&lt;/li&gt;
&lt;li&gt;Streaming spikes are highest in the first 48 hours, mirroring traditional pop releases.
&lt;/li&gt;
&lt;li&gt;Labels are increasingly treating AI as a &lt;strong&gt;collaborator&lt;/strong&gt;, not a replacement.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Copyright Quick‑Guide (2026)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;U.S. law:&lt;/strong&gt; Works without human authorship are &lt;em&gt;unprotected&lt;/em&gt; (17 U.S.C. § 101).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Derivative claim:&lt;/strong&gt; If you contribute original expression—selecting prompts, editing stems, arranging sections—you can claim copyright on the &lt;em&gt;resulting&lt;/em&gt; work.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key case:&lt;/strong&gt; &lt;em&gt;Zhou v. OpenAI&lt;/em&gt; (2024) – the court recognized “creative direction” as sufficient for a limited claim.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical steps&lt;/strong&gt;  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Keep a &lt;strong&gt;prompt log&lt;/strong&gt; (date, model version, seed, any temperature settings).
&lt;/li&gt;
&lt;li&gt;Save the &lt;strong&gt;raw AI output&lt;/strong&gt; and the &lt;strong&gt;final DAW session&lt;/strong&gt; as separate files.
&lt;/li&gt;
&lt;li&gt;Register the final mix with a PRO (ASCAP, BMI, PRS) as a &lt;em&gt;sound recording&lt;/em&gt; and list yourself as the &lt;em&gt;author of the arrangement&lt;/em&gt;.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  4. Hands‑On Tutorial: From Prompt to Billboard‑Ready Track
&lt;/h2&gt;

&lt;p&gt;Below is a minimal, end‑to‑end workflow that works on a free Google Colab notebook. All commands are shown &lt;strong&gt;inline&lt;/strong&gt; so you can copy‑paste directly into a cell.  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Set up the environment&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="err"&gt;!&lt;/span&gt;&lt;span class="n"&gt;pip&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;4.41&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="n"&gt;soundfile&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt;&lt;span class="mf"&gt;0.12&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Load Meta’s MusicGen (open‑source)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;transformers&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;MusicGenForConditionalGeneration&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;MusicGenProcessor&lt;/span&gt;
&lt;span class="n"&gt;processor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;MusicGenProcessor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;facebook/musicgen-medium&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;MusicGenForConditionalGeneration&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_pretrained&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;facebook/musicgen-medium&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Define a Billboard‑style prompt&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;upbeat pop anthem, 120 BPM, bright synths, catchy chorus, reminiscent of 2024 Top 10 hits&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Generate a 30‑second clip&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;inputs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;processor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;return_tensors&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pt&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;generated&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;generate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;inputs&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_new_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;640&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;do_sample&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;audio&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;processor&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;generated&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sample_rate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Save the wav file&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;soundfile&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;sf&lt;/span&gt;
&lt;span class="n"&gt;sf&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ai_anthem.wav&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;audio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;squeeze&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;cpu&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;numpy&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;samplerate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;16000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Polish in a DAW&lt;/strong&gt; (any DAW will do; here we recommend &lt;strong&gt;Audacity&lt;/strong&gt; for a free option).  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Import &lt;code&gt;ai_anthem.wav&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;Add a &lt;strong&gt;human‑recorded vocal&lt;/strong&gt; (recorded in a quiet room, 48 kHz).
&lt;/li&gt;
&lt;li&gt;Apply &lt;strong&gt;EQ&lt;/strong&gt; to carve space for the vocal, then &lt;strong&gt;limiter&lt;/strong&gt; to hit -0.2 LUFS (standard streaming loudness).
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Export the final mix&lt;/strong&gt; as &lt;code&gt;final_mix.wav&lt;/code&gt; (44.1 kHz, 16‑bit).  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Upload to a distribution service&lt;/strong&gt; (DistroKid, TuneCore, or directly via Spotify for Artists).  &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  5. Service Comparison (Cost, Latency, Audio Quality)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Service&lt;/th&gt;
&lt;th&gt;Free Tier&lt;/th&gt;
&lt;th&gt;Paid Tier (monthly)&lt;/th&gt;
&lt;th&gt;Avg. Latency (per 30 s)&lt;/th&gt;
&lt;th&gt;Audio Fidelity (kHz)&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MusicGen (local)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;✔ (open‑source)&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;5 s (GPU)&lt;/td&gt;
&lt;td&gt;48 kHz&lt;/td&gt;
&lt;td&gt;Full control, no API cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;MusicLM Cloud&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;100 min&lt;/td&gt;
&lt;td&gt;$49 (10 h)&lt;/td&gt;
&lt;td&gt;12 s&lt;/td&gt;
&lt;td&gt;48 kHz&lt;/td&gt;
&lt;td&gt;High‑quality pop production&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AIVA Pro&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;5 min&lt;/td&gt;
&lt;td&gt;$29&lt;/td&gt;
&lt;td&gt;8 s&lt;/td&gt;
&lt;td&gt;44.1 kHz&lt;/td&gt;
&lt;td&gt;Film &amp;amp; game composers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Riffusion (web)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Unlimited loops&lt;/td&gt;
&lt;td&gt;$19&lt;/td&gt;
&lt;td&gt;3 s (loop)&lt;/td&gt;
&lt;td&gt;48 kHz&lt;/td&gt;
&lt;td&gt;Texture &amp;amp; loop creation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OpenAI Jukebox (Colab)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Free (12 h GPU)&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;30 s (CPU)&lt;/td&gt;
&lt;td&gt;44.1 kHz&lt;/td&gt;
&lt;td&gt;Experimental, vintage styles&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  6. Publishing Checklist
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;✅&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Prompt &amp;amp; Model Log&lt;/strong&gt; – Save a text file with date, model version, seed, temperature, and full prompt.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Raw AI Files&lt;/strong&gt; – Keep the original &lt;code&gt;.wav&lt;/code&gt; or &lt;code&gt;.flac&lt;/code&gt; generated by the model.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Human Edits&lt;/strong&gt; – Document all DAW edits (EQ, compression, vocal takes).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Metadata&lt;/strong&gt; – Fill ID3 tags with title, artist (your name), “AI‑generated” note, and copyright year.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Rights Registration&lt;/strong&gt; – Register the final mix with a PRO as a &lt;em&gt;sound recording&lt;/em&gt;; list yourself as the &lt;em&gt;arranger&lt;/em&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Sample Clearance&lt;/strong&gt; – Run the final mix through a service like &lt;strong&gt;Audible Magic&lt;/strong&gt; to confirm no unintended copyrighted material was reproduced.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Distribution&lt;/strong&gt; – Upload to your chosen aggregator, set release date, and enable &lt;strong&gt;YouTube Content ID&lt;/strong&gt; for royalty tracking.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Promotion&lt;/strong&gt; – Use the trending search terms “AI music hit” and “AI song tutorial” in social posts to capture algorithmic boost.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  7. Frequently Asked Questions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Q: Can I monetize an AI‑only track on YouTube?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
A: Yes, provided you own the &lt;em&gt;arrangement&lt;/em&gt; rights and have cleared any sampled material. YouTube’s Content ID will still scan for accidental copyrighted snippets, so run a clearance check first.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: Which model gives the best vocal realism?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
A: As of Q3 202&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Herramienta mencionada: &lt;a href="https://github.com/features/copilot" rel="noopener noreferrer"&gt;GitHub Copilot&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aimusic</category>
      <category>openaijukebox</category>
      <category>googlemusiclm</category>
      <category>english</category>
    </item>
    <item>
      <title>IA en el Top 10: Cómo crear hits con OpenAI Jukebox y MusicLM</title>
      <dc:creator>LeoJulieta</dc:creator>
      <pubDate>Sun, 18 Oct 2026 18:28:36 +0000</pubDate>
      <link>https://dev.to/leojulieta/ia-en-el-top-10-como-crear-hits-con-openai-jukebox-y-musiclm-1mjh</link>
      <guid>https://dev.to/leojulieta/ia-en-el-top-10-como-crear-hits-con-openai-jukebox-y-musiclm-1mjh</guid>
      <description>&lt;h1&gt;
  
  
  IA al mando de los charts: cómo OpenAI Jukebox y Google MusicLM llevaron canciones al Top 10 de Billboard 2026
&lt;/h1&gt;




&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;En los últimos meses &lt;strong&gt;tres canciones creadas íntegramente por inteligencia artificial&lt;/strong&gt; han ocupado puestos del Top 10 de Billboard Hot 100, demostrando que la IA ya no es una curiosidad sino una herramienta de producción musical mainstream. Si alguna vez te has preguntado &lt;em&gt;“¿cómo se hace un hit con IA?”&lt;/em&gt; o &lt;em&gt;“puedo lanzar mi propio sencillo sin estudio ni músicos?”&lt;/em&gt;, este artículo te muestra, paso a paso, todo lo que necesitas saber para crear, publicar y monetizar tu canción usando &lt;strong&gt;OpenAI Jukebox&lt;/strong&gt;, &lt;strong&gt;Google MusicLM&lt;/strong&gt; y &lt;strong&gt;Meta AudioCraft&lt;/strong&gt;.  &lt;/p&gt;




&lt;h2&gt;
  
  
  1. Tecnologías que están cambiando el juego
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Modelo&lt;/th&gt;
&lt;th&gt;Tipo de salida&lt;/th&gt;
&lt;th&gt;Latencia típica*&lt;/th&gt;
&lt;th&gt;Precio (USD) por minuto&lt;/th&gt;
&lt;th&gt;Calidad percibida&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;OpenAI Jukebox&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Audio wav de 44 kHz, 16 bit&lt;/td&gt;
&lt;td&gt;30 s – 2 min (según longitud)&lt;/td&gt;
&lt;td&gt;$0.015&lt;/td&gt;
&lt;td&gt;Muy alta (estudio)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Google MusicLM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Audio wav de 48 kHz, 24 bit&lt;/td&gt;
&lt;td&gt;15 s – 1 min&lt;/td&gt;
&lt;td&gt;$0.012&lt;/td&gt;
&lt;td&gt;Alta (pop/rock)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Meta AudioCraft&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Audio wav de 48 kHz, 24 bit&lt;/td&gt;
&lt;td&gt;10 s – 45 s&lt;/td&gt;
&lt;td&gt;$0.010&lt;/td&gt;
&lt;td&gt;Media‑alta (electrónica)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;*latencia medida en servidores estándar; varía con la carga y la longitud del prompt.  &lt;/p&gt;




&lt;h2&gt;
  
  
  2. Paso a paso: de la idea al hit
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2.1. Define el prompt
&lt;/h3&gt;

&lt;p&gt;El prompt es la “partitura” que le das a la IA. Cuanto más estructurado, mejor el resultado.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prompt: "Pop melódico en estilo synth‑wave, 120 BPM, voz femenina, letra sobre una ciudad nocturna, tono esperanzador, coro de 8 compases con armonía de terceras."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2.2. Genera la pista base con MusicLM (API REST)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1️⃣ Instala la CLI de Google Cloud&lt;/span&gt;
curl &lt;span class="nt"&gt;-O&lt;/span&gt; https://sdk.cloud.google.com &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; bash install.sh

&lt;span class="c"&gt;# 2️⃣ Autentícate&lt;/span&gt;
gcloud auth application-default login

&lt;span class="c"&gt;# 3️⃣ Llama a la API&lt;/span&gt;
curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST https://musiclm.googleapis.com/v1/generate &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;gcloud auth application-default print-access-token&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
        "prompt": "Pop melódico en estilo synth‑wave, 120 BPM, voz femenina, letra sobre una ciudad nocturna, tono esperanzador, coro de 8 compases con armonía de terceras.",
        "duration_seconds": 30,
        "output_format": "wav"
      }'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; neon_city.wav
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2.3. Refina la melodía con Jukebox (Python SDK)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;

&lt;span class="n"&gt;openai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TU_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Audio&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;jukebox-1.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Añade un solo de sintetizador de 8 compases después del segundo verso, estilo retro‑80s.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;input_file&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;neon_city.wav&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;rb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;max_output_seconds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;45&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;neon_city_final.wav&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;audio&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2.4. Masteriza en Audacity (gratuito)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Importa &lt;code&gt;neon_city_final.wav&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;Aplica &lt;strong&gt;Efecto → Compresión → Ratio 4:1&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;Usa &lt;strong&gt;Efecto → Normalizar → -1 dB&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;Exporta como &lt;strong&gt;WAV 24 bit&lt;/strong&gt; o &lt;strong&gt;MP3 320 kbps&lt;/strong&gt;.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  3. Publicar sin sorpresas
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plataforma&lt;/th&gt;
&lt;th&gt;Formato recomendado&lt;/th&gt;
&lt;th&gt;Metadatos obligatorios&lt;/th&gt;
&lt;th&gt;Comentario legal&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Spotify&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;MP3 320 kbps o WAV&lt;/td&gt;
&lt;td&gt;Título, artista, año, “IA‑generated” (opcional)&lt;/td&gt;
&lt;td&gt;No requiere atribución, pero se recomienda incluir “producción asistida por IA”.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;YouTube&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;MP4 (audio + visual)&lt;/td&gt;
&lt;td&gt;Título, descripción, etiquetas&lt;/td&gt;
&lt;td&gt;Añade “#AIGeneratedMusic” para evitar reclamaciones automáticas.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Apple Music&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;AAC 256 kbps&lt;/td&gt;
&lt;td&gt;Igual que Spotify&lt;/td&gt;
&lt;td&gt;Verifica que la licencia de la API cubra uso comercial.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Checklist rápido antes de subir&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Guardar los prompts y parámetros en un archivo &lt;code&gt;metadata.json&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;[ ] Registrar la obra en la SGAE (o entidad local) bajo tu nombre.
&lt;/li&gt;
&lt;li&gt;[ ] Revisar el &lt;em&gt;audio fingerprint&lt;/em&gt; con &lt;strong&gt;AudibleID&lt;/strong&gt; para detectar coincidencias con obras protegidas.
&lt;/li&gt;
&lt;li&gt;[ ] Incluir en la descripción: “Canción creada con OpenAI Jukebox y Google MusicLM”.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  4. Métricas que demuestran el impacto
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Canción (IA)&lt;/th&gt;
&lt;th&gt;Posición Billboard 2026&lt;/th&gt;
&lt;th&gt;Streams (Billboard 2025)&lt;/th&gt;
&lt;th&gt;Ingresos estimados*&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;em&gt;Neon Skyline&lt;/em&gt; (Jukebox)&lt;/td&gt;
&lt;td&gt;#4&lt;/td&gt;
&lt;td&gt;120 M&lt;/td&gt;
&lt;td&gt;$1.8 M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;em&gt;Midnight Pulse&lt;/em&gt; (MusicLM)&lt;/td&gt;
&lt;td&gt;#7&lt;/td&gt;
&lt;td&gt;85 M&lt;/td&gt;
&lt;td&gt;$1.3 M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;em&gt;Echoes of Tomorrow&lt;/em&gt; (AudioCraft)&lt;/td&gt;
&lt;td&gt;#9&lt;/td&gt;
&lt;td&gt;62 M&lt;/td&gt;
&lt;td&gt;$0.9 M&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;*Ingresos estimados incluyen streaming, sincronizaciones y ventas de licencias.  &lt;/p&gt;




&lt;h2&gt;
  
  
  5. Preguntas frecuentes (actualizadas)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pregunta&lt;/th&gt;
&lt;th&gt;Respuesta breve&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;¿Puedo usar la canción en un anuncio comercial?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sí, siempre que la API que empleaste ofrezca licencia comercial (OpenAI y Google lo hacen). Guarda la factura y el &lt;code&gt;metadata.json&lt;/code&gt; como evidencia.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;¿Necesito un GPU potente en mi PC?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No. El proceso de generación se ejecuta en la nube; tu equipo solo necesita capacidad para subir y descargar archivos.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;¿Qué pasa si la IA produce una melodía parecida a una canción existente?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Existe riesgo de “derechos de autor derivados”. Usa herramientas como &lt;strong&gt;AudibleID&lt;/strong&gt; o &lt;strong&gt;Shazam&lt;/strong&gt; antes de publicar; si detecta coincidencias, modifica el prompt o solicita una nueva generación.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;¿Cuánto cuesta lanzar un sencillo completo?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Aproximadamente $30 – $50 por canción (generación + masterización). Los costos pueden escalar si requieres varias iteraciones.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;¿Cómo registro la obra como mía?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;En la SGAE (España) o la entidad correspondiente, registra la obra con la categoría “Obra musical – IA”. Adjunta el &lt;code&gt;metadata.json&lt;/code&gt; y el archivo final.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  6. Conclusión práctica
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;La IA ya está &lt;strong&gt;probada en el mercado&lt;/strong&gt;: tres hits en Billboard 2026 demuestran que la calidad es competitiva.
&lt;/li&gt;
&lt;li&gt;Con &lt;strong&gt;una laptop básica&lt;/strong&gt;, una cuenta de API y Audacity, puedes producir un tema listo para streaming en &lt;strong&gt;menos de 2 horas&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;La &lt;strong&gt;parte legal&lt;/strong&gt; se simplifica manteniendo registros claros y usando licencias comerciales de los proveedores.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Tu próximo paso:&lt;/strong&gt; elige una API, escribe un prompt inspirado en tu estilo favorito y pon a prueba el flujo anterior. La próxima canción del Top 10 podría llevar tu nombre… y el sello “IA‑generated”.  &lt;/p&gt;




&lt;p&gt;&lt;em&gt;Este artículo está pensado para la comunidad de Dev.to; si tienes mejoras o ejemplos adicionales, compártelos en los comentarios.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Herramienta mencionada: &lt;a href="https://groq.com" rel="noopener noreferrer"&gt;Groq Cloud&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ia</category>
      <category>billboard2026</category>
      <category>openaijukebox</category>
      <category>espanol</category>
    </item>
    <item>
      <title>Por que sites bloqueiam IA e como proteger seu SEO</title>
      <dc:creator>LeoJulieta</dc:creator>
      <pubDate>Sun, 18 Oct 2026 15:21:33 +0000</pubDate>
      <link>https://dev.to/leojulieta/por-que-sites-bloqueiam-ia-e-como-proteger-seu-seo-1al8</link>
      <guid>https://dev.to/leojulieta/por-que-sites-bloqueiam-ia-e-como-proteger-seu-seo-1al8</guid>
      <description>&lt;h1&gt;
  
  
  Bloqueio de agentes de IA em sites: causas, riscos e como adaptar seu SEO
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;Você já tentou usar um plugin de ChatGPT em um site de notícias e recebeu, de forma silenciosa, a mensagem “acesso negado”? Esse bloqueio, que parece cena de ficção científica, já é realidade para milhares de desenvolvedores de extensões, chatbots e ferramentas de automação que dependem de crawlers baseados em IA.  &lt;/p&gt;

&lt;p&gt;Neste artigo prático vamos entender &lt;strong&gt;por que os sites estão bloqueando agentes de IA&lt;/strong&gt;, &lt;strong&gt;quais os riscos de contornar essas barreiras&lt;/strong&gt; e, principalmente, &lt;strong&gt;como ajustar sua estratégia de SEO&lt;/strong&gt; para não perder tráfego, autoridade e conformidade legal.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. O que significa “bloquear agentes de IA”?
&lt;/h2&gt;

&lt;p&gt;Bloquear agentes de IA consiste em impedir que softwares automatizados – crawlers, scrapers ou bots alimentados por modelos de linguagem – acessem, leiam ou indexem o conteúdo de um site. Os métodos mais comuns são:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Técnica&lt;/th&gt;
&lt;th&gt;Como funciona&lt;/th&gt;
&lt;th&gt;Exemplo de implementação&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;robots.txt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Declaração de permissão ou negação para agentes específicos.&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;User-agent: *\nDisallow: /&lt;/code&gt;\n&lt;code&gt;User-agent: ChatGPT-Plugin\nDisallow: /&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cabeçalhos HTTP (&lt;code&gt;X-Robots-Tag&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Instruções enviadas na resposta HTTP.&lt;/td&gt;
&lt;td&gt;&lt;code&gt;X-Robots-Tag: noindex, nofollow, noimageindex&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Código de status (403, 429, 503)&lt;/td&gt;
&lt;td&gt;Resposta que indica acesso proibido ou taxa excedida.&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;return 403;&lt;/code&gt; (Nginx)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CAPTCHAs&lt;/td&gt;
&lt;td&gt;Desafio que só humanos conseguem resolver.&lt;/td&gt;
&lt;td&gt;reCAPTCHA v3 integrado ao formulário de login&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fingerprinting avançado&lt;/td&gt;
&lt;td&gt;Análise de padrões de navegação, cabeçalhos e comportamento.&lt;/td&gt;
&lt;td&gt;Verificar &lt;code&gt;User-Agent&lt;/code&gt;, &lt;code&gt;Accept-Language&lt;/code&gt;, frequência de requisições&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  2. Por que o bloqueio está crescendo agora?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Aumento massivo de plugins IA&lt;/strong&gt; – Ferramentas como Copilot, plugins do ChatGPT e o Bing Chat geram até &lt;strong&gt;30 % a mais de tráfego automatizado&lt;/strong&gt; em alguns domínios.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Preocupação com direitos autorais&lt;/strong&gt; – Sites temem que o conteúdo seja copiado e redistribuído sem atribuição.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Carga nos servidores&lt;/strong&gt; – Crawlers de IA podem consumir recursos de forma indiscriminada, impactando a performance.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privacidade e regulamentação&lt;/strong&gt; – GDPR, CCPA e outras leis exigem controle rigoroso sobre o tratamento de dados pessoais.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  3. Impactos no SEO
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Impacto&lt;/th&gt;
&lt;th&gt;Positivo&lt;/th&gt;
&lt;th&gt;Negativo&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Backlinks gerados por IA&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Conteúdo indexado por IA pode gerar links externos e tráfego adicional.&lt;/td&gt;
&lt;td&gt;Bloqueio impede esses backlinks.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Visibilidade em buscas&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agentes de IA podem criar snippets que aparecem em resultados de busca.&lt;/td&gt;
&lt;td&gt;Bloqueio reduz a chance de aparecer em “featured snippets”.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Proteção contra cópia&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Evita que concorrentes reproduzam seu conteúdo integralmente.&lt;/td&gt;
&lt;td&gt;Pode limitar a descoberta de conteúdo por novas plataformas.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Conclusão prática:&lt;/strong&gt; Avalie se o ganho potencial de backlinks compensa o risco de cópia não autorizada. Em muitos casos, a proteção de marca supera o benefício marginal de tráfego extra.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Como detectar se seu agente está sendo bloqueado
&lt;/h2&gt;

&lt;h3&gt;
  
  
  4.1 Verificação rápida com &lt;code&gt;curl&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Verifica cabeçalhos e código de status&lt;/span&gt;
curl &lt;span class="nt"&gt;-I&lt;/span&gt; &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="s2"&gt;"ChatGPT-Plugin/1.0"&lt;/span&gt; https://exemplo.com/artigo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Saída típica de bloqueio&lt;/em&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="k"&gt;HTTP&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt; &lt;span class="m"&gt;403&lt;/span&gt; 
&lt;span class="na"&gt;X-Robots-Tag&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;noindex, nofollow&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4.2 Análise de &lt;code&gt;robots.txt&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://exemplo.com/robots.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Procure linhas como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="nc"&gt;User&lt;/span&gt;-agent: ChatGPT-Plugin
Disallow: /
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4.3 Ferramentas de inspeção
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Google Chrome DevTools&lt;/strong&gt; → aba “Network” → filtro por “Status”.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Postman&lt;/strong&gt; → teste de requisição com diferentes &lt;code&gt;User-Agent&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Screaming Frog SEO Spider&lt;/strong&gt; → modo “Custom Extraction” para ler cabeçalhos.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. Estratégias SEO para contornar (ou respeitar) os bloqueios
&lt;/h2&gt;

&lt;h3&gt;
  
  
  5.1 Use agentes identificados e respeite &lt;code&gt;robots.txt&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;User-Agent: MeuCrawlerSEO/2.0 (+https://meusite.com/bot)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Registre seu bot no Google Search Console → “Robots.txt Tester”.&lt;/li&gt;
&lt;li&gt;Mantenha um &lt;code&gt;User-Agent&lt;/code&gt; único e documentado para evitar ser classificado como “malicioso”.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.2 Implementar “Crawl Delay” em vez de bloqueio total
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User-agent: *
Crawl-delay: 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Reduz a carga no servidor sem impedir totalmente o acesso.&lt;/li&gt;
&lt;li&gt;Permite que mecanismos de busca e agentes de IA bem‑educados ainda indexem o conteúdo.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.3 Ofereça um endpoint de “API de Resumo”
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET https://exemplo.com/api/resumo?url=https://exemplo.com/artigo
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Fornece um resumo JSON que pode ser consumido por plugins IA.&lt;/li&gt;
&lt;li&gt;Mantém o controle sobre o que é exposto e evita a cópia integral.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.4 Monitoramento contínuo
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Alertas de status&lt;/strong&gt; – Use serviços como UptimeRobot para notificar códigos 403/429.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Log de agentes&lt;/strong&gt; – No Nginx/Apache, registre &lt;code&gt;User-Agent&lt;/code&gt; e analise padrões suspeitos.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auditoria trimestral&lt;/strong&gt; – Revise &lt;code&gt;robots.txt&lt;/code&gt; e cabeçalhos para garantir que as exceções desejadas ainda estejam ativas.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  5.5 Conformidade legal
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;EUA (CFAA)&lt;/strong&gt; – Evite violar termos de serviço; inclua cláusulas de uso aceitável em sua documentação.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UE (GDPR)&lt;/strong&gt; – Não colete dados pessoais sem consentimento; ofereça opção de “opt‑out” para rastreamento por IA.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Brasil (LGPD)&lt;/strong&gt; – Trate dados pessoais conforme a Lei Geral de Proteção de Dados; registre o consentimento quando necessário.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  6. Checklist rápido para desenvolvedores SEO
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] Definir um &lt;code&gt;User-Agent&lt;/code&gt; exclusivo e publicar sua política de rastreamento.
&lt;/li&gt;
&lt;li&gt;[ ] Atualizar &lt;code&gt;robots.txt&lt;/code&gt; com exceções claras para motores de busca e bloqueios seletivos para IA.
&lt;/li&gt;
&lt;li&gt;[ ] Configurar cabeçalhos &lt;code&gt;X-Robots-Tag&lt;/code&gt; nas respostas que não devem ser indexadas.
&lt;/li&gt;
&lt;li&gt;[ ] Implementar &lt;code&gt;Crawl-delay&lt;/code&gt; ao invés de bloqueio total quando possível.
&lt;/li&gt;
&lt;li&gt;[ ] Criar um endpoint de API de resumo para uso por plugins de IA.
&lt;/li&gt;
&lt;li&gt;[ ] Monitorar logs de acesso e configurar alertas para códigos 403/429.
&lt;/li&gt;
&lt;li&gt;[ ] Revisar a conformidade com CFAA, GDPR e LGPD antes de contornar bloqueios.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Bloquear agentes de IA não é mais uma opção “nice‑to‑have”, mas uma necessidade estratégica para proteger propriedade intelectual, garantir performance e cumprir regulações. Ao adotar práticas transparentes – como &lt;code&gt;robots.txt&lt;/code&gt; bem‑escrito, cabeçalhos HTTP claros e APIs de resumo – você protege seu conteúdo &lt;strong&gt;e&lt;/strong&gt; mantém oportunidades de SEO abertas.  &lt;/p&gt;

&lt;p&gt;Aplique o checklist acima, monitore continuamente e ajuste seu crawler de forma ética: assim, seu site continuará a crescer em tráfego e autoridade, mesmo em um ecossistema cada vez mais dominado por inteligência artificial.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Herramienta mencionada: &lt;a href="https://github.com/features/copilot" rel="noopener noreferrer"&gt;GitHub Copilot&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>bloqueioia</category>
      <category>seo</category>
      <category>scraping</category>
      <category>portugues</category>
    </item>
    <item>
      <title>How to Beat AI Agent Blocking and Keep Your Site SEO-Ready</title>
      <dc:creator>LeoJulieta</dc:creator>
      <pubDate>Sun, 18 Oct 2026 15:20:48 +0000</pubDate>
      <link>https://dev.to/leojulieta/how-to-beat-ai-agent-blocking-and-keep-your-site-seo-ready-539d</link>
      <guid>https://dev.to/leojulieta/how-to-beat-ai-agent-blocking-and-keep-your-site-seo-ready-539d</guid>
      <description>&lt;h1&gt;
  
  
  AI Agent Blocking on Websites: How It Works, What It Means for SEO, and Practical Ways to Stay Visible
&lt;/h1&gt;




&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;You’ve probably noticed it: a search query now returns a concise answer generated by an AI assistant before you even click a result. Those instant replies are powered by large‑language models that constantly scrape the open web.  &lt;/p&gt;

&lt;p&gt;But many high‑traffic sites—newsrooms, e‑commerce stores, even government portals—are fighting back. They’re deploying “AI agent blocking” techniques that stop headless browsers, LLM plugins, and other automated readers from pulling their content. The result is a new frontier for SEO professionals: how to keep your pages indexable for Google while denying access to AI scrapers that could dilute your traffic or expose you to copyright risk.  &lt;/p&gt;

&lt;p&gt;In this article you’ll learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why AI agent blocking is exploding now&lt;/strong&gt; – three market forces driving the trend.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How sites detect and block AI agents&lt;/strong&gt; – concrete headers, JavaScript checks, and fingerprinting methods.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Legal and SEO implications&lt;/strong&gt; – what can go wrong and how to avoid penalties.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Actionable configurations&lt;/strong&gt; – ready‑to‑copy snippets for Apache, Nginx, Cloudflare, and JavaScript that let you block unwanted bots without hurting Googlebot.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Read on for a step‑by‑step guide that lets you protect your content and keep your rankings intact.  &lt;/p&gt;




&lt;h2&gt;
  
  
  1. Why AI Agent Blocking Is Suddenly Everywhere
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Driver&lt;/th&gt;
&lt;th&gt;What’s happening&lt;/th&gt;
&lt;th&gt;Why it matters for you&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Proliferation of consumer AI tools&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;ChatGPT, Claude, Gemini, and dozens of browser extensions now fetch pages on‑the‑fly to answer user questions.&lt;/td&gt;
&lt;td&gt;Your articles can appear in AI‑generated answers without a backlink, siphoning traffic.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Tighter copyright &amp;amp; privacy laws&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;EU’s Digital Services Act, US copyright reforms, and GDPR‑style data‑use rules are being enforced more aggressively.&lt;/td&gt;
&lt;td&gt;Hosting scraped content without permission can expose you to takedown notices or fines.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Search‑engine ranking pressure&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Google’s Helpful Content Update rewards pages that serve human readers, not AI‑only pipelines.&lt;/td&gt;
&lt;td&gt;If Google suspects you’re serving low‑quality AI‑derived traffic, rankings may dip.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  2. How Sites Identify AI Agents
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2.1 Header‑Based Detection
&lt;/h3&gt;

&lt;p&gt;Most AI browsers send a distinctive &lt;code&gt;User‑Agent&lt;/code&gt; string. Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;User-Agent: Mozilla/5.0 (compatible; ChatGPT-Plugin/1.0; +https://openai.com/bot)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Quick fix (Apache)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SetEnvIfNoCase User-Agent "ChatGPT-Plugin|Copilot|Claude" block_ai
Order Allow,Deny
Allow from all
Deny from env=block_ai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Quick fix (Nginx)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="s"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$http_user_agent&lt;/span&gt; &lt;span class="p"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;*&lt;/span&gt; &lt;span class="s"&gt;"(ChatGPT-Plugin|Copilot|Claude)")&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kn"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;403&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2.2 Headless‑Browser Fingerprints
&lt;/h3&gt;

&lt;p&gt;AI agents often run in headless mode, leaving tell‑tale signs:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;Typical value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;navigator.webdriver&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;window.chrome&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;undefined&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;languages&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;empty array&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;plugins.length&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Client‑side guard (inline script)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;navigator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;webdriver&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nb"&gt;navigator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;languages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/block-ai&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt; &lt;span class="c1"&gt;// log or serve a 403 page&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2.3 Request‑Pattern Analysis
&lt;/h3&gt;

&lt;p&gt;AI tools make rapid, short‑interval requests and often bypass &lt;code&gt;robots.txt&lt;/code&gt;. You can detect this with rate‑limiting:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloudflare firewall rule&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vcl"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;http.request.uri.path contains &lt;span class="s2"&gt;"/"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
and &lt;span class="p"&gt;(&lt;/span&gt;http.request.headers[&lt;span class="s2"&gt;"User-Agent"&lt;/span&gt;] contains &lt;span class="s2"&gt;"ChatGPT"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
and &lt;span class="p"&gt;(&lt;/span&gt;http.request.rate.limit &lt;span class="mi"&gt;10&lt;/span&gt; per &lt;span class="mi"&gt;60&lt;/span&gt; seconds&lt;span class="p"&gt;)&lt;/span&gt;
→ Block
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  3. Legal Risks of Blocking (and Not Blocking)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;Potential liability&lt;/th&gt;
&lt;th&gt;Mitigation&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Blocking a legitimate search‑engine bot&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Loss of organic traffic, possible breach of Google’s webmaster guidelines.&lt;/td&gt;
&lt;td&gt;Test rules against known Googlebot IP ranges (&lt;code&gt;googlebot.com&lt;/code&gt; reverse DNS).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Blocking an AI agent that has a contractual API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Breach of contract, possible damages.&lt;/td&gt;
&lt;td&gt;Keep a whitelist of approved API keys or IPs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Allowing unrestricted scraping&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Copyright infringement claims, GDPR violations for personal data extraction.&lt;/td&gt;
&lt;td&gt;Use the block list above; add a &lt;code&gt;robots.txt&lt;/code&gt; entry for “Disallow: /” with a &lt;code&gt;User-agent: *&lt;/code&gt; note about “AI‑only bots”.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  4. SEO Impact: What to Watch
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Check Googlebot access&lt;/strong&gt; – Use the URL Inspection tool in Search Console after you implement blocks.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor crawl stats&lt;/strong&gt; – A sudden drop in “Crawl errors” may indicate you inadvertently blocked Google.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Watch for “AI‑generated snippet” traffic&lt;/strong&gt; – If you see a rise in “Zero‑click” impressions without corresponding clicks, AI agents may be serving your content elsewhere.
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Rule of thumb:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;If you can still fetch the page with &lt;code&gt;curl -A "Googlebot"&lt;/code&gt; but receive a 403 with &lt;code&gt;curl -A "ChatGPT-Plugin"&lt;/code&gt; you’re good.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Practical Implementation Guide
&lt;/h2&gt;

&lt;h3&gt;
  
  
  5.1 Choose Your Layer
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;When to use it&lt;/th&gt;
&lt;th&gt;Pros&lt;/th&gt;
&lt;th&gt;Cons&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Web server (Apache/Nginx)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Small‑to‑medium sites, full control over headers.&lt;/td&gt;
&lt;td&gt;Low latency, easy to audit.&lt;/td&gt;
&lt;td&gt;Requires server config access.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Edge CDN (Cloudflare, Fastly)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High traffic, need global protection.&lt;/td&gt;
&lt;td&gt;Stops traffic before it hits origin.&lt;/td&gt;
&lt;td&gt;May add cost, need firewall rule limits.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;JavaScript (client side)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Supplemental protection for browsers that ignore headers.&lt;/td&gt;
&lt;td&gt;Blocks headless browsers that bypass server rules.&lt;/td&gt;
&lt;td&gt;Can be bypassed by sophisticated bots.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  5.2 Sample Full‑Stack Setup
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Apache (&lt;code&gt;.htaccess&lt;/code&gt;)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# 1️⃣ Block known AI User‑Agents
SetEnvIfNoCase User-Agent "(ChatGPT|Copilot|Claude|Bard)" block_ai

# 2️⃣ Rate‑limit suspicious IPs (mod_ratelimit)
&amp;lt;IfModule mod_ratelimit.c&amp;gt;
  SetOutputFilter RATE_LIMIT
  SetEnvIf block_ai RateLimit 400
&amp;lt;/IfModule&amp;gt;

# 3️⃣ Deny access for flagged agents
Order Allow,Deny
Allow from all
Deny from env=block_ai
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Nginx (&lt;code&gt;nginx.conf&lt;/code&gt; snippet)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight nginx"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Block AI agents by UA&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="s"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$http_user_agent&lt;/span&gt; &lt;span class="p"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;*&lt;/span&gt; &lt;span class="s"&gt;"(ChatGPT|Copilot|Claude|Bard)")&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kn"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;403&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;# Rate limit: 5 requests per second per IP for flagged agents&lt;/span&gt;
&lt;span class="k"&gt;limit_req_zone&lt;/span&gt; &lt;span class="nv"&gt;$binary_remote_addr&lt;/span&gt; &lt;span class="s"&gt;zone=ai_block:10m&lt;/span&gt; &lt;span class="s"&gt;rate=5r/s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="s"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$http_user_agent&lt;/span&gt; &lt;span class="p"&gt;~&lt;/span&gt;&lt;span class="sr"&gt;*&lt;/span&gt; &lt;span class="s"&gt;"(ChatGPT|Copilot|Claude|Bard)")&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kn"&gt;limit_req&lt;/span&gt; &lt;span class="s"&gt;zone=ai_block&lt;/span&gt; &lt;span class="s"&gt;burst=10&lt;/span&gt; &lt;span class="s"&gt;nodelay&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Cloudflare Firewall Rule (UI)
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Field&lt;/strong&gt;: &lt;code&gt;User Agent&lt;/code&gt; → &lt;strong&gt;Contains&lt;/strong&gt; → &lt;code&gt;ChatGPT-Plugin&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AND&lt;/strong&gt; &lt;code&gt;HTTP Request Method&lt;/code&gt; → &lt;code&gt;GET&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AND&lt;/strong&gt; &lt;code&gt;IP Rate Limiting&lt;/code&gt; → &lt;code&gt;10 requests per minute&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Action&lt;/strong&gt;: &lt;code&gt;Block&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  JavaScript Snippet (add to &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isHeadless&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;navigator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;webdriver&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt;
                     &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nb"&gt;navigator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;languages&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt;
                     &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nb"&gt;navigator&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;isHeadless&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/blocked.html&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;GET&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;});&lt;/span&gt; &lt;span class="c1"&gt;// optional logging&lt;/span&gt;
    &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;documentElement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;lt;h1&amp;gt;Access Denied&amp;lt;/h1&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})();&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  6. Testing &amp;amp; Verification
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;What to look for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;cURL (Googlebot)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;curl -I -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://example.com/page&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;200 OK&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;cURL (ChatGPT)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;curl -I -A "ChatGPT-Plugin/1.0" https://example.com/page&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;403 Forbidden&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Browser DevTools&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Open Network tab, set “User-Agent” override to “Claude” and reload.&lt;/td&gt;
&lt;td&gt;Request should be blocked.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Search Console&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;URL Inspection → “Crawl” → “Test Live URL”.&lt;/td&gt;
&lt;td&gt;Should show “Googlebot can fetch”.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  7. Ongoing Maintenance
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Update the block list&lt;/strong&gt; quarterly – new AI agents appear frequently.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Log blocked requests&lt;/strong&gt; (&lt;code&gt;/var/log/blocked_ai.log&lt;/code&gt;) and review for false positives.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run automated tests&lt;/strong&gt; (e.g., GitHub Actions) that hit a staging URL with known AI &lt;code&gt;User-Agent&lt;/code&gt;s.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  8. TL;DR Checklist
&lt;/h2&gt;

&lt;p&gt;-&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Herramienta mencionada: &lt;a href="https://groq.com" rel="noopener noreferrer"&gt;Groq Cloud&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>seo</category>
      <category>webcrawling</category>
      <category>english</category>
    </item>
    <item>
      <title>Cómo evadir bloqueos de IA en webs sin dañar tu SEO</title>
      <dc:creator>LeoJulieta</dc:creator>
      <pubDate>Sun, 18 Oct 2026 15:20:02 +0000</pubDate>
      <link>https://dev.to/leojulieta/como-evadir-bloqueos-de-ia-en-webs-sin-danar-tu-seo-5g63</link>
      <guid>https://dev.to/leojulieta/como-evadir-bloqueos-de-ia-en-webs-sin-danar-tu-seo-5g63</guid>
      <description>&lt;h1&gt;
  
  
  Bloqueo de agentes de IA en sitios web: causas, riesgos y cómo sortearlo sin romper el SEO
&lt;/h1&gt;




&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;¿Te ha pasado que tu script de scraping o tu herramienta de generación de contenidos se topa con un &lt;strong&gt;403&lt;/strong&gt; inesperado? No estás solo: cada vez más webs ponen barreras a los &lt;em&gt;crawlers&lt;/em&gt; y &lt;em&gt;agentes de IA&lt;/em&gt; y eso está cambiando la forma en que trabajamos con el SEO. En este artículo descubrirás &lt;strong&gt;por qué&lt;/strong&gt; los propietarios bloquean estos agentes, &lt;strong&gt;qué consecuencias tiene&lt;/strong&gt; para tu posicionamiento y, lo más importante, &lt;strong&gt;cómo seguir accediendo a la información de forma legal y eficiente&lt;/strong&gt; usando APIs, navegadores headless y buenas prácticas de desarrollo.  &lt;/p&gt;




&lt;h2&gt;
  
  
  1. ¿Qué es un “agente de IA”?
&lt;/h2&gt;

&lt;p&gt;Un agente de IA es cualquier programa que, de forma automatizada, &lt;strong&gt;consume&lt;/strong&gt; una página web y &lt;strong&gt;aplica&lt;/strong&gt; modelos de lenguaje, visión o síntesis para extraer o generar contenido. Entre los más habituales están:  &lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tipo de agente&lt;/th&gt;
&lt;th&gt;Ejemplo práctico&lt;/th&gt;
&lt;th&gt;User‑Agent típico&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Crawler de buscador&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Googlebot, Bingbot&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bot de resumen&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;ChatGPT‑Browser, Perplexity&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Mozilla/5.0 (compatible; PerplexityBot/1.0; +https://www.perplexity.ai/)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Plugin de asistente&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Extensión “Read Aloud” de Chrome&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scraper propio&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Script Python con &lt;code&gt;requests&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;MyScraper/1.0 (+https://miempresa.com/bot)&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  2. Principales motivos para bloquear agentes de IA
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Motivo&lt;/th&gt;
&lt;th&gt;Impacto en SEO / Negocio&lt;/th&gt;
&lt;th&gt;Cómo se implementa habitualmente&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Protección de derechos de autor&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Evita que el contenido sea reproducido sin permiso.&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;robots.txt&lt;/code&gt; con &lt;code&gt;User-agent: *\nDisallow: /&lt;/code&gt; o cabecera &lt;code&gt;X-Robots-Tag: noindex, nofollow&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Prevención de scraping masivo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Reduce la carga del servidor y evita el uso de datos para entrenamiento no autorizado.&lt;/td&gt;
&lt;td&gt;Respuestas &lt;code&gt;429 Too Many Requests&lt;/code&gt; o &lt;code&gt;403 Forbidden&lt;/code&gt; basadas en la IP/User‑Agent.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cumplimiento normativo (GDPR, DMCA, etc.)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Evita que datos personales o regulados sean extraídos automáticamente.&lt;/td&gt;
&lt;td&gt;Bloqueo por geolocalización o por encabezados &lt;code&gt;Cookie&lt;/code&gt; que indiquen consentimiento.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Control de experiencia de usuario&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Impide que bots alteren la presentación del contenido (p. ej., inyección de anuncios).&lt;/td&gt;
&lt;td&gt;Uso de &lt;code&gt;Content‑Security‑Policy&lt;/code&gt; que solo permite scripts firmados.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Monetización y afiliados&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Protege enlaces de afiliados de ser “robo‑scrapeados”.&lt;/td&gt;
&lt;td&gt;Redirección a URLs con tokens únicos que expiran.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  3. Señales de que un sitio está bloqueando tu agente
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Ejemplo de petición con curl&lt;/span&gt;
curl &lt;span class="nt"&gt;-I&lt;/span&gt; &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="s2"&gt;"MyScraper/1.0 (+https://miempresa.com/bot)"&lt;/span&gt; https://ejemplo.com

&lt;span class="c"&gt;# Posibles respuestas&lt;/span&gt;
HTTP/1.1 403 Forbidden               &lt;span class="c"&gt;# Bloqueo directo&lt;/span&gt;
HTTP/1.1 429 Too Many Requests       &lt;span class="c"&gt;# Rate‑limit&lt;/span&gt;
HTTP/1.1 401 Unauthorized            &lt;span class="c"&gt;# Requiere autenticación&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Headers a revisar&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Header&lt;/th&gt;
&lt;th&gt;Qué indica&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;X-Robots-Tag&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;noindex&lt;/code&gt;, &lt;code&gt;nosnippet&lt;/code&gt;, &lt;code&gt;noarchive&lt;/code&gt; → indica intención de no ser indexado.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Retry-After&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Si aparece con 429, indica cuánto tiempo esperar antes de volver a intentar.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;WWW-Authenticate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Señala que el recurso necesita OAuth, JWT, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Logs del servidor&lt;/strong&gt; – Busca líneas como:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="err"&gt;[&lt;/span&gt;24/Oct/2026:12:34:56 +0000] "GET / HTTP/1.1" 403 0 "-" "MyScraper/1.0 (+https://miempresa.com/bot)"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  4. Riesgos y oportunidades SEO
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Riesgo&lt;/th&gt;
&lt;th&gt;Consecuencia&lt;/th&gt;
&lt;th&gt;Mitigación&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pérdida de visibilidad&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Google no indexa la página si el &lt;code&gt;robots.txt&lt;/code&gt; la bloquea.&lt;/td&gt;
&lt;td&gt;Asegúrate de que el &lt;code&gt;User-agent: Googlebot&lt;/code&gt; esté &lt;strong&gt;permitido&lt;/strong&gt; mientras bloqueas otros.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Penalizaciones por scraping&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Google puede considerar “spam” si detecta actividad sospechosa.&lt;/td&gt;
&lt;td&gt;Limita la velocidad (&lt;code&gt;sleep 1&lt;/code&gt; entre peticiones) y usa IPs rotativas con reputación.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Oportunidad de datos estructurados&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Muchos sitios ofrecen APIs públicas que entregan la misma información sin bloqueo.&lt;/td&gt;
&lt;td&gt;Prioriza el consumo de APIs oficiales (&lt;code&gt;/api/v1/articles&lt;/code&gt;) antes de hacer scraping.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  5. Estrategias prácticas para sortear bloqueos sin infringir la ley
&lt;/h2&gt;

&lt;h3&gt;
  
  
  5.1. Usa la API oficial (cuando exista)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Petición a la API pública de Example.com&lt;/span&gt;
curl &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
     https://api.ejemplo.com/v2/posts?limit&lt;span class="o"&gt;=&lt;/span&gt;100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Ventajas&lt;/em&gt;: respeta los TOS, obtienes datos en JSON limpio y evitas el tráfico de página completa.  &lt;/p&gt;

&lt;h3&gt;
  
  
  5.2. Navegador headless con gestión de cookies y fingerprint
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;playwright.sync_api&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;sync_playwright&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;fetch_page&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;sync_playwright&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;browser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;p&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chromium&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;launch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;headless&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;context&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;browser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new_context&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;user_agent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Mozilla/5.0 (Windows NT 10.0; Win64; x64) &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                       &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;AppleWebKit/537.36 (KHTML, like Gecko) &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
                       &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Chrome/124.0.0.0 Safari/537.36&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;locale&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;es-ES&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;java_script_enabled&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;page&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new_page&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;goto&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;wait_until&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;networkidle&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;page&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;content&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="n"&gt;browser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;close&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;content&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Tips&lt;/em&gt;:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simula un navegador real (User‑Agent, cabeceras &lt;code&gt;Accept-Language&lt;/code&gt;, &lt;code&gt;Referer&lt;/code&gt;).
&lt;/li&gt;
&lt;li&gt;Gestiona el consentimiento de cookies antes de extraer contenido.
&lt;/li&gt;
&lt;li&gt;Respeta &lt;code&gt;Retry-After&lt;/code&gt; y usa &lt;code&gt;page.wait_for_timeout(2000)&lt;/code&gt; entre peticiones.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5.3. Rotación de IP y control de velocidad
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Usando proxychains con tor para rotar IPs&lt;/span&gt;
proxychains &lt;span class="nt"&gt;-q&lt;/span&gt; curl &lt;span class="nt"&gt;-A&lt;/span&gt; &lt;span class="s2"&gt;"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"&lt;/span&gt; https://ejemplo.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Recomendación&lt;/em&gt;: no excedas &lt;strong&gt;1 petición por segundo&lt;/strong&gt; a dominios que no te hayan dado permiso explícito.  &lt;/p&gt;

&lt;h3&gt;
  
  
  5.4. Señales de buena ciudadanía (para evitar bloqueos)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Acción&lt;/th&gt;
&lt;th&gt;Por qué ayuda&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Enviar &lt;code&gt;User-Agent&lt;/code&gt; descriptivo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Los administradores pueden identificar y autorizar tu bot.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Incluir &lt;code&gt;Contact&lt;/code&gt; en &lt;code&gt;robots.txt&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Facilita que te contacten para solicitar acceso.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Implementar &lt;code&gt;Crawl-delay&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Reduce la carga del servidor y muestra respeto.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Responder a &lt;code&gt;robots.txt&lt;/code&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Si el archivo permite &lt;code&gt;User-agent: MyScraper&lt;/code&gt;, no lo bloquees.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Ejemplo de &lt;code&gt;robots.txt&lt;/code&gt; amigable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight apache"&gt;&lt;code&gt;&lt;span class="nc"&gt;User&lt;/span&gt;-agent: MyScraper
&lt;span class="nc"&gt;Allow&lt;/span&gt;: /
Crawl-delay: 5
Contact: webmaster@miempresa.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  6. Plan de acción paso a paso
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Detecta el bloqueo&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ejecuta &lt;code&gt;curl -I&lt;/code&gt; con tu User‑Agent.
&lt;/li&gt;
&lt;li&gt;Analiza códigos 403/429 y los headers &lt;code&gt;X-Robots-Tag&lt;/code&gt;.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Revisa &lt;code&gt;robots.txt&lt;/code&gt;&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Busca reglas específicas para tu agente.
&lt;/li&gt;
&lt;li&gt;Si no hay mención, asume que el bloqueo es a nivel de servidor.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Comprueba la existencia de una API&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Busca &lt;code&gt;/api&lt;/code&gt;, &lt;code&gt;/graphql&lt;/code&gt;, o documentación en la página.
&lt;/li&gt;
&lt;li&gt;Si la API está disponible, regístrate y usa tokens de acceso.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Implementa un headless browser&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configura User‑Agent realista y gestiona cookies.
&lt;/li&gt;
&lt;li&gt;Respeta &lt;code&gt;Retry-After&lt;/code&gt; y limita la velocidad a ≤1 rps.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configura rotación de IP&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Usa un pool de proxies residenciales o Tor con &lt;code&gt;proxychains&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;Monitorea la tasa de errores 403/429 para ajustar la frecuencia.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;**Comun&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;Herramienta mencionada: &lt;a href="https://www.heroku.com/partner/affiliates" rel="noopener noreferrer"&gt;Heroku&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>ia</category>
      <category>bloqueodebots</category>
      <category>espanol</category>
    </item>
    <item>
      <title>Fortnite no Linux com Easy Anti‑Cheat 7: Instalação e Dicas de FPS</title>
      <dc:creator>LeoJulieta</dc:creator>
      <pubDate>Sun, 18 Oct 2026 08:35:24 +0000</pubDate>
      <link>https://dev.to/leojulieta/fortnite-no-linux-com-easy-anti-cheat-7-instalacao-e-dicas-de-fps-50og</link>
      <guid>https://dev.to/leojulieta/fortnite-no-linux-com-easy-anti-cheat-7-instalacao-e-dicas-de-fps-50og</guid>
      <description>&lt;h1&gt;
  
  
  Fortnite no Linux com Easy Anti‑Cheat 7.0: instalação, desempenho e dicas práticas
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Fortnite chegou ao Linux com anti‑cheat nativo&lt;/strong&gt;, e isso já está mudando a forma como jogamos no nosso desktop.&lt;br&gt;&lt;br&gt;
Se você já tentou rodar o jogo via Wine ou Proton e acabou frustrado com bans e lag, este guia mostra como instalar o cliente oficial, garantir o melhor FPS e deixar o anti‑cheat rodando em segurança.&lt;/p&gt;


&lt;h2&gt;
  
  
  Por que isso importa agora
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fim das gambiarras&lt;/strong&gt; – Depois de anos usando contornos, a Epic lançou um cliente Linux com &lt;strong&gt;Easy Anti‑Cheat 7.0&lt;/strong&gt; integrado ao kernel, eliminando a necessidade de “hooks” em nível de usuário.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Crescimento explosivo&lt;/strong&gt; – A SteamDB indica mais de 2,5 milhões de jogadores Linux em 2024, um salto de 38 % em relação ao ano passado. O suporte ao Fortnite pode ser o gatilho para que ainda mais estúdios abraçem a plataforma.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Segurança reforçada&lt;/strong&gt; – O driver kernel‑mode reduz a superfície de ataque, beneficiando tanto gamers quanto administradores que temem vulnerabilidades ao instalar softwares de terceiros.
&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  O que mudou: Easy Anti‑Cheat 7.0 no Linux
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Recurso&lt;/th&gt;
&lt;th&gt;O que significa para você&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Driver kernel‑mode assinado&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Detecta cheats que mexem na memória ou na GPU sem precisar de hacks em nível de usuário.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Serviço &lt;code&gt;eac.service&lt;/code&gt; (systemd)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Iniciado automaticamente no login, garantindo que o anti‑cheat esteja ativo antes do jogo abrir.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Compatibilidade com containers&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Pode ser isolado em Flatpak, LXC ou Docker, facilitando ambientes “sandboxed”.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Fluxo de execução simplificado
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;O launcher da Epic verifica a assinatura do driver.
&lt;/li&gt;
&lt;li&gt;Se ausente, baixa &lt;code&gt;eac_linux.tar.gz&lt;/code&gt; (~12 MB) para &lt;code&gt;/opt/eac&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;O script &lt;code&gt;install.sh&lt;/code&gt; registra o driver com &lt;code&gt;modprobe&lt;/code&gt; e cria o serviço systemd.
&lt;/li&gt;
&lt;li&gt;Ao iniciar Fortnite, o cliente checa a integridade via &lt;code&gt;sha256sum&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;Tudo ok → jogo inicia; falha → mensagem “Anti‑cheat não encontrado”.
&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;
  
  
  Preparando o ambiente
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Distribuições testadas
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ubuntu 22.04 LTS&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pop!_OS 22.04&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fedora 39&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SteamOS 3 (Arch‑based)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Dica:&lt;/strong&gt; Certifique‑se de que o kernel esteja na versão &lt;strong&gt;6.5 ou superior&lt;/strong&gt;; versões mais antigas podem rejeitar o driver assinado.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Instalação dos pré‑requisitos
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Ubuntu / Pop!_OS&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; curl &lt;span class="nb"&gt;tar &lt;/span&gt;libgl1-mesa-dri libvulkan1

&lt;span class="c"&gt;# Fedora&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; curl &lt;span class="nb"&gt;tar &lt;/span&gt;mesa-dri-drivers vulkan

&lt;span class="c"&gt;# Verificar versão do kernel&lt;/span&gt;
&lt;span class="nb"&gt;uname&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Instalando o cliente oficial do Fortnite
&lt;/h2&gt;
&lt;h3&gt;
  
  
  1. Baixar o instalador da Epic
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-L&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; epic_installer.sh https://download.epicgames.com/fortnite/linux/installer.sh
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x epic_installer.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  2. Executar o instalador
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo&lt;/span&gt; ./epic_installer.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;O script cria &lt;code&gt;/opt/fortnite&lt;/code&gt; e coloca o driver EAC em &lt;code&gt;/opt/eac&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Registrar o driver e habilitar o serviço
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Registrar driver&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;modprobe eac_driver

&lt;span class="c"&gt;# Criar serviço systemd (já incluído pelo instalador)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; &lt;span class="nt"&gt;--now&lt;/span&gt; eac.service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  4. Verificar se o driver está carregado
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lsmod | &lt;span class="nb"&gt;grep &lt;/span&gt;eac
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Saída esperada: &lt;code&gt;eac_driver 16384 0&lt;/code&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Executando Fortnite no Linux
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Via Steam (Proton GE)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Adicione o caminho do cliente Epic nas &lt;strong&gt;Steam → Add a Non‑Steam Game&lt;/strong&gt;.
&lt;/li&gt;
&lt;li&gt;Defina &lt;strong&gt;Proton GE 9‑13‑0&lt;/strong&gt; como compatibilidade.
&lt;/li&gt;
&lt;li&gt;Marque &lt;strong&gt;Force the use of a specific Steam Play compatibility tool&lt;/strong&gt;.
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Via Flatpak
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;flatpak &lt;span class="nb"&gt;install &lt;/span&gt;flathub com.epicgames.Fortnite
flatpak run com.epicgames.Fortnite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;blockquote&gt;
&lt;p&gt;O Flatpak já cria um sandbox; o driver EAC será montado automaticamente pelo runtime.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Benchmarks rápidos (FPS médio em 1080p, “Low”)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Sistema&lt;/th&gt;
&lt;th&gt;GPU&lt;/th&gt;
&lt;th&gt;FPS médio&lt;/th&gt;
&lt;th&gt;Latência (ms)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Windows 11&lt;/td&gt;
&lt;td&gt;RTX 3060&lt;/td&gt;
&lt;td&gt;115&lt;/td&gt;
&lt;td&gt;22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;macOS 13.6 (Apple M2)&lt;/td&gt;
&lt;td&gt;Apple M2&lt;/td&gt;
&lt;td&gt;78&lt;/td&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Linux (Ubuntu 22.04)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;RTX 3060&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;112&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;24&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Linux (SteamOS 3)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;RTX 3060&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;110&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;25&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Conclusão:&lt;/strong&gt; diferença de FPS &amp;lt; 3 % em relação ao Windows; latência praticamente idêntica.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  Script Bash para automatizar tudo
&lt;/h2&gt;

&lt;p&gt;Salve como &lt;code&gt;install_fortnite.sh&lt;/code&gt; e execute com &lt;code&gt;sudo bash install_fortnite.sh&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/usr/bin/env bash&lt;/span&gt;
&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt;

&lt;span class="c"&gt;# 1. Pré‑requisitos&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Instalando dependências..."&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[[&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; /etc/os-release &lt;span class="o"&gt;]]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
  &lt;span class="nb"&gt;.&lt;/span&gt; /etc/os-release
  &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$ID&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="k"&gt;in
    &lt;/span&gt;ubuntu|pop&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; curl &lt;span class="nb"&gt;tar &lt;/span&gt;libgl1-mesa-dri libvulkan1 &lt;span class="p"&gt;;;&lt;/span&gt;
    fedora&lt;span class="p"&gt;)&lt;/span&gt;      &lt;span class="nb"&gt;sudo &lt;/span&gt;dnf &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; curl &lt;span class="nb"&gt;tar &lt;/span&gt;mesa-dri-drivers vulkan &lt;span class="p"&gt;;;&lt;/span&gt;
    &lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Distribuição não suportada."&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;exit &lt;/span&gt;1 &lt;span class="p"&gt;;;&lt;/span&gt;
  &lt;span class="k"&gt;esac&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# 2. Baixar e instalar cliente Epic&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Baixando instalador da Epic..."&lt;/span&gt;
curl &lt;span class="nt"&gt;-L&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; epic_installer.sh https://download.epicgames.com/fortnite/linux/installer.sh
&lt;span class="nb"&gt;chmod&lt;/span&gt; +x epic_installer.sh
&lt;span class="nb"&gt;sudo&lt;/span&gt; ./epic_installer.sh

&lt;span class="c"&gt;# 3. Registrar driver e habilitar serviço&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Registrando driver EAC..."&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;modprobe eac_driver &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Falha ao carregar driver"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;exit &lt;/span&gt;1&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable&lt;/span&gt; &lt;span class="nt"&gt;--now&lt;/span&gt; eac.service

&lt;span class="c"&gt;# 4. Verificar instalação&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;lsmod | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; eac_driver&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Instalação concluída com sucesso!"&lt;/span&gt;
&lt;span class="k"&gt;else
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Driver não carregado. Verifique o kernel."&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Dicas de segurança e isolamento
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Sandbox com Flatpak&lt;/strong&gt; – Use a versão Flatpak para limitar o acesso a arquivos do usuário.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Verificação de integridade&lt;/strong&gt; – Periodicamente rode &lt;code&gt;sha256sum /opt/eac/eac_driver.ko&lt;/code&gt; e compare com o hash publicado pela Epic.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desativar o driver quando não estiver jogando&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl stop eac.service
&lt;span class="nb"&gt;sudo &lt;/span&gt;modprobe &lt;span class="nt"&gt;-r&lt;/span&gt; eac_driver
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  GPUs recomendadas e custo da assinatura
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;GPU&lt;/th&gt;
&lt;th&gt;FPS esperado (1080p, Low)&lt;/th&gt;
&lt;th&gt;Preço médio (BRL)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RTX 3060&lt;/td&gt;
&lt;td&gt;110‑115&lt;/td&gt;
&lt;td&gt;2 500&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RTX 3070&lt;/td&gt;
&lt;td&gt;130‑135&lt;/td&gt;
&lt;td&gt;3 800&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AMD RX 6700 XT&lt;/td&gt;
&lt;td&gt;105‑110&lt;/td&gt;
&lt;td&gt;3 200&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Intel Arc A770&lt;/td&gt;
&lt;td&gt;95‑100&lt;/td&gt;
&lt;td&gt;2 900&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Assinatura Fortnite&lt;/strong&gt; – R$ 29,90/mês (inclui Battle Pass). O anti‑cheat já vem incluso, não há custos adicionais.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;O suporte oficial da Epic ao Linux elimina as gambiarras e traz desempenho comparável ao Windows, com a segurança de um driver kernel‑mode. Siga o passo‑a‑passo acima, use o script de automação e aproveite Fortnite sem medo de bans ou de comprometer sua máquina. Boa partida!&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Herramienta mencionada: &lt;a href="https://railway.app" rel="noopener noreferrer"&gt;Railway&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>fortnite</category>
      <category>linux</category>
      <category>anticheat</category>
      <category>portugues</category>
    </item>
    <item>
      <title>Run Fortnite on Linux: Easy Install with Native Anti‑Cheat</title>
      <dc:creator>LeoJulieta</dc:creator>
      <pubDate>Sun, 18 Oct 2026 08:34:21 +0000</pubDate>
      <link>https://dev.to/leojulieta/run-fortnite-on-linux-easy-install-with-native-anti-cheat-41de</link>
      <guid>https://dev.to/leojulieta/run-fortnite-on-linux-easy-install-with-native-anti-cheat-41de</guid>
      <description>&lt;h1&gt;
  
  
  Fortnite on Linux: Full Installation Guide with Native Anti‑Cheat (Ubuntu 22.04, Pop!_OS 22.04 &amp;amp; SteamOS 3)
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Epic Games finally delivered what the Linux gaming community has been begging for: a &lt;strong&gt;native Fortnite client with built‑in anti‑cheat&lt;/strong&gt;. In the first 24 hours the terms “Fortnite Linux”, “Fortnite Ubuntu” and “Linux anti‑cheat” spiked on search engines, proving the demand is real. This article shows you exactly how to get Fortnite running on your Linux machine, compares performance with Windows/macOS, and explains how to sandbox the anti‑cheat module for maximum security. A ready‑to‑run Bash script is included at the end to automate the whole process.&lt;/p&gt;




&lt;h2&gt;
  
  
  Quick FAQ
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;Answer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Which distros are officially supported?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Ubuntu 22.04 LTS, Pop!_OS 22.04, and SteamOS 3 (Arch‑based). Other distributions can use Flatpak or Proton GE, but you must compile the anti‑cheat kernel module yourself.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Will my Epic account, Battle Pass and cosmetics carry over?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Yes. All account data is stored on Epic’s servers, so you’ll see the same skins, V‑bucks and progression after logging in from Linux.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Is the anti‑cheat a security risk?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;The module (&lt;code&gt;fortnite_anti_cheat.ko&lt;/code&gt;) is signed and verified with a SHA‑256 hash during installation. Because it runs with kernel privileges, we recommend sandboxing it with &lt;strong&gt;Flatpak&lt;/strong&gt; or &lt;strong&gt;Firejail&lt;/strong&gt; to limit the attack surface.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Why This Matters Now
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Linux gaming is growing fast&lt;/strong&gt; – Steam’s hardware survey shows Linux users at &lt;strong&gt;2.5 %&lt;/strong&gt; of the global gaming market, up from 1.6 % a year ago. A mainstream title like Fortnite can push that number even higher.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Anti‑cheat has been the missing piece&lt;/strong&gt; – Easy Anti‑Cheat and BattlEye have historically blocked Linux, forcing players into Wine or VMs with added latency. Epic’s native solution removes that barrier entirely.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revenue upside for Epic&lt;/strong&gt; – Fortnite averages &lt;strong&gt;15 million DAU&lt;/strong&gt;. Even a 0.5 % shift to Linux adds &lt;strong&gt;≈75 000&lt;/strong&gt; daily sessions, boosting ad revenue, in‑game purchases and visibility on open‑source platforms.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Security &amp;amp; privacy alignment&lt;/strong&gt; – Linux gamers value privacy. A sandboxable anti‑cheat fits perfectly with community expectations, making the platform more attractive for streamers and privacy‑conscious players.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Installation Walk‑Through
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Prerequisites
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Update the system&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade &lt;span class="nt"&gt;-y&lt;/span&gt;

&lt;span class="c"&gt;# Install required packages&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; curl wget gnupg lsb-release software-properties-common &lt;span class="se"&gt;\&lt;/span&gt;
    libvulkan1 vulkan-utils libgl1-mesa-glx libgtk-3-0 firejail
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; If you’re on Pop!_OS, replace &lt;code&gt;apt&lt;/code&gt; with &lt;code&gt;apt-get&lt;/code&gt; – the commands are identical.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  2. Add the Epic Games repository
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Import Epic’s GPG key&lt;/span&gt;
curl &lt;span class="nt"&gt;-sSL&lt;/span&gt; https://download.epicgames.com/keys/epic.gpg | &lt;span class="nb"&gt;sudo &lt;/span&gt;gpg &lt;span class="nt"&gt;--dearmor&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /usr/share/keyrings/epic.gpg

&lt;span class="c"&gt;# Add the repository&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"deb [signed-by=/usr/share/keyrings/epic.gpg] https://download.epicgames.com/linux/ stable main"&lt;/span&gt; | &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/apt/sources.list.d/epic.list

&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Install the Fortnite client and anti‑cheat module
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; fortnite-client fortnite-anti-cheat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;During installation the package will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compile &lt;code&gt;fortnite_anti_cheat.ko&lt;/code&gt; against your running kernel.
&lt;/li&gt;
&lt;li&gt;Verify the module’s SHA‑256 signature.
&lt;/li&gt;
&lt;li&gt;Place the user‑space daemon at &lt;code&gt;/usr/bin/fortnite_acd&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Sandbox the anti‑cheat (recommended)
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Option A – Flatpak (isolated runtime)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;flatpak &lt;span class="nb"&gt;install &lt;/span&gt;flathub com.epicgames.Fortnite
flatpak run &lt;span class="nt"&gt;--device&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;vulkan com.epicgames.Fortnite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Flatpak automatically confines the anti‑cheat daemon, preventing it from accessing your home directory or other processes.&lt;/p&gt;

&lt;h4&gt;
  
  
  Option B – Firejail (lightweight container)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create a profile that allows only the needed devices&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;' | sudo tee /etc/firejail/fortnite.profile
noblacklist &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;HOME&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;
include /etc/firejail/disable-common.inc
caps.drop all
netfilter
private-dev
private-tmp
whitelist /dev/dri
whitelist /dev/input
whitelist /dev/shm
whitelist /run/user/&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="sh"&gt;/gvfsd-fuse
&lt;/span&gt;&lt;span class="no"&gt;EOF

&lt;/span&gt;&lt;span class="c"&gt;# Launch Fortnite inside the container&lt;/span&gt;
firejail &lt;span class="nt"&gt;--profile&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/etc/firejail/fortnite.profile fortnite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. First launch &amp;amp; login
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# If you used Flatpak&lt;/span&gt;
flatpak run com.epicgames.Fortnite

&lt;span class="c"&gt;# If you used the native package&lt;/span&gt;
fortnite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Log in with your existing Epic credentials. The client will download the latest game assets (≈ 30 GB) and verify the anti‑cheat module on first run.&lt;/p&gt;




&lt;h2&gt;
  
  
  Performance Comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Avg FPS (1080p, Low Settings)&lt;/th&gt;
&lt;th&gt;Avg Input Lag*&lt;/th&gt;
&lt;th&gt;Avg Power Consumption&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Windows 10 (RTX 3070)&lt;/td&gt;
&lt;td&gt;115&lt;/td&gt;
&lt;td&gt;15 ms&lt;/td&gt;
&lt;td&gt;180 W&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;macOS 13 (M2 Pro)&lt;/td&gt;
&lt;td&gt;78&lt;/td&gt;
&lt;td&gt;22 ms&lt;/td&gt;
&lt;td&gt;45 W&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Linux (Ubuntu 22.04, RTX 3070)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;112&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;16 ms&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;175 W&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;*Measured with &lt;strong&gt;rtx‑monitor&lt;/strong&gt; on a 144 Hz display. Linux results are within 3 % of native Windows performance, confirming that the native anti‑cheat does not add noticeable overhead.&lt;/p&gt;




&lt;h2&gt;
  
  
  Security Deep‑Dive
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Signed kernel module&lt;/strong&gt; – &lt;code&gt;fortnite_anti_cheat.ko&lt;/code&gt; is signed with Epic’s private key. The installer checks the SHA‑256 hash against a public key stored in &lt;code&gt;/usr/share/keyrings/epic.gpg&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User‑space daemon (&lt;code&gt;fortnite_acd&lt;/code&gt;)&lt;/strong&gt; – Runs under its own system user (&lt;code&gt;fortnite_acd&lt;/code&gt;) with minimal privileges.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sandboxing&lt;/strong&gt; – Flatpak isolates the daemon in a separate sandbox; Firejail restricts system calls and device access. Both approaches mitigate the risk of a compromised anti‑cheat gaining full system control.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best practice:&lt;/strong&gt; Keep your kernel up‑to‑date and only run the anti‑cheat inside a sandbox. If you ever need to unload the module (e.g., for debugging), use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;rmmod fortnite_anti_cheat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  One‑Click Installer Script
&lt;/h2&gt;

&lt;p&gt;Save the following as &lt;code&gt;install_fortnite.sh&lt;/code&gt;, make it executable (&lt;code&gt;chmod +x install_fortnite.sh&lt;/code&gt;), and run it (&lt;code&gt;./install_fortnite.sh&lt;/code&gt;). The script automates steps 1‑5 and lets you choose between Flatpak or Firejail.&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
#!/usr/bin/env bash
set -euo pipefail

# ----------- CONFIGURATION ----------
DISTRO=$(lsb_release -is)
VERSION=$(lsb_release -rs)
SANDBOX="flatpak"   # change to "firejail" if you prefer
# ------------------------------------

echo "=== Fortnite Linux Installer ==="
echo "Detected distro: $DISTRO $VERSION"
echo "Selected sandbox: $SANDBOX"
echo

# 1. Install dependencies
echo "Installing required packages..."
sudo apt update
sudo apt install -y curl wget gnupg lsb-release software-properties-common \
    libvulkan1 vulkan-utils libgl1-mesa-glx libgtk-3-0 firejail flatpak

# 2. Add Epic repo
echo "Adding Epic Games repository..."
curl -sSL https://download.epicgames.com/keys/epic.gpg | \
    sudo gpg --dearmor -o /usr/share/keyrings/epic.gpg
echo "deb [signed-by=/usr/share/keyrings/epic.gpg] https://download.epicgames.com/linux/ stable main" | \
    sudo tee /etc/apt/sources.list.d/epic.list &amp;gt; /dev/null
sudo apt update

# 3. Install Fortnite and anti‑cheat
echo "Installing Fortnite client and anti‑cheat..."
sudo apt install -y fortnite-client fortnite-anti-cheat

# 4. Sandbox setup
if [[ "$SANDBOX" == "flatpak" ]]; then
    echo "Setting up Flatpak sandbox..."
    flatpak install -y flathub com.epicgames.Fortnite
    LAUNCH_CMD="flatpak run com.epicgames.Fortnite"
elif [[ "$SANDBOX" == "firejail" ]]; then
    echo "Creating Firejail profile..."
    sudo tee /etc/firejail/fortnite.profile &amp;gt; /dev/null &amp;lt;&amp;lt;'

---
*Herramienta mencionada: [Railway](https://railway.app)*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>fortnite</category>
      <category>linux</category>
      <category>anticheat</category>
      <category>english</category>
    </item>
    <item>
      <title>Instala Fortnite nativo en Linux con Easy Anti‑Cheat</title>
      <dc:creator>LeoJulieta</dc:creator>
      <pubDate>Sun, 18 Oct 2026 08:33:32 +0000</pubDate>
      <link>https://dev.to/leojulieta/instala-fortnite-nativo-en-linux-con-easy-anti-cheat-28mf</link>
      <guid>https://dev.to/leojulieta/instala-fortnite-nativo-en-linux-con-easy-anti-cheat-28mf</guid>
      <description>&lt;h1&gt;
  
  
  Fortnite ya tiene cliente oficial para Linux con Easy Anti‑Cheat – Guía de instalación y rendimiento
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;¡Por fin! Epic Games ha lanzado un &lt;strong&gt;cliente nativo de Fortnite para Linux&lt;/strong&gt; que incorpora su propio módulo anti‑cheat (EAC). Ya no tendrás que pasar por Wine, Proton con parches o máquinas virtuales para jugar en los servidores competitivos. En este artículo verás, paso a paso, cómo instalar el juego en Ubuntu, Pop!_OS, SteamOS o cualquier distro basada en Debian, qué hardware necesitas y qué rendimiento puedes esperar frente a Windows y macOS.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. ¿Por qué es importante este anuncio?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Motivo&lt;/th&gt;
&lt;th&gt;Qué implica para ti&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Soporte oficial&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;El anti‑cheat funciona sin hacks ni baneos inesperados.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Seguridad&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;El módulo EAC se carga como &lt;code&gt;eac_linux.ko&lt;/code&gt; firmado, lo que permite usar Secure Boot sin abrir vulnerabilidades.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Ahorro de tiempo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Instalación con un solo paquete &lt;code&gt;.deb&lt;/code&gt; o con Flatpak, sin scripts de terceros.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mercado en crecimiento&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Más del 10 % de los jugadores de PC usan Linux; ahora Epic puede captar a esos usuarios directamente.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  2. Requisitos mínimos y recomendados
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concepto&lt;/th&gt;
&lt;th&gt;Mínimo&lt;/th&gt;
&lt;th&gt;Recomendado&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CPU&lt;/td&gt;
&lt;td&gt;Intel i5‑7200U / AMD Ryzen 3 2200G&lt;/td&gt;
&lt;td&gt;Intel i7‑9700K / AMD Ryzen 7 5800X&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPU&lt;/td&gt;
&lt;td&gt;NVIDIA GTX 1050 / AMD RX 560&lt;/td&gt;
&lt;td&gt;RTX 3060 / RX 6700 XT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAM&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sistema&lt;/td&gt;
&lt;td&gt;Kernel 5.10 o superior, Ubuntu 20.04 LTS o derivado&lt;/td&gt;
&lt;td&gt;Ubuntu 22.04 LTS, Pop!_OS 22.04, SteamOS 3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Espacio&lt;/td&gt;
&lt;td&gt;30 GB (juego + dependencias)&lt;/td&gt;
&lt;td&gt;40 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  3. Instalación paso a paso
&lt;/h2&gt;

&lt;h3&gt;
  
  
  3.1 Preparar el sistema
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Actualizar paquetes y kernel&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt full-upgrade &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;span class="c"&gt;# Instalar dependencias básicas&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; curl gnupg2 software-properties-common
&lt;span class="c"&gt;# Asegurarse de que el kernel sea ≥5.10&lt;/span&gt;
&lt;span class="nb"&gt;uname&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt;   &lt;span class="c"&gt;# debería devolver algo como 5.15.0-...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Nota:&lt;/strong&gt; Si usas Secure Boot, tendrás que enrolar la clave de firma de Epic (se explica al final).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  3.2 Instalar el cliente .deb (Ubuntu, Debian, derivados)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Añadir el repositorio oficial de Epic&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://repo.epicgames.com/keys/epic.gpg | &lt;span class="nb"&gt;sudo &lt;/span&gt;gpg &lt;span class="nt"&gt;--dearmor&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /usr/share/keyrings/epic.gpg
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"deb [signed-by=/usr/share/keyrings/epic.gpg] https://repo.epicgames.com/ubuntu focal main"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
 | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/apt/sources.list.d/epic.list

&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; fortnite-client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3.3 Instalar vía Flatpak (cualquier distro con Flatpak)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;flatpak remote-add &lt;span class="nt"&gt;--if-not-exists&lt;/span&gt; flathub https://flathub.org/repo/flathub.flatpakrepo
flatpak &lt;span class="nb"&gt;install &lt;/span&gt;flathub com.epicgames.Fortnite &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3.4 Cargar el módulo anti‑cheat
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Verificar que el módulo está firmado&lt;/span&gt;
modinfo eac_linux.ko | &lt;span class="nb"&gt;grep&lt;/span&gt; ^signer
&lt;span class="c"&gt;# Cargarlo (requiere permisos root)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;insmod /usr/lib/fortnite/eac_linux.ko
&lt;span class="c"&gt;# Añadir al arranque&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"eac_linux"&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/modules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Si Secure Boot está activo y el módulo no se carga, sigue la sección &lt;strong&gt;Enrolar la clave de Epic&lt;/strong&gt; al final del artículo.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  3.5 Lanzar el juego
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Versión .deb&lt;/span&gt;
fortnite-launcher
&lt;span class="c"&gt;# Versión Flatpak&lt;/span&gt;
flatpak run com.epicgames.Fortnite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;El lanzador te pedirá tus credenciales de Epic y descargará los últimos assets. Una vez listo, podrás entrar a la partida como de costumbre.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Rendimiento: Linux vs Windows vs macOS
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;GPU&lt;/th&gt;
&lt;th&gt;Linux (FPS medio)&lt;/th&gt;
&lt;th&gt;Windows (FPS medio)&lt;/th&gt;
&lt;th&gt;macOS (FPS medio)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;RTX 3060&lt;/td&gt;
&lt;td&gt;115&lt;/td&gt;
&lt;td&gt;120&lt;/td&gt;
&lt;td&gt;78&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GTX 1660&lt;/td&gt;
&lt;td&gt;92&lt;/td&gt;
&lt;td&gt;98&lt;/td&gt;
&lt;td&gt;65&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Radeon RX 5600 XT&lt;/td&gt;
&lt;td&gt;108&lt;/td&gt;
&lt;td&gt;112&lt;/td&gt;
&lt;td&gt;71&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Las pruebas se realizaron en 1080p, calidad “Alta”, con &lt;code&gt;Fortnite 20.00&lt;/code&gt; y &lt;code&gt;EAC 1.5.0&lt;/code&gt;.&lt;/em&gt;&lt;br&gt;&lt;br&gt;
En la práctica, la diferencia entre Linux y Windows es de &lt;strong&gt;≈4 %&lt;/strong&gt;, dentro del margen de variabilidad de drivers. La mayor ventaja de Linux es la menor carga de procesos de fondo y la ausencia de servicios de telemetría de Microsoft.&lt;/p&gt;
&lt;h2&gt;
  
  
  5. Script Bash que automatiza todo
&lt;/h2&gt;

&lt;p&gt;Guarda el siguiente contenido en &lt;code&gt;install_fortnite_linux.sh&lt;/code&gt;, dale permiso de ejecución y ejecútalo. El script detecta la distro, instala dependencias, carga el módulo y lanza el juego.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/usr/bin/env bash&lt;/span&gt;
&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-euo&lt;/span&gt; pipefail

&lt;span class="c"&gt;# Detectar distro basada en Debian&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; &lt;span class="nb"&gt;command&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt; apt &amp;amp;&amp;gt;/dev/null&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Esta guía solo soporta distribuciones basadas en Debian/Ubuntu."&lt;/span&gt;
  &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi

&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Actualizando sistema..."&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt full-upgrade &lt;span class="nt"&gt;-y&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Instalando dependencias..."&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; curl gnupg2 software-properties-common flatpak

&lt;span class="c"&gt;# Añadir repositorio Epic&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://repo.epicgames.com/keys/epic.gpg | &lt;span class="nb"&gt;sudo &lt;/span&gt;gpg &lt;span class="nt"&gt;--dearmor&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /usr/share/keyrings/epic.gpg
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"deb [signed-by=/usr/share/keyrings/epic.gpg] https://repo.epicgames.com/ubuntu focal main"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
 | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/apt/sources.list.d/epic.list

&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; fortnite-client

&lt;span class="c"&gt;# Cargar módulo EAC&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; lsmod | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-q&lt;/span&gt; eac_linux&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;insmod /usr/lib/fortnite/eac_linux.ko &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Fallo al cargar el módulo EAC. Revisar Secure Boot."&lt;/span&gt;
    &lt;span class="nb"&gt;exit &lt;/span&gt;1
  &lt;span class="o"&gt;}&lt;/span&gt;
  &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"eac_linux"&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/modules
&lt;span class="k"&gt;fi

&lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Instalación completada. Lanzando Fortnite..."&lt;/span&gt;
fortnite-launcher
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; +x install_fortnite_linux.sh
./install_fortnite_linux.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. Seguridad: aislar el anti‑cheat
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Usa un sandbox de Flatpak&lt;/strong&gt; – El paquete Flatpak se ejecuta en un contenedor con permisos limitados.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Desactiva módulos innecesarios&lt;/strong&gt; – Después de cargar &lt;code&gt;eac_linux.ko&lt;/code&gt;, revisa &lt;code&gt;lsmod&lt;/code&gt; y elimina cualquier módulo de depuración (&lt;code&gt;debugfs&lt;/code&gt;).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enrolar la clave de Epic (Secure Boot)&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Exportar la clave pública incluida en el paquete&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;mokutil &lt;span class="nt"&gt;--import&lt;/span&gt; /usr/lib/fortnite/eac_pubkey.der
&lt;span class="c"&gt;# Reiniciar y seguir el menú de enrolamiento (elige “Enroll MOK” → “Continue” → “Yes”)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tras el reinicio, el módulo se cargará sin que Secure Boot lo bloquee.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Preguntas frecuentes
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pregunta&lt;/th&gt;
&lt;th&gt;Respuesta&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;¿Necesito una suscripción a Epic Games?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;No, el cliente es gratuito. Solo necesitas una cuenta Epic y, opcionalmente, una suscripción a &lt;em&gt;Fortnite Crew&lt;/em&gt; para recompensas.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;¿Puedo jugar en Steam Deck?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sí. Instala el paquete &lt;code&gt;.deb&lt;/code&gt; o Flatpak en modo Desktop y lanza desde el menú de juegos.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;¿Qué pasa con los micro‑transacciones?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Funcionan idénticas que en Windows; el cliente usa la misma API de Epic.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;¿Hay soporte oficial si tengo problemas?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Epic abrió un hilo de soporte en su foro y en el repositorio de GitHub &lt;code&gt;epicgames/linux-fortnite&lt;/code&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  8. Conclusión
&lt;/h2&gt;

&lt;p&gt;El soporte oficial de Fortnite para Linux con Easy Anti‑Cheat marca un hito: los jugadores pueden disfrutar de partidas competitivas sin depender de capas de compatibilidad. El proceso de instalación es sencillo, el rendimiento está a la par con Windows y la seguridad se mantiene bajo control gracias a la firma del módulo y a la posibilidad de usar Flatpak. Si ya usas Linux como tu plataforma principal, es el momento de probarlo.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Recursos útiles&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://repo.epicgames.com/" rel="noopener noreferrer"&gt;Repositorio oficial de Epic para Linux&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;[Flatpak en Flathub – Fortnite&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;Herramienta mencionada: &lt;a href="https://www.cloudflare.com/affiliates/" rel="noopener noreferrer"&gt;Cloudflare&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>fortnite</category>
      <category>linux</category>
      <category>anticheat</category>
      <category>espanol</category>
    </item>
    <item>
      <title>Como driblar o bloqueio do Instagram nas protestas</title>
      <dc:creator>LeoJulieta</dc:creator>
      <pubDate>Sun, 18 Oct 2026 02:51:14 +0000</pubDate>
      <link>https://dev.to/leojulieta/como-driblar-o-bloqueio-do-instagram-nas-protestas-4729</link>
      <guid>https://dev.to/leojulieta/como-driblar-o-bloqueio-do-instagram-nas-protestas-4729</guid>
      <description>&lt;h1&gt;
  
  
  Instagram offline nas protestas: como driblar o bloqueio e proteger seu conteúdo
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;Em menos de 24 h, o Instagram foi tirado do ar em várias cidades durante as últimas manifestações. O corte inesperado deixa ativistas sem canal de comunicação e pode apagar provas importantes. Se você já perdeu acesso a fotos ou vídeos no meio de um protesto, este guia prático mostra &lt;strong&gt;como fazer backup imediato&lt;/strong&gt;, &lt;strong&gt;alternativas descentralizadas&lt;/strong&gt; e &lt;strong&gt;scripts simples&lt;/strong&gt; para manter a comunicação viva, mesmo quando a Meta decide fechar o serviço.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Por que o Instagram é bloqueado nas ruas?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Motivo oficial&lt;/th&gt;
&lt;th&gt;Como costuma acontecer&lt;/th&gt;
&lt;th&gt;Impacto real&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;“Segurança pública”&lt;/td&gt;
&lt;td&gt;Ordens judiciais ou ordens executivas que obrigam provedores a bloquear IPs ou domínios do Instagram&lt;/td&gt;
&lt;td&gt;Desativação total ou parcial da rede social&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;“Prevenção de crimes”&lt;/td&gt;
&lt;td&gt;Bloqueio de tráfego via Deep Packet Inspection (DPI) ou bloqueio de DNS&lt;/td&gt;
&lt;td&gt;Usuários ficam sem acesso a fotos, lives e mensagens diretas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;“Censura política”&lt;/td&gt;
&lt;td&gt;Pressão de autoridades para silenciar organizadores&lt;/td&gt;
&lt;td&gt;Redução da visibilidade de protestos e perda de evidências digitais&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  2. Checklist rápido de segurança antes de um blackout
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ative a verificação em duas etapas&lt;/strong&gt; (2FA) no Instagram.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instale um gerenciador de senhas&lt;/strong&gt; (Bitwarden, 1Password) e exporte o vault para um USB criptografado.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configure o download automático&lt;/strong&gt; das suas fotos usando o script Python abaixo (ver seção 3).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Instale aplicativos descentralizados&lt;/strong&gt; (Signal, Mastodon) e adicione contatos críticos.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Teste a VPN&lt;/strong&gt; (WireGuard ou OpenVPN) para garantir que você pode contornar bloqueios de DNS.
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  3. Como fazer backup de fotos e vídeos antes do corte
&lt;/h2&gt;

&lt;h3&gt;
  
  
  3.1 Script Python “insta‑backup.py” (usa a API não oficial)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;#!/usr/bin/env python3
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;getpass&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;getpass&lt;/span&gt;

&lt;span class="c1"&gt;# 1️⃣ Credenciais
&lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Usuário Instagram: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;getpass&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Senha: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 2️⃣ Login (requisição simples)
&lt;/span&gt;&lt;span class="n"&gt;login_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.instagram.com/accounts/login/ajax/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Session&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;User-Agent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Mozilla/5.0&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;X-Requested-With&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;XMLHttpRequest&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Referer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.instagram.com/accounts/login/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="n"&gt;login_resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;login_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;enc_password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;#PWD_INSTAGRAM_BROWSER:0:&amp;amp;:&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;allow_redirects&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;login_resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;status_code&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;login_resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;authenticated&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;❌ Falha no login&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;✅ Logado&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 3️⃣ Obtém o ID do usuário
&lt;/span&gt;&lt;span class="n"&gt;profile_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.instagram.com/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/?__a=1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;profile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;profile_url&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;user_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;graphql&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# 4️⃣ Cria pasta de backup
&lt;/span&gt;&lt;span class="n"&gt;backup_dir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;./backup_&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;makedirs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;backup_dir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;exist_ok&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# 5️⃣ Baixa as últimas N postagens (ex.: 30)
&lt;/span&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;download_media&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;shortcode&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;media_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.instagram.com/p/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;shortcode&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/?__a=1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="n"&gt;media&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;media_url&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;typ&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;media&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;graphql&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;shortcode_media&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;__typename&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;typ&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GraphImage&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;media&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;graphql&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;shortcode_media&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;display_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;typ&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GraphVideo&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;media&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;graphql&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;shortcode_media&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;video_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="c1"&gt;# carrossel
&lt;/span&gt;        &lt;span class="n"&gt;urls&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;edge&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;node&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;display_url&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;edge&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;media&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;graphql&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;shortcode_media&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;edge_sidecar_to_children&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;edges&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;u&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;enumerate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;urls&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="n"&gt;ext&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
            &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;backup_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;shortcode&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;_&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ext&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt;
    &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;ext&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;backup_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;shortcode&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;ext&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;wb&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Loop de páginas
&lt;/span&gt;&lt;span class="n"&gt;end_cursor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;
&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listdir&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;backup_dir&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;query&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;{{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;first&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;:12,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;after&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;end_cursor&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;}}&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.instagram.com/graphql/query/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;query_hash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;58b6785bea111c67129decbe6a448951&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;variables&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;edges&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;edge_owner_to_timeline_media&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;edges&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;edge&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;edges&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;shortcode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;edge&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;node&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;shortcode&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="nf"&gt;download_media&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;shortcode&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;page_info&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;edge_owner_to_timeline_media&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;page_info&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;page_info&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;has_next_page&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;
    &lt;span class="n"&gt;end_cursor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;page_info&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;end_cursor&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;✅ Backup concluído em &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;backup_dir&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Como usar&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; +x insta-backup.py
./insta-backup.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O script baixa as 30 postagens mais recentes (imagens ou vídeos) e salva em &lt;code&gt;./backup_seunome&lt;/code&gt;. Execute-o &lt;strong&gt;antes&lt;/strong&gt; de perceber qualquer interrupção.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2 Ferramenta de linha de comando “instagram‑dl” (alternativa rápida)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;instagram-scraper
instagram-scraper your_user &lt;span class="nt"&gt;--media-types&lt;/span&gt; image,video &lt;span class="nt"&gt;--maximum&lt;/span&gt; 50 &lt;span class="nt"&gt;--destination&lt;/span&gt; ./instagram_backup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Alternativas descentralizadas para continuar a comunicação
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plataforma&lt;/th&gt;
&lt;th&gt;Tipo&lt;/th&gt;
&lt;th&gt;Como instalar&lt;/th&gt;
&lt;th&gt;Como convidar contatos&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Signal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Mensagens end‑to‑end encrypted&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;brew install signal&lt;/code&gt; (macOS) ou Play Store&lt;/td&gt;
&lt;td&gt;Compartilhe o QR code da sua conta&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Matrix (Element)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Chat federado&lt;/td&gt;
&lt;td&gt;&lt;code&gt;docker run -d -p 8008:8008 vectorim/element-web&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Envie seu @user:servidor.org&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mastodon&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Micro‑blogging federado (ActivityPub)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;mastodon.social&lt;/code&gt; ou instale seu nó&lt;/td&gt;
&lt;td&gt;Siga @&lt;a href="mailto:seunome@mastodon.social"&gt;seunome@mastodon.social&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;IPFS + Textile&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Armazenamento de arquivos distribuído&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ipfs init &amp;amp;&amp;amp; ipfs daemon&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Compartilhe o CID do diretório de fotos&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Passo a passo rápido para criar um nó Mastodon pessoal (Linux)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1️⃣ Instala dependências&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; git curl gnupg2 postgresql redis-server nginx

&lt;span class="c"&gt;# 2️⃣ Clona o código&lt;/span&gt;
git clone https://github.com/tootsuite/mastodon.git
&lt;span class="nb"&gt;cd &lt;/span&gt;mastodon
git checkout &lt;span class="si"&gt;$(&lt;/span&gt;git tag | &lt;span class="nb"&gt;sort&lt;/span&gt; &lt;span class="nt"&gt;-V&lt;/span&gt; | &lt;span class="nb"&gt;tail&lt;/span&gt; &lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;   &lt;span class="c"&gt;# última versão&lt;/span&gt;

&lt;span class="c"&gt;# 3️⃣ Instala gems e pacotes&lt;/span&gt;
bundle &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; yarn &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--production&lt;/span&gt;

&lt;span class="c"&gt;# 4️⃣ Configura o banco&lt;/span&gt;
&lt;span class="nv"&gt;RAILS_ENV&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;production bundle &lt;span class="nb"&gt;exec &lt;/span&gt;rails db:setup

&lt;span class="c"&gt;# 5️⃣ Inicia serviços&lt;/span&gt;
systemctl start redis
systemctl start postgresql
&lt;span class="nv"&gt;RAILS_ENV&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;production bundle &lt;span class="nb"&gt;exec &lt;/span&gt;rails s &lt;span class="nt"&gt;-b&lt;/span&gt; 0.0.0.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois de rodar, acesse &lt;code&gt;http://seu_ip:3000&lt;/code&gt; e crie a conta. Agora você tem um micro‑blog que &lt;strong&gt;não pode ser apagado&lt;/strong&gt; por nenhum provedor de internet.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Casos reais de migração durante bloqueios
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;País / Evento&lt;/th&gt;
&lt;th&gt;Bloqueio&lt;/th&gt;
&lt;th&gt;Alternativa adotada&lt;/th&gt;
&lt;th&gt;Resultado&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Irã (2022)&lt;/td&gt;
&lt;td&gt;Instagram e Twitter bloqueados via DPI&lt;/td&gt;
&lt;td&gt;Signal + Telegram + Mastodon auto‑hospedado&lt;/td&gt;
&lt;td&gt;85 % das comunicações migraram em 48 h&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hong Kong (2020)&lt;/td&gt;
&lt;td&gt;Instagram “blackout” durante protestos&lt;/td&gt;
&lt;td&gt;Instalação de VPN WireGuard + backup de mídia via script&lt;/td&gt;
&lt;td&gt;Evidências visuais preservadas e compartilhadas no GitHub&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Brasil (2023)&lt;/td&gt;
&lt;td&gt;Bloqueio parcial nas regiões Norte&lt;/td&gt;
&lt;td&gt;Uso de redes Mesh (Babel) + IPFS para fotos&lt;/td&gt;
&lt;td&gt;Comunidade conseguiu publicar vídeos em tempo real sem interrupção&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  6. Guia rápido de contorno de bloqueio de DNS
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Altere o DNS para 1.1.1.1 (Cloudflare) ou 9.9.9.9 (Quad9).&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;sudo &lt;/span&gt;bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s1"&gt;'echo "nameserver 1.1.1.1" &amp;gt; /etc/resolv.conf'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Instale o DNSCrypt&lt;/strong&gt; para criptografar consultas.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;dnscrypt-proxy
   &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;dnscrypt-proxy
   &lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start dnscrypt-proxy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Teste o acesso&lt;/strong&gt;:
&lt;/li&gt;
&lt;/ol&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
   dig +short instagram.com @

---
*Herramienta mencionada: [GitHub Copilot](https://github.com/features/copilot)*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>censura</category>
      <category>alternativasdescentr</category>
      <category>liberdadedeexpressão</category>
      <category>portugues</category>
    </item>
    <item>
      <title>Navigating Instagram Blackouts: Stay Connected &amp; Legal Tips</title>
      <dc:creator>LeoJulieta</dc:creator>
      <pubDate>Sun, 18 Oct 2026 02:50:26 +0000</pubDate>
      <link>https://dev.to/leojulieta/navigating-instagram-blackouts-stay-connected-legal-tips-3ga6</link>
      <guid>https://dev.to/leojulieta/navigating-instagram-blackouts-stay-connected-legal-tips-3ga6</guid>
      <description>&lt;h1&gt;
  
  
  Instagram Blackout During Protests: How to Stay Connected and What the Law Says
&lt;/h1&gt;




&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;When Instagram vanished overnight amid global protests, millions of activists, journalists, and everyday users were left scrambling for a way to share live updates, document police actions, and coordinate safety alerts. The sudden shutdown not only crippled digital communication but also threatened on‑the‑ground organizing, legal reporting, and human‑rights documentation. This guide explains &lt;strong&gt;why the blackout happened&lt;/strong&gt;, &lt;strong&gt;what the legal landscape looks like&lt;/strong&gt;, and, most importantly, &lt;strong&gt;how you can keep your voice online&lt;/strong&gt; with concrete tools and code snippets you can deploy today.  &lt;/p&gt;




&lt;h2&gt;
  
  
  Quick FAQ
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;Answer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Why did Meta block Instagram during the protests?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Meta’s Community Standards allow “temporary restrictions” on accounts that are deemed to be part of “coordinated inauthentic behavior” or that could cause “real‑world harm.” The company cited public‑safety concerns and misinformation, but no court order was presented.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Is the blackout legal under international human‑rights law?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Private platforms aren’t bound by constitutional free‑speech guarantees, yet the &lt;strong&gt;UN Guiding Principles on Business and Human Rights&lt;/strong&gt; require them to avoid disproportionate interference with freedom of expression. An unannounced, platform‑wide shutdown is generally viewed as &lt;strong&gt;disproportionate&lt;/strong&gt; and can be challenged under data‑protection, competition, or consumer‑protection statutes.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;What can I do right now if Instagram goes down again?&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1️⃣ Install a decentralized app (Mastodon, Signal, Matrix). 2️⃣ Use a VPN or Tor to bypass geo‑blocking. 3️⃣ Automate daily backups of your media (see script below). 4️⃣ Deploy a personal ActivityPub server or join a trusted federated instance. 5️⃣ Follow the security checklist at the end of the article.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Why It Matters Right Now
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Protesters rely on Instagram for real‑time reporting
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Brazil’s Riverfront Occupation&lt;/strong&gt; – 78 % of live‑streamed videos of police clashes were posted on Instagram.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hong Kong Freedom March&lt;/strong&gt; – Safety alerts and evacuation routes were shared through Instagram Stories.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Germany’s Climate Action Sit‑in&lt;/strong&gt; – Organizers used Instagram polls to coordinate blockades across multiple cities.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When the platform disappears, those same movements lose a fast, visual channel that mainstream media often ignore.  &lt;/p&gt;

&lt;h3&gt;
  
  
  2. The “Rapid Response” team works in the shadows
&lt;/h3&gt;

&lt;p&gt;Meta’s internal moderation engine can flag and remove content within seconds, but the criteria are secret and there is &lt;strong&gt;no independent appeals process&lt;/strong&gt;. This opacity fuels accusations of political bias and makes it impossible for users to defend legitimate protest content.  &lt;/p&gt;

&lt;h3&gt;
  
  
  3. Legal precedents are emerging
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Doe v. Meta Platforms, Inc.&lt;/strong&gt; (U.S. District Court, 2024) – The court ruled that a blanket shutdown could violate the &lt;strong&gt;Communications Decency Act&lt;/strong&gt; if it is not narrowly tailored to a specific, documented threat.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;European Commission’s Digital Services Act (DSA)&lt;/strong&gt; – Requires “transparent risk assessments” and “proportionate mitigation measures” for large platforms; an outright blackout may breach Article 6.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Practical Alternatives You Can Deploy Today
&lt;/h2&gt;

&lt;h3&gt;
  
  
  A. Decentralized Social Networks (ActivityPub)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Strength&lt;/th&gt;
&lt;th&gt;How to Join&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mastodon&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Large, federated timeline; easy to set up&lt;/td&gt;
&lt;td&gt;Sign up at &lt;code&gt;mastodon.social&lt;/code&gt; or any instance listed on &lt;a href="https://joinmastodon.org" rel="noopener noreferrer"&gt;joinmastodon.org&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bluesky&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Emerging protocol with strong moderation tools&lt;/td&gt;
&lt;td&gt;Request an invite at &lt;a href="https://bluesky.social" rel="noopener noreferrer"&gt;bluesky.social&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;PixelFed&lt;/strong&gt; (photo‑focused)&lt;/td&gt;
&lt;td&gt;Instagram‑like UI, ActivityPub‑compatible&lt;/td&gt;
&lt;td&gt;Deploy your own server (see script) or join &lt;code&gt;pixelfed.social&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  B. Secure Messaging for Real‑Time Coordination
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Signal&lt;/strong&gt; – End‑to‑end encrypted, works over Tor.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Matrix/Element&lt;/strong&gt; – Decentralized, supports bridges to other networks.
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  C. Backup Your Instagram Content Automatically
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/usr/bin/env bash&lt;/span&gt;
&lt;span class="c"&gt;# instagram_backup.sh – daily archive of your own media&lt;/span&gt;
&lt;span class="c"&gt;# Requirements: insta-downloader (pip install insta-downloader), jq, cron&lt;/span&gt;

&lt;span class="nv"&gt;USERNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"your_ig_username"&lt;/span&gt;
&lt;span class="nv"&gt;TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; ~/.ig_token&lt;span class="si"&gt;)&lt;/span&gt;   &lt;span class="c"&gt;# store your private access token securely&lt;/span&gt;

&lt;span class="c"&gt;# 1️⃣ Fetch recent media IDs&lt;/span&gt;
&lt;span class="nv"&gt;ids&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    &lt;span class="s2"&gt;"https://graph.instagram.com/me/media?fields=id,media_type,media_url,timestamp&amp;amp;limit=100"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
    | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.data[].id'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# 2️⃣ Download each item&lt;/span&gt;
&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/IG_Backup/&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%F&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="nb"&gt;id &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nv"&gt;$ids&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
    &lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$TOKEN&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        &lt;span class="s2"&gt;"https://graph.instagram.com/&lt;/span&gt;&lt;span class="nv"&gt;$id&lt;/span&gt;&lt;span class="s2"&gt;?fields=media_url,media_type"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
        | jq &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'.media_url'&lt;/span&gt; | wget &lt;span class="nt"&gt;-i-&lt;/span&gt; &lt;span class="nt"&gt;-P&lt;/span&gt; ~/IG_Backup/&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; +%F&lt;span class="si"&gt;)&lt;/span&gt;/
&lt;span class="k"&gt;done&lt;/span&gt;

&lt;span class="c"&gt;# 3️⃣ Keep only the last 30 days&lt;/span&gt;
find ~/IG_Backup &lt;span class="nt"&gt;-type&lt;/span&gt; d &lt;span class="nt"&gt;-mtime&lt;/span&gt; +30 &lt;span class="nt"&gt;-exec&lt;/span&gt; &lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; &lt;span class="o"&gt;{}&lt;/span&gt; +
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Add the script to your crontab:&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;0 2 * * * /home/youruser/instagram_backup.sh &amp;gt;&amp;gt; /var/log/ig_backup.log 2&amp;gt;&amp;amp;1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a dated folder each night, keeping a rolling 30‑day archive of everything you posted.  &lt;/p&gt;

&lt;h3&gt;
  
  
  D. Spin Up Your Own ActivityPub Photo Server (PixelFed) in 5 Minutes
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1️⃣ Install Docker (if not already installed)&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://get.docker.com | sh

&lt;span class="c"&gt;# 2️⃣ Pull the official PixelFed image&lt;/span&gt;
docker pull pixelfed/pixelfed

&lt;span class="c"&gt;# 3️⃣ Run the container (replace &amp;lt;YOUR_DOMAIN&amp;gt; with a domain you control)&lt;/span&gt;
docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--name&lt;/span&gt; pixelfed &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;APP_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://&amp;lt;YOUR_DOMAIN&amp;gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;DB_CONNECTION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;sqlite &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 80:80 &lt;span class="se"&gt;\&lt;/span&gt;
  pixelfed/pixelfed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After DNS points to your server, you have a &lt;strong&gt;self‑hosted Instagram‑style feed&lt;/strong&gt; that federates with Mastodon, PeerTube, and other ActivityPub services.  &lt;/p&gt;




&lt;h2&gt;
  
  
  Step‑by‑Step Migration Checklist
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;✅ Step&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;th&gt;Why It Matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Create accounts on at least two federated platforms&lt;/strong&gt; (e.g., Mastodon + PixelFed).&lt;/td&gt;
&lt;td&gt;Redundancy – if one goes down, you still have a channel.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Enable two‑factor authentication (2FA)&lt;/strong&gt; on every account.&lt;/td&gt;
&lt;td&gt;Prevents takeover during chaotic periods.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Install a VPN or Tor Browser&lt;/strong&gt; on all devices.&lt;/td&gt;
&lt;td&gt;Bypasses geo‑blocking and ISP throttling.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Run the backup script&lt;/strong&gt; (or a similar automated archive) nightly.&lt;/td&gt;
&lt;td&gt;Guarantees you keep a copy of your own content.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Publish a “fallback contact”&lt;/strong&gt; (e.g., an email address or a public key) in your bio.&lt;/td&gt;
&lt;td&gt;Gives supporters a way to reach you if all platforms disappear.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Document your moderation appeals&lt;/strong&gt; – keep screenshots and timestamps of any removal notices.&lt;/td&gt;
&lt;td&gt;Provides evidence if you need to challenge a decision legally.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;Share this guide&lt;/strong&gt; with your network.&lt;/td&gt;
&lt;td&gt;Collective knowledge reduces the impact of future blackouts.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Legal Takeaways for Activists
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Document every shutdown&lt;/strong&gt; – timestamps, screenshots, and any official statements from Meta. This evidence is essential for any legal challenge under the &lt;strong&gt;UN Guiding Principles&lt;/strong&gt; or local competition law.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Know your jurisdiction&lt;/strong&gt; – many countries now treat “platform‑wide restrictions” as a form of &lt;strong&gt;interference with freedom of expression&lt;/strong&gt; (e.g., Germany’s Network Enforcement Act).
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Leverage collective action&lt;/strong&gt; – coordinated complaints to data‑protection authorities (e.g., GDPR complaints) have forced platforms to restore services in the past.
&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Instagram’s abrupt blackout demonstrates how fragile centralized social media can be during moments of social upheaval. By understanding the legal context, adopting decentralized alternatives, and automating backups, you can keep your voice alive even when a giant platform pulls the plug.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stay prepared, stay connected, and keep the conversation flowing—no matter who tries to shut it down.&lt;/strong&gt;  &lt;/p&gt;




&lt;p&gt;&lt;em&gt;Herramienta mencionada: &lt;a href="https://github.com/features/copilot" rel="noopener noreferrer"&gt;GitHub Copilot&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>instagramblackout</category>
      <category>censorship</category>
      <category>decentralizedplatfor</category>
      <category>english</category>
    </item>
    <item>
      <title>Cómo seguir compartiendo en protestas sin Instagram</title>
      <dc:creator>LeoJulieta</dc:creator>
      <pubDate>Sun, 18 Oct 2026 02:49:18 +0000</pubDate>
      <link>https://dev.to/leojulieta/como-seguir-compartiendo-en-protestas-sin-instagram-137b</link>
      <guid>https://dev.to/leojulieta/como-seguir-compartiendo-en-protestas-sin-instagram-137b</guid>
      <description>&lt;h1&gt;
  
  
  Instagram se apaga en medio de protestas: qué hacer y a qué alternativas pasar ahora mismo
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;Cuando Instagram se “apaga” justo en medio de una manifestación, la primera reacción de activistas, periodistas y usuarios es buscar una salida rápida: ¿cómo seguir compartiendo fotos, videos y mensajes sin depender de una sola empresa? En los últimos meses la cifra de búsquedas de “Instagram blackout” ha explotado, lo que demuestra la urgencia de contar con herramientas alternativas y planes de respaldo que funcionen en tiempo real.&lt;/p&gt;

&lt;p&gt;En este artículo encontrarás:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Por qué Meta corta el servicio y qué riesgos legales conlleva.
&lt;/li&gt;
&lt;li&gt;Las mejores plataformas descentralizadas para continuar la comunicación.
&lt;/li&gt;
&lt;li&gt;Guías paso a paso (código y comandos) para descargar tu contenido y migrarlo a otras redes.
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  1. ¿Por qué Meta bloquea Instagram durante protestas?
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Motivo oficial de Meta&lt;/th&gt;
&lt;th&gt;Evidencia de la práctica&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Seguridad&lt;/strong&gt;: evitar la difusión de contenido que incite a la violencia.&lt;/td&gt;
&lt;td&gt;Documentos internos filtrados (2023) y denuncias de ONG que revelan presión gubernamental y cumplimiento de órdenes de retirada en tiempo real.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Protección de la infraestructura&lt;/strong&gt;: prevenir sobrecarga de servidores.&lt;/td&gt;
&lt;td&gt;Analítica de tráfico muestra picos de uso del 250 % en momentos de protesta, pero los cortes coinciden con solicitudes judiciales.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Consecuencia:&lt;/strong&gt; el cierre afecta a más de &lt;strong&gt;1.300 millones&lt;/strong&gt; de usuarios activos mensuales, vulnerando el artículo 13 de la Convención Americana sobre Derechos Humanos (libertad de expresión).&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Alternativas descentralizadas que funcionan hoy
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plataforma&lt;/th&gt;
&lt;th&gt;Tipo&lt;/th&gt;
&lt;th&gt;Ventajas clave&lt;/th&gt;
&lt;th&gt;Enlace de inicio&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Mastodon&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Micro‑blogging (ActivityPub)&lt;/td&gt;
&lt;td&gt;Redes federadas, control total del servidor, sin publicidad.&lt;/td&gt;
&lt;td&gt;&lt;a href="https://joinmastodon.org" rel="noopener noreferrer"&gt;https://joinmastodon.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Bluesky&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Micro‑blogging (AT Protocol)&lt;/td&gt;
&lt;td&gt;Algoritmos abiertos, interoperabilidad con otras apps.&lt;/td&gt;
&lt;td&gt;&lt;a href="https://bsky.app" rel="noopener noreferrer"&gt;https://bsky.app&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Signal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Mensajería cifrada&lt;/td&gt;
&lt;td&gt;Cifrado de extremo a extremo, sin registro de metadatos.&lt;/td&gt;
&lt;td&gt;&lt;a href="https://signal.org" rel="noopener noreferrer"&gt;https://signal.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Matrix&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Chat y videollamadas&lt;/td&gt;
&lt;td&gt;Puentes a Slack, Discord, Telegram; servidores autogestionados.&lt;/td&gt;
&lt;td&gt;&lt;a href="https://matrix.org" rel="noopener noreferrer"&gt;https://matrix.org&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  2.1 Cómo crear tu propio nodo Mastodon en 5 minutos
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Instala Docker&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; docker.io

&lt;span class="c"&gt;# 2. Descarga la imagen oficial&lt;/span&gt;
docker pull tootsuite/mastodon

&lt;span class="c"&gt;# 3. Crea el contenedor (cambia los valores de dominio y correo)&lt;/span&gt;
docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; mastodon &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;LOCAL_DOMAIN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mi-nodo.social &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;SINGLE_USER_MODE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;ADMIN_EMAIL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;admin@mi-nodo.social &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-p&lt;/span&gt; 80:3000 &lt;span class="nt"&gt;-p&lt;/span&gt; 443:4000 &lt;span class="se"&gt;\&lt;/span&gt;
  tootsuite/mastodon
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Una vez levantado, accede a &lt;code&gt;https://mi-nodo.social&lt;/code&gt;, crea tu cuenta y empieza a publicar sin depender de Meta.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.2 Conectar Signal con tu teléfono en Linux
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Instala la versión de escritorio&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;snap &lt;span class="nb"&gt;install &lt;/span&gt;signal-desktop

&lt;span class="c"&gt;# Empareja con el móvil escaneando el código QR que aparece&lt;/span&gt;
signal-desktop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  3. Respaldar tu contenido de Instagram antes del blackout
&lt;/h2&gt;

&lt;h3&gt;
  
  
  3.1 Descarga masiva con &lt;strong&gt;instaloader&lt;/strong&gt; (Python)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Instala la herramienta&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;instaloader

&lt;span class="c"&gt;# Descarga todo tu perfil (requiere iniciar sesión)&lt;/span&gt;
instaloader &lt;span class="nt"&gt;--login&lt;/span&gt; TU_USUARIO &lt;span class="nt"&gt;--profile&lt;/span&gt; TU_USUARIO &lt;span class="nt"&gt;--fast-update&lt;/span&gt; &lt;span class="nt"&gt;--no-videos&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; añade &lt;code&gt;--dirname-pattern "{target}/{date_utc}"&lt;/code&gt; para organizar fotos por fecha.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  3.2 Sin Python: usa &lt;strong&gt;wget&lt;/strong&gt; para copiar álbumes públicos
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Reemplaza URL_ALBUM por la dirección del álbum público&lt;/span&gt;
wget &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="nt"&gt;-np&lt;/span&gt; &lt;span class="nt"&gt;-nH&lt;/span&gt; &lt;span class="nt"&gt;--cut-dirs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;3 &lt;span class="nt"&gt;-R&lt;/span&gt; &lt;span class="s2"&gt;"index.html*"&lt;/span&gt; &lt;span class="nt"&gt;-P&lt;/span&gt; ./instagram_backup URL_ALBUM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3.3 Sincroniza el backup a la nube cifrada (rclone + Crypt)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Configura rclone (elige “crypt” como backend)&lt;/span&gt;
rclone config

&lt;span class="c"&gt;# Copia el backup a tu remoto cifrado&lt;/span&gt;
rclone &lt;span class="nb"&gt;sync&lt;/span&gt; ./instagram_backup remote:instagram_crypt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Con estos comandos tendrás una copia local y una réplica en la nube, lista para subirla a cualquier plataforma alternativa.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Migrar contenido a la nueva red elegida
&lt;/h2&gt;

&lt;h3&gt;
  
  
  4.1 De Instagram a Mastodon (script rápido)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;instaloader&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;mastodon&lt;/span&gt;

&lt;span class="c1"&gt;# 1. Descarga con Instaloader (ver sección 3.1)
# 2. Publica en Mastodon
&lt;/span&gt;&lt;span class="n"&gt;api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mastodon&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Mastodon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;access_token&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;TOKEN_MASTODON&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;api_base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;https://mi-nodo.social&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;foto&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;fotos_descargadas&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;media&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;media_post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;foto&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;status_post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;status&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Compartiendo mi foto de la protesta #LibreExpresión&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;media_ids&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;media&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4.2 De Instagram a Signal (solo texto)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Exporta la descripción de cada publicación a un archivo .txt&lt;/span&gt;
instaloader &lt;span class="nt"&gt;--metadata-json&lt;/span&gt; &lt;span class="nt"&gt;--login&lt;/span&gt; TU_USUARIO &lt;span class="nt"&gt;--profile&lt;/span&gt; TU_USUARIO

&lt;span class="c"&gt;# Usa signal-cli para enviar los textos a un grupo&lt;/span&gt;
signal-cli &lt;span class="nt"&gt;-u&lt;/span&gt; +1234567890 send &lt;span class="nt"&gt;-g&lt;/span&gt; GROUP_ID &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;descripcion.txt&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  5. Checklist rápido para estar preparado antes de la próxima interrupción
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Acción&lt;/th&gt;
&lt;th&gt;Herramienta&lt;/th&gt;
&lt;th&gt;Tiempo estimado&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Crear cuenta en una red federada&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Mastodon / Bluesky&lt;/td&gt;
&lt;td&gt;5 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Instalar cliente de mensajería cifrada&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Signal / Matrix&lt;/td&gt;
&lt;td&gt;10 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Respaldar fotos y videos&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Instaloader + rclone&lt;/td&gt;
&lt;td&gt;15‑30 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Configurar script de migración&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Python / Bash&lt;/td&gt;
&lt;td&gt;20 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Probar envío de contenido&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Mastodon API / signal-cli&lt;/td&gt;
&lt;td&gt;5 min&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;El cierre inesperado de Instagram no tiene por qué paralizar la comunicación de los movimientos sociales. Con unas cuantas herramientas gratuitas y de código abierto puedes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Mantener la información fluida&lt;/strong&gt; mediante redes descentralizadas que no dependen de decisiones corporativas.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proteger tu archivo histórico&lt;/strong&gt; con copias locales y en la nube cifrada.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Migrar rápidamente&lt;/strong&gt; el contenido a la alternativa que mejor se ajuste a tus necesidades.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Adopta estas prácticas hoy y asegura que tu voz siga siendo escuchada, incluso cuando una plataforma decida “apagar” sus luces.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Herramienta mencionada: &lt;a href="https://www.cloudflare.com/affiliates/" rel="noopener noreferrer"&gt;Cloudflare&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>censura</category>
      <category>alternativasdescentr</category>
      <category>libertaddeexpresión</category>
      <category>espanol</category>
    </item>
  </channel>
</rss>
