text: user191: Let's say I want to construct a phylogenetic tree based on orthologous nucleotide sequences; I do not want to use protein sequences to have a better resolution. These species have different GC-content.
  If we use a straightforward approach like maximum likelihood with JC69 or any other classical nucleotide model, conserved protein coding sequences of distant species with similar GC-content will artificially cluster together. This will happen because GC-content will mainly affect wobbling codon positions, and they will look similar on the nucleotide level.
  What are possible ways to overcome this? I considered the following options so far:
  
  Using protein sequence. This is possible of course, but we lose a lot of information on the short distance. Not applicable to non-coding sequences. 
  Recoding. In this approach C and T can be combined into a single pyrimidine state Y (G and A could be also combined in some implementations). This sounds interesting, but, first, we also lose some information here. Mathematical properties of the resulting process are not clear. As a result, this approach is not widely used.
  Excluding third codon position from the analysis. Losing some short-distance information again. Also, not all synonymous substitution are specific to the third codon positions, so we still expect to have some bias. Not applicable to non-coding sequence.
  
  It should be possible in theory to have a model which allows shifts in GC-content. This will be a non time-reversible Markov process. As far as I understand there are some computational difficulties estimating likelihood for such models.
  
  user3848: The answer is the logDet algorithm was constructed to overcome GC% clustering. 
  At the time it was devised only a distance method was available/implemented, so it wasn't very powerful. The posts here imply that a Bayesian or ML approach are available and these do tightly stick to the model.
  Original publication here
  
  user292: The following 2004 paper describes a way to model compositional changes across the tree, in a Bayesian framework: https://doi.org/10.1080/10635150490445779
  A python package implementing this ("p4"), and improvements added along the years, is available here: https://github.com/pgfoster/p4-phylogenetics
  To get started, you may find useful examples here: http://p4.nhm.ac.uk/scripts.html
  This has been used in a few large-scale phylogenetic analyses.
  
  user45: There are models that take into account compositional heterogeneity both under the maximum likelihood and Bayesian frameworks. Although the substitution process is not time-reversible, the computations are simplified by assuming that the instantaneous rate matrix can be decomposed into an "equilibrium frequency vector" (non-homogeneous) and a symmetric, constant exchange rate matrix.
  I guess all your suggestions are also valid, and I remember recoding being used successfully to reduce the GC-content bias (examples in the references above and here).  
  
original_text: 191: <p>Let's say I want to construct a phylogenetic tree based on orthologous nucleotide sequences; I do not want to use protein sequences to have a better resolution. These species have different GC-content.</p>
  
  <p>If we use a straightforward approach like maximum likelihood with JC69 or any other classical nucleotide model, conserved protein coding sequences of distant species with similar GC-content will artificially cluster together. This will happen because GC-content will mainly affect wobbling codon positions, and they will look similar on the nucleotide level.</p>
  
  <p>What are possible ways to overcome this? I considered the following options so far:</p>
  
  <ol>
  <li><p>Using protein sequence. This is possible of course, but we lose a lot of information on the short distance. Not applicable to non-coding sequences. </p></li>
  <li><p><a href="https://doi.org/10.1186/1471-2105-15-S2-S8" rel="noreferrer">Recoding</a>. In this approach C and T can be combined into a single pyrimidine state Y (G and A could be also combined in some implementations). This sounds interesting, but, first, we also lose some information here. Mathematical properties of the resulting process are not clear. As a result, this approach is not widely used.</p></li>
  <li><p>Excluding third codon position from the analysis. Losing some short-distance information again. Also, not all synonymous substitution are specific to the third codon positions, so we still expect to have some bias. Not applicable to non-coding sequence.</p></li>
  </ol>
  
  <p>It should be possible in theory to have a model which allows shifts in GC-content. This will be a non time-reversible Markov process. As far as I understand there are some computational difficulties estimating likelihood for such models.</p>
   3848: <p>The answer is the logDet algorithm was constructed to overcome GC% clustering. </p>
  
  <p>At the time it was devised only a distance method was available/implemented, so it wasn't very powerful. The posts here imply that a Bayesian or ML approach are available and these do tightly stick to the model.</p>
  
  <p>Original publication <a href="https://academic.oup.com/mbe/article/13/10/1375/1020361" rel="nofollow noreferrer">here</a></p>
   292: <p>The following 2004 paper describes a way to model compositional changes across the tree, in a Bayesian framework: <a href="https://doi.org/10.1080/10635150490445779" rel="nofollow noreferrer">https://doi.org/10.1080/10635150490445779</a></p>
  
  <p>A python package implementing this ("p4"), and improvements added along the years, is available here: <a href="https://github.com/pgfoster/p4-phylogenetics" rel="nofollow noreferrer">https://github.com/pgfoster/p4-phylogenetics</a></p>
  
  <p>To get started, you may find useful examples here: <a href="http://p4.nhm.ac.uk/scripts.html" rel="nofollow noreferrer">http://p4.nhm.ac.uk/scripts.html</a></p>
  
  <p>This has been used in a few large-scale phylogenetic analyses.</p>
   45: <p>There are models that take into account compositional heterogeneity both under the <a href="https://doi.org/10.1080/10635150600975218" rel="nofollow noreferrer">maximum likelihood</a> and <a href="https://doi.org/10.1093/molbev/msl091" rel="nofollow noreferrer">Bayesian</a> frameworks. Although the substitution process is not time-reversible, the computations are <a href="https://doi.org/10.1080/10635150490445779" rel="nofollow noreferrer">simplified by assuming</a> that the instantaneous rate matrix can be decomposed into an "equilibrium frequency vector" (non-homogeneous) and a symmetric, constant exchange rate matrix.</p>
  
  <p>I guess all your suggestions are also valid, and I remember recoding being used successfully to reduce the GC-content bias (examples in the references above and <a href="https://doi.org/10.1093/molbev/msh137" rel="nofollow noreferrer">here</a>).  </p>
  