Flash e SEO (Search Engine Optimization)

2 views
Skip to first unread message

João Saleiro

unread,
May 10, 2007, 3:14:51 PM5/10/07
to ri...@googlegroups.com
Olá,

um cliente consultou-me na necessidade de construir um site/aplicação
web para o seu rent-a-car. Mais do que um site, pretendia que o mesmo
tivesse variadíssimas funcionalidades de uma verdadeira aplicação (uma
das intenções é usar várias ferramentas do site para gerir o negócio),
mas com um interface gráfico apelativo e extremamente interactivo.
Obviamente, veio-me logo à cabeça sugerir Flash/Flex para resolver o
problema, mas depois comecei a pensar... Para este tipo de clientes
interessaria que o Google indexasse o conteúdo do site de forma a
pessoas que utilizem o Google para procurar um determinado carro o
possam encontrar no site do cliente....

E abateu-se sobre mim uma desilusão imensa! Flash e SEO não são
amigos... Como resolver o problema?

Por um lado, usar a plataforma Flash seria o ideal porque:

- Como todos sabemos, é decididamente superior ao típico HTML/DHTML no
que toca a interactividade e impacto visual
- Em termos de construção de RIAs, o Flex é sem dúvida a decisão mais
acertada e sensata
- Para mim, que já percorri os dois mundos (o do HTML e do Flash), é
definitivamente muito mais fácil, rápido e "maintainable" resolver o
problema com o Flash (até porque tenho imensas ferramentas previamente
construídas que optimizam o processo de desenvolvimento)

Porém:

- Neste caso pretende-se que o site tenha um bom PageRank e que seja
completamente indexado pelo Google de forma a optimizar o negócio.

Imagino que sugiram que se divida o site em duas partes: backoffice
feito em Flex, e front-end em HTML. Porém, interessa que o front-end
seja interactivo e apelativo, e não se pretende que haja distinção entre
front-end e backoffice (os clientes devem utilizar as ferramentas a
partir do site sem necessitarem de aceder a um "sistema diferente"),
pelo que HTML seria de evitar.
Outra sugestão que também poderão fazer, é que se faça duas versões do
site: uma em HTML e outra em Flash. Mas obviamente, num país em que se
paga pouco e se quer as coisas feitas para "ontem", essa sugestão terá
que ficar de parte...

Deixo este assunto aberto a discussão, porque acho que é uma questão
muito pertinente e que já deveria estar resolvida à muito tempo...
Sugestões para se resolver a guerra entre Flash e SEO?

Cumps,

João Saleiro

Ricardo Pereira

unread,
May 10, 2007, 4:13:10 PM5/10/07
to Mailing List da Comunidade Portuguesa de Desenvolvimento de RIAs
Na empresa onde trabalho os sites em flash/flex são sugeridos ao
cliente apenas quando este quer um site visualmente rico e que
proporcione uma experência apelativa.

Conjuntamente é-lhe proposta uma solução adWords para que o site
apareça no google. :P

Mas em relação ao problema Flash.

Uso o swfAddress de forma que posso navegar pelo site como se fosse
feito em html/php.

Posso usar as variaveis para fazer uma consulta de dados para uma
frame escondida que os bots possam ver mas o utilizador não. Isto
resulta não duplicação de pedidos ao servidor.

Dentro do flash posso obter os dados e enviá-los pelo
externalInterface para uma função javascript para escrever na frame
escondida.

São apenas ideias porque nunca tentei implementar nenhuma delas.

De qualquer forma existe uma technote sobre o assunto da Adobe

http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_16603

acho-a bastante inútil

Deixo aqui as minhas ideias porque acho que é uma discussão bastante
pertinente...

Jorge Laranjo

unread,
May 10, 2007, 4:33:36 PM5/10/07
to ri...@googlegroups.com
Não compreendo essa necessidade de juntar tudo numa só ferramenta.
Porque não um “backoffice” para o cliente e um “frontoffice” para os clientes deles?
Eu, pessoalmente, só me dedico ao XHTML (via PHP e mais) mas faz todo o sentido, para mim.
Porquê? Porque o meu cliente acede ao “backoffice” e este tem ferramentas de gestão e tudo o mais e os clientes dele acedem ao “frontoffice”
E por vezes tenho ferramentas que apenas estão disponíveis no “backoffice” e que nunca serão públicas. É o lado escondido da Internet.

Mas a verdade é que as coisas funcionam :)
É mais complicado ter estratégias de SEO com Flash/Flex mas é possível. E não basta ter AdWords como foi dito pois a “landing page” e o “landing site” contam para o valor a pagar por clique — quanto mais optimizado para motores de busca, mais informação é indexada e possivelmente o site será considerado mais relevante, baixando o preço a pagar por clique.

Se usares o swfaddress — http://www.asual.com/swfaddress/ — e o Google Sitemaps — www.google.com/webmasters/sitemaps/ — podes ter melhores resultados.

Espero ter ajudado. :)



Em 2007/05/10, às 20:14, João Saleiro escreveu:

Imagino que sugiram que se divida o site em duas partes: backoffice 

feito em Flex, e front-end em HTML. Porém, interessa que o front-end 

seja interactivo e apelativo, e não se pretende que haja distinção entre 

front-end e backoffice (os clientes devem utilizar as ferramentas a 

partir do site sem necessitarem de aceder a um "sistema diferente"), 

pelo que HTML seria de evitar.


--
Atentamente,
Jorge Laranjo



Christoph Dressel

unread,
May 10, 2007, 4:34:46 PM5/10/07
to ri...@googlegroups.com, Filipe Cruz
We do for some time SEO for our flash sites with some
good success.
One example is this: www.a2z-adventures.com
you can put any text from the website in Google like:
"At A2Z Adventures we love what we do"
and you end up directly at the "about us" page.

Its basically done as ricardo sad. Javascript back button
Implementation + a shadowsite which directs the bots
to the database contents and outputs the deep link into the site.

Our coder (Filipe) can give you exact description of the code he uses
if somebody should be interested.

....
By the way, using an public Html front end and flash/ for the back
office is already ridiculous. No offense please, but if you think about
how many people will ever see the back office compared to the website.
In which part will you spend more time/work?

João Fernandes

unread,
May 10, 2007, 4:43:46 PM5/10/07
to ri...@googlegroups.com
João,

é algo que é muitas vezes debatido, e existe documentação sobre como
resolver o assunto( e já devia de ter guardado o maldito link vezes sem
conta) mas diz-me, como resolves o mesmo problema quando usas aplicações
em AJAX?

É algo que afecta não só aplicações em Flex/Flash mas a aplicações com
carregamentos dinamicos onde não existe uma "página" para catalogar, por
assim dizer.

Tenho que ver se arranjo o maldito link, mas podes sempre procurar no
weblogs.

Quanto ao projecto em si, já sabemos como o nosso querido pais funciona,
os clientes querem sempre milagres.

update:

procurei na net e encontrei alguns links não sei se ajudam

http://www.oppenheim.com.au/2007/04/22/seo-friendly-flash-programming/
http://blog.deconcept.com/2006/03/13/modern-approach-flash-seo/

não sei se é de grande ajuda sinceramente.

João Fernandes

Jorge Laranjo

unread,
May 10, 2007, 5:50:06 PM5/10/07
to ri...@googlegroups.com
It can be, but if the USER uses it all day long... and it pay for it!

Em 2007/05/10, às 21:34, Christoph Dressel escreveu:

By the way, using an public Html front end and flash/ for the back 

office is already ridiculous. No offense please, but if you think about

how many people will ever see the back office compared to the website.

In which part will you spend more time/work? 


Jorge Laranjo

unread,
May 10, 2007, 5:52:21 PM5/10/07
to ri...@googlegroups.com
A culpa não é dos clientes. É de meia dúzia de “amadores” que praticam preços que são insustentáveis e que vivem alimentados por “templates”
Basta um cliente encontrar um destes “amadores” e pronto... Se bem que eu sei de uns “amadores empresas” que praticam preços exageradamente altos e também se alimentam de templates (e ainda por cima das más, daquelas que não são amigas do Google).

--~--~---------~--~----~------------~-------~--~----~
Recebeu esta mensagem porque se subscreveu no Grupo "Mailing List da Comunidade Portuguesa de Desenvolvimento de RIAs" do Google Groups.
 Para postar neste grupo, envie email para ri...@googlegroups.com
 Para cancelar a sua inscrição deste grupo envie um email para riapt-un...@googlegroups.com
 Para mais opções, visite este grupo em http://groups.google.com/group/riapt?hl=pt-PT
-~----------~----~----~----~------~----~------~--~---

João Saleiro

unread,
May 10, 2007, 7:39:11 PM5/10/07
to ri...@googlegroups.com
Ver abaixo...

Jorge Laranjo wrote:
> Não compreendo essa necessidade de juntar tudo numa só ferramenta.
> Porque não um “backoffice” para o cliente e um “frontoffice” para os
> clientes deles?

Essa era a reacção que eu esperava à partida...

Acima de tudo, porque cada vez mais existe menos distinção do que é
backoffice de frontoffice. Os clientes acedem ao frontoffice, e querem
ter acesso aos seus serviços enquanto clientes. Esses serviços são
funcionalidades de negócio do sistema, e por vezes podem mesmo ser
dezenas de diferentes de serviços de acordo com o negócio e com as
permissões e perfil do cliente. Considerando que é do interesse da
empresa fornecer um bom "user experience" nos seus sistemas de CRM
justifica-se a vontade de se usar a Flash Platform - se bem usada, claro
- para atingir esses objectivos. É no fundo, a definição de Rich
Internet Application, e a necessidade da sua existência. :)

De qualquer forma, o meu objectivo com esta discussão não é
conformar-mo-nos com as soluções existentes, mas sim discutirmos o
assunto de forma a procurar soluções que funcionem. ;)

João Saleiro

João Saleiro

unread,
May 10, 2007, 7:53:51 PM5/10/07
to ri...@googlegroups.com
Hi Christoph,

Christoph Dressel wrote:
> One example is this: www.a2z-adventures.com
> you can put any text from the website in Google like:
> "At A2Z Adventures we love what we do"
> and you end up directly at the "about us" page.
>

Does it work with dynamic content?

> Our coder (Filipe) can give you exact description of the code he uses
> if somebody should be interested.
>

I am *very* interested. :)

> By the way, using an public Html front end and flash/ for the back
> office is already ridiculous. No offense please, but if you think about
> how many people will ever see the back office compared to the website.
> In which part will you spend more time/work?
>

Maybe it's not that ridiculous. :) If you are already confortable with
Flex 2, building the backoffice on it is easier and faster than using
HTML. I used HTML for five or six years for building backoffices and Web
Applications but now with Flex 2 i doubt I'll get back to HTML for that
purposes. :)
Anyway, the systems I'm currently developing doesn't differentiate the
backoffice from the frontend. On the frontend the user (client or
employee) makes a login, and depending on the permissions, he is given
access to the proper features, without leaving the comfort of the
improved interface. There is, of course, a cost in time and money but
normally it's worth it.

I repeat, i am *very* interested in knowing your solution. My intention
is to improve existing SEO solutions and try to see if it's possible to
create more automatic processes that doesn't imply much effort from the
development team on adding SEO to web portals done in Flash.

Thanks Chris,

João Saleiro

João Saleiro

unread,
May 10, 2007, 8:03:40 PM5/10/07
to ri...@googlegroups.com

João Fernandes wrote:
> mas diz-me, como resolves o mesmo problema quando usas aplicações
> em AJAX?
>

Diz-me tu... :)

> Quanto ao projecto em si, já sabemos como o nosso querido pais funciona,
> os clientes querem sempre milagres.
>

Já tenho trabalho que chegue até ao final do ano e o projecto que
apresentei aqui não é para ir em frente, mas sim para servir como caso
de estudo para esta discussão. O objectivo é tentar arranjar de vez
soluções efectivas para este problema.

João Saleiro

João Saleiro

unread,
May 10, 2007, 9:37:48 PM5/10/07
to ri...@googlegroups.com
Depois de imensa pesquisa na net, as conclusões que tiro para começarmos
a pensar numa solução ideal, teoricamente são as seguinte:

(1) Para o "site" em Flash seria necessário definir precisamente quais
as secções a que se pode fazer bookmarking e cujo conteúdo pode ser
indexado;

(2) Para cada uma das secções definidas é necessário um URL explícito
com um conjunto de variaveis de entrada que permitem ao site em Flash
"saltar" para a secção requisitando ao servidor o conteudo dinâmico e/ou
mudar o seu estado (por exemplo noticias.php?sec=verNoticia&id_noticia=3);

(3) Usar o swfAddress, urlkit ou outra (recomendações?) para mudar esses
endereços no address do browser à medida que o utilizador navega no site
Flash

Neste momento, teoricamente o nosso site em Flash já "permite" back e
forward button, e bookmarking, mas as bookmarks são inuteis (i.e. o
endereço para onde apontam não existe).
Falta portanto, criar as páginas "duplicadas" para cada endereço
possível (i.e. www.meusite.pt/noticias.php):

(4) Para cada endereço acima, é necessário criar o respectivo ficheiro
PHP (ou noutra linguagem) que deverá percorrer as variáveis colocadas no
url e colocá-las como FlashVars. Isto pode ser feito de forma automática
(i.e. um ciclo que percorre as HTTP_GET_VARS e coloca-as como Flash Vars
dentro do código do SWFObject que faz embed ao ficheiro SWF).

Neste ponto, já temos bookmarking a funcionar a 100%, mas ainda não
temos SEO.

Pelo que, para SEO:

(5) Para cada página, vamos ler as variaveis de entrada que definem o
"estado" dessa secção. Como estamos a falar de sites dinâmicos, esse
estado possui portanto a informação necessária para carregar através de
serviços (em Flash Remoting, XML, Web Services, etc) o conteúdo dinâmico
que é exibido na secção Flash . Pelo que bastaria colocar o nome da
secção em teste (if ou case) e para cada nome de secção chamar as
funções PHP que correspondem aos respectivos serviços para retirar o
conteudo da base de dados devidamente formatado. Por exemplo (código
exemplificativo):

$seccao=$GET_VARS["seccao"];
switch ($seccao)
{
case "noticias": print_r($this->getNoticia($GET_VARS["id_noticia"])
//faltam validações, claro
}


(6) De uma forma simplória, se esse conteúdo é devolvido para o Flash
numa estrutura hierarquica e lógica (i.e. XML ou Objectos), um simples
print_r (ou algo semelhante) desses objectos bastaria para gerar no HTML
informação suficiente para o Google, como vimos acima.

(7) Falta, portanto, fazer com que essa informação não fique visível
para o utilizador final sem que o Google se "chateie" (o Google detecta
coisas como divs escondidas ou mesmo simplesmente texto com a mesma cor
do background!), e que fique sim, visível o conteúdo Flash. A técnica a
escolher deverá ser Google friendly e não se pode correr o risco de ser
algo que possa vir mais tarde a ser rejeitado pelo Google. Seria mesmo
drástico isto acontecer, por isso é preciso escolher bem a técnica.
Sugestões?

Neste momento temos um género de uma cópia fantasma simplória do nosso
site Flash. Ainda há um problema, que direi mais a frente. Mas seja como
for, seria bom ter este processo de criação das páginas a serem
indexadas de uma forma mais automática. Talvez por exemplo:

(8) Criar um ficheiro XML com uma estrutura do género:
<siteStructure>
<section name="noticias">
<service name="getListaDeNoticias">
<arg name="id_categoria"/>
<arg name="inicio"/>
<arg name="quantidade"/>
</service>
<service name="getEventoDaSemana/>
</section>
<section name="utilizadores">
<subsection name="verUtilizador">
<service name="getUtilizador">
<arg name="id"/>
</service>
</subsection>
</section>
</siteStructure>

que deverá variar para cada site, e uma aplicação em PHP que deverá
automatizar o processo de geração de conteúdo dinâmico. Ou seja,
considerando o xml acima, se for aberto o url
http://www.omeusite.pt/index.php?section=utilizadores&subsection="verUtilizador"&id=3
o PHP de acordo com o nome na section (e da subsection se for indicada
no url) chamará as funcões indicadas pelo "name" do "service"
passando-lhes como parâmetros os valores que existirem no url para cada
"name" do "arg". O resultado dessas funções deverá ser colocado no HTML
resultante através de um género de print_r.

Aqui a única questão que vejo é que segundo o standart do XML a ordem
dos argumentos e innerchilds não deve ser mandatória (i.e. apesar dos
args estarem seguidos, essa ordem em xml nunca deve ser tomada em
conta), mas as funções implicam que os argumentos lhes sejam passados
numa determinada ordem. Porém, no caso da interpretação do XML usando
PHP isto não representa qualquer problema, em princípio.

Em resumo: A intenção seria criar um script génerico em PHP (para ser
aplicado em todos os sites sem alterações). E para cada site, era então
criado um ficheiro XML que define a estrutura das secções e serviços
chamados em cada uma delas com respectivos argumentos. O script genérico
o que faria, seria comparar as variáveis passadas por GET com o XML,
chamando os serviços (métodos) respectivos com devidos argumentos, e
imprimindo o resultado no ecran.


Portanto, parece que de uma forma muito simplista (que ainda não prevê
todos os casos, e deverá ser trabalhada) podemos tentar automatizar o
processo de possibilitar SEO em sites Flash de uma forma rápida e
straightforward.

O Problema....

Anteriormente referi que existia um problema. E é aqui que a porca torce
o rabo... O Google só consegue indexar as páginas onde consegue "chegar".
Ou seja, a internet consiste num conjunto de hiperligações e o Google
vai seguindo as ligações entre páginas para as "encontrar" e indexar. Se
uma página não tiver qualquer hiperligação a apontar para si, a não ser
que esta tenha sido adicionada manualmente ao Google, este nem sabe da
existência dessa página. E neste momento o que nós temos é um conjunto
de páginas geradas dinamicamente sem ligações entre elas. Ou seja, o
Google chega a www.omeusite.pt/index.php, indexa qualquer conteúdo aí
gerado, mas o conteúdo gerado noutras "secções virtuais" só será
indexado se houverem hyperlinks para elas (i.e. o conteúdo gerado pelo
index.php terá que possuir algures <a
href="http://www.omeusite.pt/index.php?seccao=utilizadores&id=3"> que já
permitirá ao Google indexar o conteúdo desta nova secção). Não percebo
muito de SEO, mas o robots.txt não iria ajudar muito (digo eu....) em
projectos com imenso conteúdo dinâmico. Portanto temos aqui um problema:
como ligar todas as secções virtuais entre elas.
A esta hora a cabeça começa a perder lucidez, e talvez até haja uma
solução aparente, mas não a estou a ver... Pelo que sugiro que se comece
por definir qual a solução "manual" indicada para um caso específico
(i.e. esquecer a sugestão acima de usar um script automático, e ainda
tomar como referência um site já existente - sugiro o www.onfashion.pt
:o) ), e depois disso talvez consigamos automatizar esse processo.

Outra situação que também pode dar que pensar (embora julgo que seja
mais facil chegar a uma solução) é que por vezes para determinado
conteúdo dinâmico existe associado um texto estático. Por exemplo, tendo
num site Flash o texto "O empregado do mês é: José Miguel Faria", onde
só José Miguel Faria é conteúdo dinâmico retirado da base de dados. Só
esse seria indexado pelo google com o processo automático definido
acima, mas nunca seria indexado o texto estático "O empregado do mês
é:". Isto resolver-se-ia com a possibilidade de adicionar ao xml algo
como <arg name="id_utilizador" staticText="O empregado do mês é"/>, e o
script PHP sempre que encontra um arg com staticText faz um concat deste
com o conteudo dinamico. O que me dá que pensar se o trabalho de definir
o ficheiro XML não se começaria a tornar tão ou mais maçador que
recorrer a um género de templating....

Bem, isto é apenas um conjunto de ideias minhas que podem nem ter lógica
nenhuma (e se calhar até já há uma solução, e eu estou para aqui a
inventar....) mas acho que merecem ser discutidas até arranjarmos uma
solução. Este é um problema que nos prejudica a todos pelo que se ainda
não existir nenhuma solução ideal seria muito interessante que não
largássemos este tópico até termos uma solução definida com respectivo
exemplo prático.

Sugiro que os comentários às minhas sugestões sejam feitos ponto a
ponto, para facilitar a interpretação. :)

João Saleiro

Jorge Laranjo

unread,
May 10, 2007, 9:44:37 PM5/10/07
to ri...@googlegroups.com
Google Sitemaps...

Em 2007/05/11, às 02:37, João Saleiro escreveu:

Ou seja, o 

Google chega a www.omeusite.pt/index.php, indexa qualquer conteúdo aí 

gerado, mas o conteúdo gerado noutras "secções virtuais" só será 

indexado se houverem hyperlinks para elas (i.e. o conteúdo gerado pelo 

index.php terá que possuir algures <a 

href="http://www.omeusite.pt/index.php?seccao=utilizadores&id=3"> que já 

permitirá ao Google indexar o conteúdo desta nova secção).


Christoph Dressel

unread,
May 11, 2007, 5:08:38 PM5/11/07
to ri...@googlegroups.com, Filipe Cruz

Hi Joao,

It all works dynamic with a PHP/mySQL - CMS behind.

Filipe will prepare a document on Monday and will send it to you
directly. It will take him an hour or 2, but its anyhow good to
have a proper documentation in the company.

If anybody else is interested - please leave me a note.

We searched and tried a lot with SEO. I am finally happy with
the solution we have. First time that there is no more
real disadvantage in a flash website. The plugin issue remains
of course.

You are always welcome to have a look in our office. Maybe some
parts about that SEO will be easier if you can have a look at it
together with Filipe.
The whole setup is not very difficult, is more difficult to explain
I guess.

Have a good weekend

Chris

-----Original Message-----
From: ri...@googlegroups.com [mailto:ri...@googlegroups.com] On Behalf Of
João Saleiro
Sent: 11 May 2007 00:54
To: ri...@googlegroups.com
Subject: Re: Flash e SEO (Search Engine Optimization)

Jorge Laranjo

unread,
May 11, 2007, 5:39:40 PM5/11/07
to ri...@googlegroups.com
Can you ask Filipe to e-mail it for me, too? Many thanks.

Em 2007/05/11, às 22:08, Christoph Dressel escreveu:

If anybody else is interested - please leave me a note.


João Saleiro

unread,
May 11, 2007, 7:20:09 PM5/11/07
to ri...@googlegroups.com
Christoph,

i am very interested on seeing the documentation, and maybe if your
techniques needs some improvements i can try to help. If you don't mind,
I would be very happy to go someday to your office, but i'm only
available after the 22th of May (chaotic life)... :| Till then i can
take a look at the documentation. :)

Thanks again Chris,

João Saleiro

João Saleiro

unread,
May 31, 2007, 7:37:30 AM5/31/07
to ri...@googlegroups.com
Chris,

any news on this subject? :)


João Saleiro


Christoph Dressel wrote:
Reply all
Reply to author
Forward
0 new messages